C语言从入门到精通,非常不错的课件第12章

上传人:206****923 文档编号:57305967 上传时间:2018-10-20 格式:PPT 页数:56 大小:743KB
返回 下载 相关 举报
C语言从入门到精通,非常不错的课件第12章_第1页
第1页 / 共56页
C语言从入门到精通,非常不错的课件第12章_第2页
第2页 / 共56页
C语言从入门到精通,非常不错的课件第12章_第3页
第3页 / 共56页
C语言从入门到精通,非常不错的课件第12章_第4页
第4页 / 共56页
C语言从入门到精通,非常不错的课件第12章_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《C语言从入门到精通,非常不错的课件第12章》由会员分享,可在线阅读,更多相关《C语言从入门到精通,非常不错的课件第12章(56页珍藏版)》请在金锄头文库上搜索。

1、第12章 C语言综合应用程序示例,返回,C语言程序设计教程,12.1 多模块编程方法,12.2 图形处理应用,12.3 操作系统接口应用,12.4 C语言与汇编语言混合编程,12.5 综合应用程序举例汉字显示技术,一个有实用价值的C语言应用程序往往较大,需要划分成不同的模块,分配给不同的程序员去完成。因此,在实用软件的开发中,往往需要采用多模块编程技术。,12.1 多模块编程方法,使用多模块编程技术的处理过程大致如下: 1、首先将一个大的源程序根据其功能合理地划分成若干个小的源程序,每个小源程序均以程序文件(.C)的形式保存在磁盘上。并建立一个包括各个源程序模块的文件名的工程文件(.prj)。

2、,12.1.1 程序模块组织,下一页,第12章 C语言综合应用程序举例,上一页,2、然后用编译器进行编译,将工程文件中指定的多个源程序文件进行编译,生成多个目标文件和一个可执行文件。注意,在分模块单独编译处理的各个程序模块中,必须有且只有一个主函数 main( ) 。,下一页,第12章 C语言综合应用程序举例,上一页,12.1.2 模块之间的通信,1、使用外部变量即一个程序文件file1.c中定义一个外部变量,另一个程序文件file2.c中的函数可以通过外部变量说明后来使用这个变量,以实现模块间的通信。说明形式:extern 类型说明符 外部变量名 ;注意:只是进行了说明,并不是变量定义,2、

3、举例利用外部变量实现程序模块f1.c与程序模块f2.c之间的通信。,设程序模块文件 f1.c 的内容如下:#includeint var=8; /* 全局变量的定义 */main() printf(“%d”,var);proc1();printf(“%dn”,var);,下一页,第12章 C语言综合应用程序举例,上一页,程序模块文件f2.c 的内容如下: extern int var; /* 外部变量的说明 */ proc1() var = 25 ; ,程序编译连接 生成可执行文 件,执行结果 为: 8 25,下一页,第12章 C语言综合应用程序举例,上一页,12.1.3 预处理命令#incl

4、ude的应用,1、#include命令经过预处理后,会将其后有关文件的内容拷贝到命令所在的源程序文件中。,2、在上一个例子中,程序要能够编译运行,需建立一个工程文件f12.prj,其内容为:f1.cf2.c 然后对f12.prj文件编译运行即可。 3、也可以在f1.c文件开头加一预处理命令:,#include #include int var=8; main() 对f1.c文件直接编译运行即可。,第12章 C语言综合应用程序举例,上一页,返回,12.2 图形处理应用,图形处理是计算机应用的一个极具特色的领域,有很好的应用前景,可以增强程序的趣味性、实用性。,12.2.1 基本图形处理库函数,T

