欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      C語言高級程序設計講座1(轉)

      時間:2019-05-12 23:12:00下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《C語言高級程序設計講座1(轉)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《C語言高級程序設計講座1(轉)》。

      第一篇:C語言高級程序設計講座1(轉)

      C語言高級程序設計講座1 C語言程序設計

      2009-07-27 08:44

      閱讀153

      評論0

      字號: 大大

      中中

      小小

      第一講

      C語言圖形方式下的編程 前言

      一年前我剛剛接觸網(wǎng)站制作,正值我學C語言,便做了一個鵬程C語言教學網(wǎng)站,雖說取了這么一個大名,但是其實當時我也不會什么。

      一年轉眼就過去了,對于C語言我倒沒什么深入的研究,但是我的網(wǎng)站卻是一而再的改版,算來現(xiàn)在已經(jīng)第六版了。

      時代的飛速發(fā)展提醒我們,停滯不前就是退步!所以我們還要前進,目前我在學習ASP.net,下一個目標就是把鵬程C語言教學網(wǎng)站用ASP.net建成真正的學習樂園,走進千萬C語言愛好者的心中!

      本次講座參考了一些教材以及網(wǎng)上的一些資料,如有侵權,請立即給我發(fā)信通知我:pch1982cn@yahoo.com.cn 因種類繁多,在此不能一一列出,請見諒!

      如果您對本教程感興趣,如要轉載,也請通知我!

      現(xiàn)在我們就開始第一講:C圖形方式下的編程 學習目標

      ·了解PC顯示系統(tǒng)的結構

      ·C語言圖形初始化的一般方法

      ·C語言常用的圖形處理函數(shù) 顯示系統(tǒng)簡介

      PC機顯示系統(tǒng)一般是由顯示器和顯示卡組成。顯示器(Monitor)是獨立于主機的一種外部設備。顯示卡(Adapter)是插在Pc主機上的一塊電路板。PC機對顯示屏幕的所有操作都是通過顯示卡來實現(xiàn)的。

      顯示系統(tǒng)的主要特性

      1.顯示分辨率

      顯示分辨率是指屏幕上所能顯示的像素點數(shù),通常用列數(shù)和行數(shù)的乘積宋表示。為了獲得良好的顯示效果,要求顯示器的分辨率與對應分辨率的顯示卡相匹配。通常,高分辨率的顯示效果比低分辨率的效果好。但是,顯示分辨率的提高對顯示器與顯示卡的硬、軟件要求更高。特別是分辨率的提高在很大程度上受到顯示器的顯示尺寸和掃描頻率的限制,也受到顯示卡的顯存的限制。

      根據(jù)應用情況的不同,在不超過顯示器最高分辨率的條件下,可以通過對顯示卡的設置而使用不同的分辨率。

      2.顯示速度

      顯示速度是指在屏幕上顯示圖形和字符的速度。顯示速度與顯示分辨率和顯示器的掃描頻率密切相關。顯示分辨率越高,整個屏幕上的像素點數(shù)就越多,顯示速度就越慢。在這種情況下,為了提高顯示速度,就需要提高掃描頻率。

      如果顯示器只有一種掃描頻率,則它只能與一種顯示卡相匹配使用。隨著顯示技術的發(fā)展,目前一般的顯示器可以適應具有多種分辨率與顯示速度的顯示卡。

      顏色與灰度是衡量顯示系統(tǒng)的重要參數(shù)。單色顯示器只有亮和暗兩種灰度;彩色顯示器的顏色和灰度要受顯示內存的限制,分辨率越高,顏色越豐富,所需要的顯示內存就越多。

      4.圖形顯示能力

      圖形顯示能力是顯示系統(tǒng)對屏幕上的每一個像素點都可以設置成不同的值的能力。通常,圖形顯示對硬件的要求比字符顯示要求高得多,同時,圖形顯示對顯示緩沖區(qū)的要求也比字符顯示時高得多。顯示卡的種類

      常用的顯示卡有以下幾種 1.MDA卡

      MDA卡(Monochrome Display Adapter——單色字符顯示器適配卡)與單色字符顯示器配接,它只支持字符顯示功能,無圖形功能。

      2.HGC卡

      HGC卡(Hercules GraphicsCard——單色顯示圖形卡)不僅支持字符顯示,而且支持單色圖形功能。在圖形方式下,其圖形顯示分辨率最高可達720~348點陣。通過軟件的設置,還可以支持640~400單色圖形顯示以及模擬CGA卡圖形方式。

      3.CGA卡

      CGA卡(ColorGraphicsAdapter--彩色圖形顯示卡)支持字符/圖形兩種方式。

      在字符方式下,它支持80列、25行及奶列、25行的方式,顏色可選16種。但是字符的質量比較差,只有8X8點陣。在圖形方式下,它支持最大為640~200分辨率,但只有黑、白兩種顏色。此外,它還支持320~200的分辨率,每個像素點可以有四種顏色。CGA卡有16K的顯示緩沖區(qū),用于顯示字符及屬性或圖形方式下的圖形數(shù)據(jù)。

      4.EGA卡

      EGA卡(Enhanced GraphicsAdapter——增強型圖形顯示卡)的字符顯示能力和圖形顯示能力都比CGA卡有了較大的提高,顯示分辨率達到640~350,最高分辨率圖形方式的顏色達到了16種。EGA卡的顯示模式也比CGA卡豐富,并且兼容CGA卡及MDA卡的顯示模式。

      5.VGA卡

      VGA卡(Video GraphicsArray一一視頻圖形陣列)是一種功能十分強大、顏色豐富的顯示卡。VGA的標準分辨率可達到640~480,并且具有16種顏色。一些兼容的VGA卡(如TVGA卡、EVGA卡)的分辨率可達640~480(256種顏色)、800~600(16種顏色)或1024~768(16種顏色)。VGA卡兼容MDA卡、CGA卡、EGA卡的所有顯示模式。

      隨著顯示技術的發(fā)展,目前的顯示卡的分辨率一般都可以達到1024X768,顯示32位真彩(232種顏色)。

      視頻BIOS 視頻BIOS(BasicI/OSystem基本輸入/輸出系統(tǒng))是與顯示卡配套的一個重要組成部分。用戶通過調用它可以完成一些與顯示有關的控制功能。對于要用到顯示系統(tǒng)的一般程序設計都可以通過調用視頻BIOs或視頻函數(shù)庫來完成。但要想獲得更高性能的顯示程序,還需要對顯示卡的寄存器和顯示內存直接進行編程。顯示模式

      顯示模式按功能可以分為字符模式和圖形模式兩大類。

      字符模式也稱為字母數(shù)字模式,即A/N模式(A1phaNumbermode)。在這種模式下,顯示緩沖區(qū)中存放的是顯示字符的代碼和屬性,而顯示屏幕被分為若干個字符顯示行和列。圖形模式(Graphics mode)也稱為APA模式(A1l Points Addressablemode)。在這種模式下,顯示緩沖區(qū)中存放的是顯示器屏幕上的每個像素點的顏色或灰度值,而顯示屏幕被劃分為像素行和像素列。

      由于顯示卡的種類很多,其中有些顯示模式在不同類型的顯示卡及不同廠家的顯示卡之間是通用的,這類顯示模式稱為標準模式。還有些模式是專用的,稱為非標準模式。通常,顯示模式號小于14H的是標準模式;其他則為非標準模式。圖形模式的初始化

      不同的顯示器適配器有不同的圖形分辨率。即使是同一顯示器適配器,在不同模式下也有不同分辨率。因此,在屏幕作圖之前,必須根據(jù)顯示器適配器的種類將顯示器設置成為某種圖形模式。在未設置圖形模式之前,微機系統(tǒng)默認屏幕為文本模式(80列,25行字符模式),此時所有圖形函數(shù)均不能工作。

      設置屏幕為圖形模式,可用下列圖形初始化函數(shù):

      void far initgraph(int far* gdriver,int far *gmode,char *path);

      其中gdriver和gmode分別表示圖形驅動器和模式,path是指圖形驅動程序所在的目錄路徑。圖形驅動程序由TurboC出版商提供,文件擴展名為.BGI。根據(jù)不同的圖形適配器有不同的圖形驅動程序。例如對于EGA、VGA圖形適配器的圖形驅動程序為EGAVGA.BGI。

      有時編程者并不知道所用的圖形顯示器適配器種類,而且我們?yōu)榱藢⒕帉懙某绦蚩梢杂糜诓煌瑘D形驅動器,增強程序的通用性,我們通常不指定圖形顯示器適配器種類,而使用Turbo C提供了一個自動檢測顯示器硬件的函數(shù),其調用格式為:

      void far detectgraph(int *gdriver, *gmode);

      其中gdriver和gmode意義同上。

      例1:自動進行硬件測試后進行圖形初始化

      #include “graphics.h”

      main()

      {

      int gdriver, gmode;

      detectgraph(&gdriver, &gmode);

      /*自動測試硬件*/

      printf(“driver is %d, mode is %dn”, gdriver,gmode);

      /*輸出結果*/

      getch();

      initgraph(&gdriver, &gmode, “");

      /* 根據(jù)測試結果初始化圖形*/

      circle(320,240,50);

      circle(320,240,80);

      circle(320,240,110);

      getch();

      closegraph();

      } 上例程序中先對圖形顯示器自動檢測,然后再用圖形初始化函數(shù)進行初始化設置。其中,closegraph()為退出圖形狀態(tài)的函數(shù),其調用格式為:voidfarclosegraph(void);調用該函數(shù)后可退出圖形狀態(tài)而進入文本方式,并釋放用于保存圖形驅動程序和字體的系統(tǒng)內存。同時TurboC提供了一種更簡單的初始化圖形的方法,即用gdriver=DETECT語句后再跟initgraph()函數(shù)就行了。比如,上例可改為例2的樣子。例2:

      #include ”graphics.h“

      main()

      {

      int gdriver=DETECT, gmode;

      initgraph(&gdriver, &gmode, ”“);

      circle(320,240,50);

      circle(320,240,80);

      circle(320,240,110);

      getch();

      closegraph();

      } 屏幕顏色的設置

      對于圖形模式的屏幕顏色設置,同樣分為背景色的設置和前景色的設置。在Turbo c中分別使用以下兩個函數(shù):

      void far setbkcolor(int color);設置背景色

      void far setcolor(int color);設置作圖色

      其中color為圖形方式下顏色的規(guī)定數(shù)值,符號常數(shù)及數(shù)值如下所示。符號常數(shù)

      數(shù)值

      含義

      字符或背景 BLACK

      0

      兩者均可 BLUE

      兩者均可 GREEN

      兩者均可 CYAN

      兩者均可 RED

      兩者均可

      MAGENTA

      洋紅

      兩者均可 BROWN

      兩者均可

      LIGHTGRAY

      淡灰

      兩者均可 DARKGRAY

      深灰

      只用于字符 LIGHTBLUE

      淡蘭

      只用于字符 LIGHTGREEN

      淡綠

      只用于字符 LIGHTCYAN

      淡青

      只用于字符 LIGHTRED

      淡紅

      只用于字符

      LIGHTMAGENTA

      淡洋紅

      只用于字符 YELLOW

      只用于字符 WHITE

      只用于字符 BLINK

      128

      閃爍

      只用于字符

      清除圖形屏幕內容使用清屏函數(shù),其調用格式如下 void far cleardevice(void);有關顏色設置、清屏函數(shù)的使用請看例3。例3:

      #include ”stdio.h“

      #include ”graphics.h“

      main()

      {

      int gdriver, gmode, i,j;

      gdriver=DETECT;

      initgraph(&gdriver, &gmode, ”“);/*圖形初始化*/

      setbkcolor(0);

      /*設置圖形背景*/

      cleardevice();

      for(i=0;i<=15;i++)

      {

      setcolor(i);

      /*設置不同作圖色*/

      circle(319, 239, 20+i*15);

      /*畫半徑不同的圓*/

      delay(3000);

      /*延遲3000毫秒*/

      }

      for(i=0;i<=15;i++)

      {

      setbkcolor(i);

      /*設置不同背景色*/

      cleardevice();

      for(j=0;j<=15;j++)

      {

      setcolor(j);

      /*設置不同作圖色*/

      circle(319, 239, 20+j*15);

      /*畫半徑不同的圓*/

      delay(3000);

      }

      }

      getch();

      closegraph();

      }

      另外,TURBO C也提供了幾個獲得現(xiàn)行顏色設置情況的函數(shù)。

      int far getbkcolor(void);返回現(xiàn)行背景顏色值。

      int far getcolor(void);返回現(xiàn)行作圖顏色值。

      int far getmaxcolor(void);返回最高可用的顏色值?;緢D形函數(shù)

      基本圖形函數(shù)包括畫點,線以及其它一些基本圖形的函數(shù)。本節(jié)對這些函數(shù)作一全面的介紹。

      畫點

      1.畫點函數(shù) void far putpixel(int x, int y, int color);該函數(shù)表示有指定的象元畫一個按color 所確定顏色的點。對于顏色color的值可從上表中獲得而對x,y是指圖形象元的坐標。在圖形模式下,是按象元來定義坐標的。對VGA適配器,它的最高分辨率為640x480,其中640為整個屏幕從左到右所有象元的個數(shù),480為整個屏幕從上到下所有象元的個數(shù)。屏幕的左上角坐標為(0,0),右下角坐標為(639, 479),水平方向從左到右為x軸正向,垂直方向從上到下為y軸正向。TURBO C的圖形函數(shù)都是相對于圖形屏幕坐標,即象元來說的。關于點的另外一個函數(shù)是: int fargetpixel(int x, int y);它獲得當前點(x, y)的顏色值。

      2.有關坐標位置的函數(shù)

      int far getmaxx(void);返回x軸的最大值。

      int far getmaxy(void);返回y軸的最大值。

      int far getx(void);返回游標在x軸的位置。

      void far gety(void);返回游標有y軸的位置。

      void far moveto(int x, int y);移動游標到(x, y)點,不是畫點,在移動過程中亦畫點。

      void far moverel(int dx, int dy);移動游標從現(xiàn)行位置(x, y)移動到(x+dx, y+dy)的位置,移動過程中不畫點。

      畫線與線型設定

      1.畫線函數(shù)

      TURBO C提供了一系列畫線函數(shù),下面分別敘述:

      void far line(int x0, int y0, int x1, int y1);畫一條從點(x0, y0)到(x1, y1)的直線。

      void far lineto(int x, int y);畫一作從現(xiàn)行游標到點(x, y)的直線。

      void far linerel(int dx, int dy);畫一條從現(xiàn)行游標(x,y)到按相對增量確定的點(x+dx, y+dy)的直線。

      void far circle(int x, int y, int radius);以(x, y)為圓心,radius為半徑,畫一個圓。

      voidfar arc(int x, int y, int stangle, int endangle,int radius);以(x,y)為圓心,radius為半徑,從stangle開始到endangle結束(用度表示)畫一段圓弧線。在TURBO C中規(guī)定x軸正向為0度,逆時針方向旋轉一周,依次為90,180, 270和360度(其它有關函數(shù)也按此規(guī)定不再重述)。

      voidellipse(int x, int y, int stangle, int endangle,int xradius,intyradius);以(x, y)為中心,xradius,yradius為x軸和y軸半徑,從角stangle開始到endangle結束畫一段橢圓線,當stangle=0,endangle=360時,畫出一個完整的橢圓。

      void far rectangle(int x1, int y1, int x2, inty2);以(x1, y1)為左上角,(x2, y2)為右下角畫一個矩形框。

      voidfar drawpoly(int numpoints, int far *polypoints);畫一個頂點數(shù)為numpoints,各頂點坐標由polypoints給出的多邊形。polypoints整型數(shù)組必須至少有2倍頂點數(shù)個無素。每一個頂點的坐標都定義為x,y,并且x在前。值得注意的是當畫一個封閉的多邊形時,numpoints的值取實際多邊形的頂點數(shù)加一,并且數(shù)組polypoints中第一個和最后一個點的坐標相同。

      2.設定線型函數(shù)

      在沒有對線的特性進行設定之前,TURBO C 用其默認值,即一點寬的實線,但TURBO C 也提供了可以改變線型的函數(shù)。線型包括:寬度和形狀。其中寬度只有兩種選擇:一點寬和三點寬。而線的形狀則有五種。下面介紹有關線型的設置函數(shù)。

      void far setlinestyle(intlinestyle,unsigned upattern,int thickness);該函數(shù)用來設置線的有關信息,其中l(wèi)inestyle是線形狀的規(guī)定,見下表:

      有關線的形狀(linestyle)━━━━━━━━━━━━━━━━━━━━━━━━━ 符號常數(shù) 數(shù)值 含義

      ─────────────────────────

      SOLID_LINE 0 實線 DOTTED_LINE 1 點線 CENTER_LINE 2 中心線 DASHED_LINE 3 點畫線

      USERBIT_LINE 4 用戶定義線

      ━━━━━━━━━━━━━━━━━━━━━━━━━ 有關線寬(thickness)thickness是線的寬度,見下表。

      ━━━━━━━━━━━━━━━━━━━━━━━━━ 符號常數(shù) 數(shù)值 含義

      ─────────────────────────

      NORM_WIDTH 1 一點寬 THIC_WIDTH 3 三點寬

      ━━━━━━━━━━━━━━━━━━━━━━━━━

      對于upattern,只有l(wèi)inestyle選USERBIT_LINE 時才有意義(選其它線型,uppattern取0即可)。此進uppattern的16位二進制數(shù)的每一位代表一個象元,如果那位為1,則該象元打開,否則該象元關閉。void far getlinesettings(struct linesettingstypefar *lineinfo);該函數(shù)將有關線的信息存放到由lineinfo 指向的結構中,表中l(wèi)inesettingstype的結構如下:

      struct linesettingstype { int linestyle;unsigned upattern;int thickness;}

      例如下面兩句程序可以讀出當前線的特性 struct linesettingstype *info;getlinesettings(info);void far setwritemode(int mode);該函數(shù)規(guī)定畫線的方式。如果mode=0,則表示畫線時將所畫位置的原來信息覆蓋了(這是TURBO C的默認方式)。如果mode=1,則表示畫線時用現(xiàn)在特性的線與所畫之處原有的線進行異或(XOR)操作,實際上畫出的線是原有線與現(xiàn)在規(guī)定的線進行異或后的結果。因此,當線的特性不變,進行兩次畫線操作相當于沒有畫線。

      封閉圖形的填充

      填充就是用規(guī)定的顏色和圖模填滿一個封閉圖形。

      1.先畫輪廓再填充

      TURBO C提供了一些先畫出基本圖形輪廓,再按規(guī)定圖模和顏色填充整個封閉圖形的函數(shù)。在沒有改變填充方式時,TURBO C 以默認方式填充。下面介紹這些函數(shù)。void far bar(int x1, int y1, int x2, int y2);確定一個以(x1, y1)為左上角,(x2, y2)為右下角的矩形窗口,再按規(guī)定圖模和顏色填充。說明:此函數(shù)不畫出邊框,所以填充色為邊框。void far bar3d(int x1, int y1, int x2, int y2,int depthint topflag);當topflag為非0時, 畫出一個三維的長方體。當topflag為0時,三維圖形不封頂,實際上很少這樣使用。說明: bar3d()函數(shù)中,長方體第三維的方向不隨任何參數(shù)而變,即始終為45度的方向。

      void far pieslice(int x,int y,int stangle,int endangle,int radius);畫一個以(x, y)為圓心,radius為半徑,stangle為起始角度,endangle 為終止角度的扇形,再按規(guī)定方式填充。當stangle=0,endangle=360 時變成一個實心圓,并在圓內從圓點沿X軸正向畫一條半徑。

      void far sector(int x, int y,int stanle,intendangle,int xradius, int yradius);畫一個以(x, y)為圓心分別以xradius, yradius為x軸和y軸半徑,stangle 為起始角,endangle為終止角的橢圓扇形,再按規(guī)定方式填充。

      2.設定填充方式

      TURBO C有四個與填充方式有關的函數(shù)。下面分別介紹:

      void far setfillstyle(int pattern, int color);color的值是當前屏幕圖形模式時顏色的有效值。pattern的值及與其等價的符號常數(shù)如下表所示。關于填充式樣pattern的規(guī)定: ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 符號常數(shù) 數(shù)值 含義

      ─────────────────────────── EMPTY_FILL 0 以背景顏色填充 SOLID_FILL 1 以實填充 LINE_FILL 2 以直線填充

      LTSLASH_FILL 3 以斜線填充(陰影線)SLASH_FILL 4 以粗斜線填充(粗陰影線)BKSLASH_FILL 5 以粗反斜線填充(粗陰影線)LTBKSLASH_FILL 6 以反斜線填充(陰影線)HATCH_FILL 7 以直方網(wǎng)格填充 XHATCH_FILL 8 以斜網(wǎng)格填充

      INTTERLEAVE_FILL 9 以間隔點填充 WIDE_DOT_FILL 10 以稀疏點填充 CLOSE_DOS_FILL 11 以密集點填充 USER_FILL 12 以用戶定義式樣填充

      ━━━━━━━━━━━━━━━━━━━━━━━━━━━

      除USER_FILL(用戶定義填充式樣)以外,其它填充式樣均可由setfillstyle()函數(shù)設置。當選用USER_FILL時,該函數(shù)對填充圖模和顏色不作任何改變。之所以定義USER_FILL主要因為在獲得有關填充信息時用到此項。

      void far setfillpattern(char * upattern,int color);設置用戶定義的填充圖模的顏色以供對封閉圖形填充。其中upattern是一個指向8個字節(jié)的指針。這8個字節(jié)定義了8x8點陣的圖形。每個字節(jié)的8位二進制數(shù)表示水平8點,8個字節(jié)表示8行,然后以此為模型向個封閉區(qū)域填充。

      void far getfillpattern(char * upattern);該函數(shù)將用戶定義的填充圖模存入upattern指針指向的內存區(qū)域。

      void far getfillsetings(struct fillsettingstypefar * fillinfo);獲得現(xiàn)行圖模的顏色并將存入結構指針變量fillinfo中。其中fillsettingstype結構定義如下: struct fillsettingstype { int pattern;/* 現(xiàn)行填充模式 * / int color;/* 現(xiàn)行填充模式 * / };

      3.任意封閉圖形的填充

      截止目前為止,我們只能對一些特定形狀的封閉圖形進行填充,但還不能對任意封閉圖形進行填充。為此,TURBO C 提供了一個可對任意封閉圖形填充的函數(shù),其調用格式如下: void far floodfill(int x, int y, int border);其中:x, y為封閉圖形內的任意一點。border為邊界的顏色,也就是封閉圖形輪廓的顏色。調用了該函數(shù)后,將用規(guī)定的顏色和圖模填滿整個封閉圖形。注意:

      1.如果x或y取在邊界上,則不進行填充。

      2.如果不是封閉圖形則填充會從沒有封閉的地方溢出去,填滿 其它地方。

      3.如果x或y在圖形外面,則填充封閉圖形外的屏幕區(qū)域。

      4.由border指定的顏色值必須與圖形輪廓的顏色值相同,但填充色可選任意顏色。下例是有關floodfill()函數(shù)的用法,該程序填充了bar3d()所畫長方體中其它兩個未填充的面。

      有關圖形窗口和圖形屏幕操作函數(shù)

      1、圖形窗口操作

      象文本方式下可以設定屏幕窗口一樣,圖形方式下也可以在屏幕上某一區(qū)域設定窗口,只是設定的為圖形窗口而已,其后的有關圖形操作都將以這個窗口的左上角(0, 0)作為坐標原點,而且可為通過設置使窗口之外的區(qū)域為不可接觸。這樣,所有的圖形操作就被限定在窗口內進行。

      void far setviewport(int xl,int yl,int x2, int y2,int clipflag);設定一個以(xl,yl)象元點為左上角,(x2,y2)象元為右下角的圖形窗口,其中x1,y1,x2,y2是相對于整個屏幕的坐標。若 clipflag為非0,則設定的圖形以外部分不可接觸,若clipflag為0,則圖形窗口以外可以接觸。

      void far clearviewport(void);清除現(xiàn)行圖形窗口的內容。

      void far getviewsettings(struct viewporttypefar * viewport);獲得關于現(xiàn)行窗口的信息,并將其存于viewporttype定義的結構變量viewport中,其中viewporttype的結構說明如下: struct viewporttype { int left, top, right, bottom;int cliplag;};注明:

      ①窗口顏色的設置與前面講過的屏幕顏色設置相同,但屏幕背景色和窗口背景色只能是一種顏色,如果窗口背景色改變,整個屏幕的背景色也將改變這與文本窗口不同。

      ②可以在同一個屏幕上設置多個窗口,但只能有一個現(xiàn)行窗口工作,要對其它窗口操作,通過將定義那個窗口的setviewport()函數(shù)再用一次即可。

      ③前面講過圖形屏幕操作的函數(shù)均適合于對窗口的操作。

      2、屏幕操作

      除了清屏函數(shù)以外,關于屏幕操作還有以下函數(shù):

      void far setactivepage(int pagenum);void far setvisualpage(int pagenum);這兩個函數(shù)只用于EGA,VGA 以及HERCULES圖形適配器。setctivepage()函數(shù)是為圖形輸出選擇激活頁。所謂激活頁是指后續(xù)圖形的輸出被寫到函數(shù)選定的 pagenum頁面,該頁面并不一定可見。setvisualpage()函數(shù)才使pagenum所指定的頁面變成可見頁。頁面從0開始(Turbo C默認頁)。如果先用setactivepage()函數(shù)在不同頁面上畫出一幅幅圖像,再用setvisualpage()函數(shù)交替顯示,就可以實現(xiàn)一些動畫的效果。

      void far getimage(int xl,int yl, int x2,int y2,void far *mapbuf);void far putimge(int x,int,y,void * mapbuf, int op);unsined far imagesize(int xl,int yl,int x2,int y2);這三個函數(shù)用于將屏幕上的圖像復制到內存,然后再將內存中的圖像送回到屏幕上。首先通過函數(shù)imagesize()測試要保存左上角為(xl,yl),右上角為(x2,y2)的圖形屏幕區(qū)域內的全部內容需多少個字節(jié),然后再給mapbuf分配一個所測數(shù)字節(jié)內存空間的指針。通過調用getimage()函數(shù)就可將該區(qū)域內的圖像保存在內存中,需要時可用putimage()函數(shù)將該圖像輸出到左上角為點(x, y)的位置上,其中getimage()函數(shù)中的參數(shù)op規(guī)定如何釋放內存中圖像。關于這個參數(shù)的定義參見下表: putimage()函數(shù)中的op值

      ━━━━━━━━━━━━━━━━━━━━━━━━━━ 符號常數(shù) 數(shù)值 含 義

      ────────────────────────── COPY_PUT 0 復制

      XOR_PUT 1 與屏幕圖像異或的復制 OR_PUT 2 與屏幕圖像或后復制 AND_PUT 3 與屏幕圖像與后復制 NOT_PUT 4 復制反像的圖形 ━━━━━━━━━━━━━━━━━━━━━━━━━━

      對于imagesize()函數(shù),只能返回字節(jié)數(shù)小于64K字節(jié)的圖像區(qū)域,否則將會出錯,出錯時返回-1。這在圖像動畫處理、菜單設計技巧中非常有用。圖形模式下的文本輸出

      在圖形模式下,只能用標準輸出函數(shù),如printf(),puts(),putchar()函數(shù)輸出文本到屏幕。除此之外,其它輸出函數(shù)(如窗口輸出函數(shù))不能使用,即是可以輸出的標準函數(shù),也只以前景色為白色,按80列,25行的文本方式輸出。

      Turbo C2.0也提供了一些專門用于在圖形顯示模式下的文本輸出函數(shù)。下面將分別進行介紹。

      1.文本輸出函數(shù) void far outtext(char far *textstring);該函數(shù)輸出字符串指針textstring所指的文本在現(xiàn)行位置。

      void far outtextxy(int x, int y, char far *textstring);該函數(shù)輸出字符串指針textstring所指的文本在規(guī)定的(x, y)位置。其中x和y為象元坐標。說明:

      這兩個函數(shù)都是輸出字符串,但經(jīng)常會遇到輸出數(shù)值或其它類型的數(shù)據(jù),此時就必須使用格式化輸出函數(shù)sprintf()。sprintf()函數(shù)的調用格式為: int sprintf(char *str, char *format, variable-list);它與printf()函數(shù)不同之處是將按格式化規(guī)定的內容寫入str 指向的字符串中,返回值等于寫入的字符個數(shù)。

      例如:

      'C110F1sprintf(s, ”your TOEFL score is %d", mark);這里s應是字符串指針或數(shù)組,mark為整型變量。

      2.有關文本字體、字型和輸出方式的設置

      有關圖形方式下的文本輸出函數(shù),可以通過setcolor()函數(shù)設置輸出文本的顏色。另外,也可以改變文本字體大小以及選擇是水平方向輸出還是垂直方向輸出。

      void far settexjustify(int horiz, int vert);該函數(shù)用于定位輸出字符串。

      對使用outtextxy(int x, int y, char far *str textstring)函數(shù)所輸出的字符串,其中哪個點對應于定位坐標(x,y)在TurboC2.0中是有規(guī)定的。如果把一個字符串看成一個長方形的圖形,在水平方向顯示時,字符串長方形按垂直方向可分為頂部,中部和底部三個位置,水平方向可分為左,中,右三個位置,兩者結合就有9個位置。

      settextjustify()函數(shù)的第一個參數(shù)horiz 指出水平方向三個位置中的一個,第二個參數(shù)vert指出垂直方向三個位置中的一個,二者就確定了其中一個位置。當規(guī)定了這個位置后,用outtextxy()函數(shù)輸出字符串時,字符串長方形的這個規(guī)定位置就對準函數(shù)中的(x,y)位置。而對用outtext()函數(shù)輸出字符串時,這個規(guī)定的位置就位于現(xiàn)行游標的位置。有關參數(shù) horiz和vert的取值參見下表: 參數(shù)horiz和vert的取值

      ━━━━━━━━━━━━━━━━━━━━━━━━ 符號常數(shù) 數(shù)值 用于

      ────────────────────────

      LEFT_TEXT 0 水平RIGHT_TEXT 2 水平BOTTOM_TEXT 0 垂直 TOP_TEXT 2 垂直

      CENTER_TEXT 1 水平或垂直

      ━━━━━━━━━━━━━━━━━━━━━━━━ void far settextstyle(int font, int direction,int charsize);該函數(shù)用來設置輸出字符的字形(由font確定)、輸出方向(由direction確定)和字符大小(由charsize確定)等特性。

      Turbo C2.0對函數(shù)中各個參數(shù)的規(guī)定見下列各表所示: font的取值

      ━━━━━━━━━━━━━━━━━━━━━━━━ 符號常數(shù) 數(shù)值 含義

      ────────────────────────

      DEFAULT_FONT 0 8*8點陣字(缺省值)TRIPLEX_FONT 1 三倍筆劃字體 SMALL_FONT 2 小號筆劃字體

      SANSSERIF_FONT 3 無襯線筆劃字體 GOTHIC_FONT 4 黑體筆劃字

      ━━━━━━━━━━━━━━━━━━━━━━━━ direction的取值

      ━━━━━━━━━━━━━━━━━━━━━━━━ 符號常數(shù) 數(shù)值 含義

      ────────────────────────

      HORIZ_DIR 0 從左到右 VERT_DIR 1 從底到頂

      ━━━━━━━━━━━━━━━━━━━━━━━━ charsize的取值

      ━━━━━━━━━━━━━━━━━━━━━━━━ 符號常數(shù)或數(shù)值 含義

      ──────────────────────── 8*8點陣 2 16*16點陣 3 24*24點陣 4 32*32點陣 5 40*40點陣 6 48*48點陣 7 56*56點陣 8 64*64點陣 9 72*72點陣 10 80*80點陣

      USER_CHAR_SIZE=0 用戶定義的字符大小

      ━━━━━━━━━━━━━━━━━━━━━━━━

      3.用戶對文本字符大小的設置

      前面介紹的settextstyle()函數(shù),可以設定圖形方式下輸出文本字符這字體和大小但對于筆劃型字體(除8*8點陣字以個的字體),只能在水平和垂直方向以相同的放大倍數(shù)放大。為此Turbo C2.0又提供了另外一個setusercharsize()函數(shù),對筆劃字體可以分別設置水平和垂直方向的放大倍數(shù)。該函數(shù)的調用格式為:

      void far setusercharsize(int mulx, int divx,int muly, int divy);該函數(shù)用來設置筆劃型字和放大系數(shù),它只有在settextstyle()函數(shù)中的charsize為0(或USER_CHAR_SIZE)時才起作用,并且字體為函數(shù)settextstyle()規(guī)定的字體。調用函數(shù)setusercharsize()后,每個顯示在屏幕上的字符都以其缺省大小乘以 mulx/divx為輸出字符寬,乘以muly/divy為輸出字符高。小結

      這一講我們首先介紹了PC機的圖形顯示結構和原理,然后介紹了圖形初始化,然后講了一些圖形處理函數(shù)。

      這一講我們共舉了三個例子,對于圖形處理函數(shù)由于時間原因不能舉太多的例子了,希望大家自己實際操作一下,會有很大收獲的

      第二篇:高級語言程序設計-教學大綱

      《高級語言程序設計》教學大綱(Visual FoxPro)

      課程編號:030202 總學時:54學時(含上機24學時)

      適用專業(yè):全院管理類所有本、專科專業(yè)

      一、教 學 內 容

      1、數(shù)據(jù)庫基本知識 ①數(shù)據(jù)庫的特點; ②數(shù)據(jù)庫系統(tǒng)分代; ③數(shù)據(jù)庫系統(tǒng)的分類;

      ④Visual FoxPro文件的主要技術指標; ○5 Visual FoxPro的界面和工作方式

      2、數(shù)據(jù)庫的基本操作

      ①數(shù)據(jù)庫文件的建立,CREATE、APPEND、LIST、DISPLAY;

      ② Visual FoxPro的命令工資方式,菜單和命令方式、表達式、數(shù)組和常用函數(shù);

      ③修改數(shù)據(jù)庫文件。MODIFY STRUCTURE、INSERET、DELETE、RECALL、PACK、EDIT、CHANGE、BROWSE、REPLACE、SCATTER、GATHER;

      ④復制數(shù)據(jù)庫文件。COPY STRUCTURE、COPY TO、數(shù)據(jù)庫的結構文件、成批記錄的復制; ⑤磁盤文件的基本操作。COPY FILE、RENAME FILE、DELETE FILE、DIR、TYPE FILE;

      3、查詢和統(tǒng)計

      ①排序和索引sort、index;

      ②查詢命令locate、find、seek、continue、skip;

      ③數(shù)據(jù)工作期、視圖文件、表的關聯(lián)、多工作區(qū)查詢、庫文件的關聯(lián); ④SELECT-SQL查詢。

      ○5統(tǒng)計命令COUNT、SUM、AVERAGE、CALCULATE、TOTAL;

      4、程序設計初步

      ①程序文件。程序文件的建立和執(zhí)行MODIFY COMMAND<命令文件>、DO <命令文件>和菜單方式執(zhí)行、狀態(tài)命令設置、INPUT、ACCEPT、WAIT、?、??、; ②程序控制命令。程序設計的三種結構順序、分支、循環(huán);

      ③多模塊化程序設計。基本概念、子程序、函數(shù)、過程、全程變量和局部變量;

      5、窗口設計

      ①窗口操作命令。窗口的定義與修改DEFINE WINDOW、ACTIVATE WINDOW、MODIFYWINDOW、HIDE WINDOWS、SHOW WINDOW、DEACTIVATE WINDOWRELEASE WINDOW、CLEAR WINDOW、CLEAR ALL;

      ②窗口著色。顏色對與顏色模式、SET COLOR TO、COLOR SCHEME、SET COLOROFSCHEME; ③BROWSE窗口設計。定義BROWSE窗口、定義功能鍵。

      6、菜單設計

      ①下拉式菜單設計 ②彈出式選單設計

      7、表單設計基礎 ① 表單向導 ② 表單設計器

      ③面向對象的程序設計方法(基本概念、對象的引用)

      8、表單控件設計

      ① 輸出類控件(標簽、圖象、線條、形狀)

      ② 輸入類控件(文本框、編輯框、列表框與組合框、微調控件)③ 控制類控件(美麗按鈕與美麗按鈕組)④ 容器類控件(表格、頁框、容器)

      ⑤ 連接類控件(ActiveX控件、ActiveX綁定控件)

      9、表單高級設計

      ①多表單應用程序(應用程序界面、表單集)

      ②用戶定義屬性與方法程序(用戶定義屬性、用戶定義方法程序)③類(基本概念、用戶定義類)④表單/表單集設計實例

      10、報表設計

      ①打印基礎。打印準備、打印方法、打印命令 ②傳統(tǒng)的打印設計

      ③報表設計器的基本操作(打開標本設計器窗口、快速制表、標本打?。軋蟊碓O計器的高級操作,了解

      9、系統(tǒng)開發(fā)實例(對本科做基本的講解)①開發(fā)的基本步驟

      ○2以具體的實例進行講解

      二、《高級語言程序設計(Visual FoxPro語言)》大綱說明

      1、教學目的與任務

      在當今時代,計算機已經(jīng)在世界范圍內得到廣泛的推廣和應用。其中信息管理和數(shù)據(jù)處理已成為計算機應用的主流領域,而數(shù)據(jù)庫技術是這個領域的核心之一。

      Visual FoxPro系統(tǒng)是一個優(yōu)秀的多用戶關系數(shù)據(jù)庫管理系統(tǒng)。本課程詳細地講解了Visual FoxPro的各種命令、函數(shù)的功能,以及Visual FoxPro程序設計的方法,培養(yǎng)學生能靈活地應用Visual FoxPro 語言設計程序、進行維護管理,充分發(fā)揮計算機在信息管理和數(shù)據(jù)處理方面的優(yōu)越性。

      《高級語言程序設計(Visual FoxPro語言)》是面向全院所有專業(yè)本、??粕挠嬎銠C高級語言程序,它側重于數(shù)據(jù)庫的基本概念、數(shù)據(jù)庫的基本操作、簡單的程序設計、菜單程序設計、窗口菜單設計以及必須掌握的表單設計和簡單的菜單生成程序設計。側重于計算機對數(shù)據(jù)的基本處理、表單的數(shù)據(jù)輸出,使學生具備一定的計算機高級語言程序設計的能力,為學生利用計算機解決問題(特別是專業(yè)中的問題)準備必要的知識;本大綱重點基于數(shù)據(jù)庫的基本操作和簡單的程序設計,為學生學習相應的語言打下一定的基礎。

      2、本課程與其他課程的關系

      學習本課程,需要有一定的計算機基本操作技能,對計算機有一定的了解和使用。它是學 要求學生掌握計算機高級語言以及對計算機對數(shù)據(jù)處理方式和方法的掌握。為學習今后學習計算機解決問題和高年級學習專業(yè)課打下堅實的基礎。

      3、教學基本要求

      具有使用計算機高級語言解決基本問題的能力,掌握計算機對數(shù)據(jù)處理的方法和掌握計算機對數(shù)據(jù)處理的基本操作技能。要求學生學習了本課程后,能編制簡單的程序解決數(shù)據(jù)處理的問題,掌握程序設計的基本方法。

      了解數(shù)據(jù)庫的基本原理和數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)的關系,了解Visual FoxPro的基本性能指標,掌握數(shù)據(jù)庫的基本使用方法。

      掌握數(shù)據(jù)庫的基本統(tǒng)計和數(shù)據(jù)庫記錄的查詢。

      掌握程序設計的三種方法和簡單的程序設計,這是全書的重點。

      掌握菜單設計、窗口設計、菜單設計,對菜單設計,只要求掌握屏幕菜單方式和屏幕生成程序,對命令方式只做基本的了解。

      4、實驗課程

      附實驗大綱,按實驗大綱的要求完成實驗。

      5、課程學時安排

      學時安排遵循理論重于實踐,理論課的學時分配占總學時的60%,實驗課的操作,要求嚴格按照實驗大綱,以循序漸進的方式進行,如果學生沒有完成當天實驗課程的任務,學生可以自己找時間自己解決。

      章 次

      講 課 內 容

      授課

      上機 第一部分 數(shù)據(jù)庫的基本概念第二部分 數(shù)據(jù)庫的基本操作第三部分 查詢與統(tǒng)計、SQL 第四部分 程序設計基礎第五部分 菜單設計第六部分 表單設計及基礎第七部分 表單高級設計第八部分 報表設計合計

      22

      6、教學參考資料

      《數(shù)據(jù)庫及其應用》 牛允鵬等 經(jīng)濟科學出版社

      《Visual FoxPro活學活用》 張佑挺 張錦川等 重慶大學出版社

      《Visual FoxPro及其應用系統(tǒng)開發(fā)》 史濟民 湯觀全編著 清華大學出版社 《FoxPro用戶參考大全》 金榮得 胡傳國等 電子出版社 《FoxBASE數(shù)據(jù)庫應用教程》 北京希望電子出版社 《FoxPro命令與函數(shù)》 張錦豪等 學苑出版社

      《FoxPro數(shù)據(jù)庫實用教程》 王跟東等編著 四川大學出版社

      第三篇:《高級語言程序設計》課程設計大綱

      《高級語言程序設計》課程設計教學大綱

      課程名稱:高級語言程序設計課程設計

      課程總學時:32 適用專業(yè):廣播電視工程、電子信息工程、電子科學與技術

      課程類別:必修

      一、課程設計任務與目的

      《高級語言程序設計》課程是一門實踐性較強的課程,課程設計環(huán)節(jié)是課程學習的重要組成,是課程教學的必經(jīng)步驟。目的是培養(yǎng)學生實際操作技能和解決實際問題的能力。要求學生掌握C語言設計、調試、運行方法,獲得用C語言解題的實際體會,加深對C語言的理解,得到C程序設計方法和技巧的訓練,掌握C程序設計的全過程。通過課程設計的教學,使學生鞏固和深化已學的理論知識,加強綜合應用能力,訓練學生掌握分析問題、解決問題的方法,培養(yǎng)較強的動手能力和一定的設計和調試能力。

      二、課程設計基本內容與要求

      鑒于課程設計的性質、要求和具體內容,對課程設計提出如下要求;

      1、關于課題及選題

      在課程設計任務書中列出了多個設計課題,每個課題都有相應的要求或說明。參加課程設計的學生首先要了解設計的任務,仔細思考各題的設計要求,然后根據(jù)自已的基礎和能力情況從中選擇一題。一般來說,選擇課題應以在規(guī)定的時間內能完成,并能得到應有的鍛煉為原則。

      若學生對任務書中課題以外的相關課題較感興趣,希望選作課程設計的課題時,應征得指導教師的認可,并寫出明確的設計要求和說明。

      2、關于設計的總要求

      在設計時,要嚴格按照題意要求獨立進行設計,不能隨意更改。若確因條件所限,必須要改變課題要求時,應在征得指導教師同意的前提下進行。

      3、驗收

      在課程設計完成后應由指導教師當場運行、驗收,只有在驗收合格后才能算設計部分的結束。

      4、設計報告

      課程設計結束后要寫出課程設計報告,以作為整個課程設計評分的書面依據(jù)和存檔材料。設計報告一般要以固定規(guī)格的紙張書寫并裝訂,字跡及圖形要清楚、工整(電子文檔尤佳)。內容及要求如下:

      (1)設計任務、要求及所用軟件環(huán)境或工具。

      (2)問題模型化描述以及求解算法的簡要描述。

      (3)設計的模塊構成、各模塊的簡要說明、流程圖、調用關系表。

      (4)所設計軟件的組成(程序文件和數(shù)據(jù)文件)及使用說明。

      (5)設計總結和體會。

      (6)驗收情況。

      三、課程設計設備與材料

      計算機;Visual C++6.0或C-Free3.5或Turbo C++3.0軟件。

      四、考核方式與評分辦法

      1、學生按照實習計劃和大綱完成實習教學任務,考試合格取得相應學分。

      2、學生實習考核內容與成績比例:實習態(tài)度與實習紀律占20%、業(yè)務能力與水平占40%、答辯與驗收情況占20%,實習報告占20%。

      3、無故不參加實習或實習全過程缺勤在三分之一及以上者,實習成績視為不及格。

      4、學生實習成績按優(yōu)秀、良好、中等、及格和不及格五級評定,原則上呈正態(tài)分布,嚴格控制優(yōu)秀比例,一般優(yōu)秀率不大于20%。

      五、課程設計參考書

      1、潭浩強.C語言程序設計.清華大學出版社.2000

      2、廖湖聲等.C語言程序設計案例教程.人民郵電出版社.2003

      3、張仁杰 王風茂.《C語言程序設計實訓教程》中國電力出版社.2004

      執(zhí)筆人:裘姝平

      教研室:電子信息工程教研室 編制日期: 2008 年 9月

      第四篇:高級語言程序設計A第2次作業(yè)

      1.以下說法中錯誤的是。

      (B)a/=b+c;這個式子和a=a/b+c;等價

      2.16、若有如下說明

      int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

      則數(shù)值為6的元素的表達式是

      (B)*(p+5)

      3.下面哪條語句是錯誤的(B)int a=b=c=1;

      4.已知實型變量a存貯的是一個0~1之間的實數(shù),將a以兩位小數(shù)百分比形式輸出(如:a=0.347592,則輸出為34.75%)正確的打印語句是

      (A)printf(“%.2f%%”,a*100);

      5.定義C函數(shù)時,不給出返回值類型,則默認的返回值類型是

      (C)int

      6.C語言存貯字符串時,用特殊字符表示字符串結束

      (D)’