5、urbo C支持多种显示适配器的各种显示模式,提供了画点、线、圆、椭圆、多边形以及输出各种字体等功能的函数。这些函数包含在图形头文件(graphics.h)中,在进行目标程序连接时,也必须将图形库文件graphics.lib连接到目标程序中去,其图形接口还包括图形显示驱动程序(*.BGI)等。,下一页,第12章 C语言综合应用程序举例,上一页,作用:将一个图形驱动程序装入内存,并将系统设置成图形模式; 说明:gd指定所用的图形驱动程序,其值可参照书上的图形驱动程序常量表;gm说明初始化的图形模式,其取值见附录;path指定驱动程序目录路径,空字符时表示驱动程序就在当前目录下。 例如:若已知所用

6、的图形适配器为CGA,并打算使用640200高分辨率模式CGAHI,则图形初始化部分可写成:,1、图形系统初始化函数, 显示模式控制函数initgraph(gd,gm,path),int gd = CGA, gm = CGAHI; initgraph(&gd, &gm, “TC” );,下一页,第12章 C语言综合应用程序举例,上一页, 自动检测显示器硬件的函数detectgraph(gd,gm)作用:当编程者不知所用的图形适配器的类型,或者需要编写在不同图形模式下均能运行的图形程序,使用该函数可以完成对适配器的检查,获取显示器类型号(赋给gd)及相应的显示模式(赋给gm)。例如:图形初始化部

7、分可以写成:int gd, gm;detectgraph( /*自动测试硬件 */initgraph(&gd, &gm, “TC” ); /* 根据测试结果进行图形初始化 */,下一页,第12章 C语言综合应用程序举例,上一页, 恢复显示方式函数closegraph( )作用:关闭图形系统,返回文本工作方式。 恢复工作模式函数restorecrtmode( )设置图形工作模式函数setgraphmode( ) 作用:使显示器工作方式在图形和文本方式之间来回切换。, 清屏函数cleardevice( )作用:用于画图前进行清除屏幕;作用范围为整个屏幕。,下一页,第12章 C语言综合应用程序举例,

8、上一页,2、基本图形函数,下一页,第12章 C语言综合应用程序举例,上一页,下一页,第12章 C语言综合应用程序举例,上一页,下一页,第12章 C语言综合应用程序举例,上一页,3、颜色控制函数,屏幕上显示出的点、线、面的颜色称为前景色,而衬托它们的背景颜色称为背景色。在Turbo C中常使用的16个标准色为:,下一页,第12章 C语言综合应用程序举例,上一页, 颜色设置函数setcolor(color); 作用:用颜色值color设置当前画图颜色。, 图形填充函数floodfill(x, y, bordercolor); 作用:该函数对任意封闭图形进行填充,其颜色和 模式由设定的或缺省的颜色与

9、图形模式决定。说明:编程时该函数位于画图函数之后;参数(x,y)为封闭图形中的任意一点,bordercolor是封闭图形的边框颜色。, 填充模式函数setfillstyle(pattern, color); 作用:来设定floodfill( )函数的填充模式 。说明:参数pattern的值及其符号如下表所示。,下一页,第12章 C语言综合应用程序举例,上一页,下一页,第12章 C语言综合应用程序举例,上一页,举例:利用基本作图函数及颜色控制函数画图。,点击,4、图形模式下字符输出函数, 字符输出函数outtext(str); 作用:在当前位置输出由str指定的字符串。说明:它能用不同的字型、大

10、小,和不同的显示方向输出文字。,下一页,第12章 C语言综合应用程序举例,上一页,字符输出属性函数settextstyle(font, direction, charsize); 作用:改变输出字符串的字型、大小和方向。说明:参数font确定所用的字型;direction的值表示字符的显示方向。它可以是HORIZ-DIR(水平输出,值为0),或是VERT-DIR(垂直输出,值为1)。charsize是增加字符大小的倍数(0 10)。,下一页,第12章 C语言综合应用程序举例,上一页, 字符输出定位函数 outtextxy(x, y, str); 作用:将str指向的字符串输出到窗口位置(x,y

11、) 上。,5、视口操作函数,Turbo C所有图形函数实际上都是在视口(即窗口)上操作的(在没有定义视口的情况下,它是整个屏幕)。用户可以同时建立多个不同大小的视口,每个视口操作函数的参数都是以其左上角(坐标为0,0)为参考点的相对坐标。, 设置视口函数setviewport(x1,y1,x2,y2,clipflag); 作用:设置左上角坐标为(x1,y1),右下角坐标 为 (x2,y2)的视口。说明:clipflag决定是否显示超出视口的图形部分。 0显示;1不显示。,下一页,第12章 C语言综合应用程序举例,上一页, 视口清除函数clearviewport( ); 作用:清除视口内的图形。

12、注意:使用setviewport( )函数可以在屏幕上开辟多个视口,这些视口可以重迭,但最近一次设置的视口才是当前视口。各图形函数都是在当前视口中操作。其它视口中的内容只要不被清除,就可以保持在屏幕上。,通过改变坐标位置移动视口,从而实现一个立方体的连续往左移动。程序请,下一页,第12章 C语言综合应用程序举例,上一页,点击,例如,6、建立独立运行的图形处理程序,要脱离 Turbo C 集成环境,建立可独立运行的可执行图形程序,必须将图形驱动程序(有的还要将字体驱动程序)连接到可执行的图形程序中。, 在tc子目录下输入命令: C:TCBGIOBJ EGAVGA 作用:将驱动程序EGAVGA.B

13、GI 转换成相应的目标文件EGAVGA.OBJ。, 在tc子目录下输入命令: C:TCTLIB LIBgraphics.lib+EGAVGAOBJ作用:将目标文件EGAVGAOBJ添加到 graphics.lib 库文件中。,下一页,第12章 C语言综合应用程序举例,上一页, 在用户程序调用initgraph()函数之前应加一语句: registerbgidriver(EGAVGA-driver);字体驱动程序的连接类似。经过上述处理,经编译连接后的执行程序便可在任何目录或其它兼容机上运行了。,12.2.2 图形处理库函数应用示例,第12章 C语言综合应用程序举例,上一页,举例:设有一组实验数

14、据存于数组val中,将它们用曲 线表示在 x-y 坐标平面上。程序请,点击,返回,12.3 操作系统接口应用,1、DOS 基本组成 由引导程序模块、基本输入输出系统、文件管理和系统调用模块、命令处理模块等几个部分组成。,C语言可以通过库函数实现与操作系统接口,即调用操作系统中的子程序,从而实现用户应用程序的深层次的开发。,12.3.1 DOS 操作系统简介,下一页,第12章 C语言综合应用程序举例,上一页,DOS为用户引用其功能子程序,利用了系统的软件中断。通过 CPU 的软中断指令 INT n 调用相应的程序。指令中的n是中断调用号(也称中断类型号),中断调用号不同,则调用的程序就不同。,2

15、、操作系统接口,通过软件中断调用 BIOS 中的基本I/O服务子程序,这种方法常被称为低层接口。常用的有:利用 INT 10指令调用有关显示器服务程序;利用 INT 16H 指令调用键盘服务程序。,下一页,第12章 C语言综合应用程序举例,上一页,例:设置显示器显示模式为320*200彩色图形模式的汇编语言程序段如下: MOV AL,4 ; 设显示模式 MOV AH,0 ; 设功能号 INT 10H ; 系统功能调用,通过软件中断调用IBMDOS模块中的功能程序,即所谓系统功能调用,是高层接口。如 INT 21H 指令便是典型的软件接口,该接口包括了许多子功能。例 :向显示器输出字符“A”的汇编语言程序段如下: MOV DL,“A” ; 置显示字符 MOV AH,2 ; 设功能号 INT 21H ; 系统功能调用 使用这两种接口,用户就可以在不与极复杂的硬件接口打交道的情况下,使用系统资源,开发各种应用软件。 C语言作为一种中级语言,它的一些库函数实际上就是调用了一些系统功能调用子程序,用户可以利用它们来调用BIOS及DOS软件接口,以实现特定功能。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号