C语言实践教程ppt课件(完整版)_第1页
C语言实践教程ppt课件(完整版)_第2页
C语言实践教程ppt课件(完整版)_第3页
C语言实践教程ppt课件(完整版)_第4页
C语言实践教程ppt课件(完整版)_第5页
已阅读5页,还剩252页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言实践教程 第1章 C语言概述1.1 C语言发展概述 C语言是比较流行的高级程序设计语言之一。它不但具有一般高级语言的特点,又可以像汇编语言一样,对硬件内存的位、字节直接进行操作,其运行效率非常高。 C语言的发展与操作系统UNIX密不可分,它是在B语言的基础上发展起来的,其根源可以追溯到ALGOL60。 1960年出现的ALGOL60是一种面向过程的高级语言,它离硬件比较远,不适合用来编写系统程序。 1963年剑桥大学推出了CPL(Combined Programming Language)语言,CPL语言在ALGOL60的基础上更接近硬件一些,但规模比较大。1967年剑桥大学的Matin

2、 Richards对CPL语言做了简化,推出了BCPL(Basic Combined Programming)语言。 1970年,UNIX开发者美国贝尔实验室的Ken Thompson以BCPL语言为基础,设计出更为简单的而且非常接近硬件的B语言,并用B语言编写了UNIX操作系统和绝大多数上层应用程序。 1972年,贝尔实验室的D.M.Ritchie在B语言的基础上又设计出了C语言。后来,C语言又多次做了改进,到1977年出现了不依赖于具体机器的C语言编译文本可移植C语言编译程序,使C移植到其他机器时所需要的工作大大简化了。到了20世纪80年代,C开始进入其他操作系统,并很快在各类大、中、小和

3、微型计算机上得到了广泛的使用。从而成为当代最优秀的程序设计语言之一。 1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充,制定了新的标准,称为ANSI C。ANSI C比原来的标准C有了很大的发展。1988年K&R修改了他们的经典著作The C programming language,按照ANSI C标准又重写了该书。1987年,ANSI再次公布了新的标准87ANSI C。目前比较流行的C编译系统都是以它为基础。 随着面向对象编程技术的出现,在进一步扩充和完善了C语言基础上,又出现了C+。Java、C+等面向对象语言(第四代语言)是C语言的发展。 1.2 C

4、语言的特点 相对于其他高级语言,C语言有很多优点,概括起来,其主要特点如下:语言简洁紧凑,使用方便灵活,运算符丰富 ;表达能力强;数据结构丰富,具有现代化语言的各种数据结构;C语言是一种结构化程序设计语言;可对硬件直接进行操作;生成目标代码质量高,程序执行效率高;可移植性好(与汇编语言相比);第1章 C语言概述第1章 C语言概述 1.3 C语言基本语法概述 1.3.1 C语言的语法特点 C程序是由函数构成的,其中必须有且只有一个主函数; 函数体是由左右花括号 括起来的; 一个C程序总是从main函数开始执行的; C语言中的每个基本语句都以“ ;”结束; C语言书写格式自由,一行可以写一个语句,

5、也可以写多个语句; C语言本身没有输入、输出语句。输入和输出操作都是由库函数scanf和printf等函数来完成的; 用/*/可以对C程序中的任何部分作注释。 第1章 C语言概述1.3.2 标识符、常量和变量标识符:由英文字母、数字、下划线组成,且第一个字符必须是字母或下划线。另外大小写字母的含义不同;还有不能够使用C语言中的关键字做标识符。常量:在程序运行过程中其值不能被改变的量。变量:在程序的执行过程中其值可以被改变的量。注意:使用变量前,一定要先定义后使用。第1章 C语言概述1.3.3 数据类型 整型数据 整型常量: 十进制整数:以数码直接开头的常量; 八进制整数:以0开头的常量,如01

6、1; 十六进制整数:以0 x开头的常量,如0 x123; 整型变量 :如下表整型数据类型关键字所占位数所占字节数的表示范围基本型int162-215215-1短整型short int162-215215-1长整型long int324-231231-1无符号整型unsigned int1620216-1无符号短整型unsigned short1620216-1无符号长整型unsigned long3240232-1第1章 C语言概述 浮点型数据 浮点型常量: 十进制数形式:它是由数字和小数组成; 指数形式:如0.00123用指数法可表示为1.23e-3; 实型变量: 单精度(float):占4

7、个字节,有效位为7位,数值范围为10-381038; 双精度(double):占8个字节,有效位为1516位,数值范围约为 10-30810308; 字符型数据 字符型常量:由一对单引号括起来的单个字符; 转义字符: 特殊形式的字符常量,它以开头; 字符型变量:存放一个字符的ASCII码值,占一个字节; 字符串常量:一对双引号括起来的字符序列。C语言中规定以 0作为字符串结束标志。 第1章 C语言概述 1.3.4 运算符与表达式 1.3.4.1 算术运算符 算术运算符:加、减、乘、除、模,用+,-,*,/,%表示, 其中 模%,仅用于整型变量或整型常量; 乘、除、模优先级高于加、减的优先级;结

8、 合方向为从左至右; 1.3.4.2 赋值运算符及其表达式 赋值运算符:“=”; 其作用是将一个数据赋给一个变量; 在“=”之前加上其它运算符可构成复合运算 符,如+=等; 第1章 C语言概述 1.3.4.3 增1、减1运算符 i+(或i-):表示在使用该表达式值之后将i值加1(或减1)。 +i(或-i):表示在使用该表达式值之前将i值加1(或减1)。 1.3.4.4 关系运算符 关系运算符:, =, =, = =,!=; 前4个运算符的优先级高于后2个。结合方向是 自左向右。 1.3.4.5 逻辑运算符 逻辑运算符:“&”(逻辑与)、“|”(逻辑或)和“!”(逻辑非)。 其中“&”和“|”为

9、自左向右结合方向;逻辑运算 符的操作对象应为零或非零整数值。 第1章 C语言概述 1.3.4.6 位运算符 位运算符: &, |, , , 。 在位运算符中,的优先级最高,其次是,然后 依次是&, , |。 1.3.4.7 逗号运算符及其表达式 逗号运算符:“,”; 其一般形式:,; 执行过程:先求表达式1的值,再求表达式2的值,表达式2的值就是整 个逗号表达式的值。 1.3.4.8 条件运算符及其表达式 条件运算符: ? :;一般形式:?:; 执行过程:先计算的值,如果值为真,则计算值, 并把该值作为条件表达式值. 若值为假,则计算的值,并将该值作为条件表达式的值。第1章 C语言概述 1.3

10、.5 数据的输入与输出 1.3.5.1字符数据的输入与输出 putchar函数 格式:putchar(c); 功能:向终端输出一个字符。 getchar函数 格式: getchar( ); 功能:从键盘上接收输入的一个字符。 第1章 C语言概述 1.3.5.2 数据按格式输入与输出 printf函数 格式:printf (“格式控制”,输出表列); 说明:“格式控制”是用双引号括起来的字符串。包括格式 说明、普通字符和转义字符。 scanf函数 格式:scanf(“格式控制”,地址表列); 说明:“可以同时输入多个任何相同(不同)类型的数据。 “格式控制”的含义同printf函数;地址表列是由

11、“&+ 变量名”组成,多个地址之间用“,”分隔。 格式控制符说明如下表:第1章 C语言概述格式字符功能d按十进制形式输出带符号的整数(正数前无+号)o按八进制形式无符号输出(无前导0)x按十六进制形式无符号输出(无前导0 x)u按十进制无符号形式输出c按字符形式输出一个字符f按十进形式输出单、双精度浮点数(默认6位小数)e按指数形式输出单、双精度浮点数s输出以结尾的字符串ld长整型输出lo长八进制整型输出lx长十六进制整型输出lu按无符号长整型输出m格式字符按宽度m输出,右对齐-m格式字符按宽度m输出,左对齐m,n格式字符按宽度m,n位小数,或截字符串前n个字符输出,右对齐-m,n格式字符按宽

12、度m,n位小数,或截字符串前n个字符输出,左对齐第1章 C语言概述 1.3.6 分支语句 1.3.6.1 C语句概述(C语句分为5类): 控制语句:完成一定的控制功能; if( )else : (条件语句); for( ) ; while( ); do_ while( ) : (循环语句); continue : (结束本次循环语句); break : (中止执行switch或循环语句); switch : (多分支选择语句); go to : (转向语句); return : (从函数返回语句); 函数调用语句:函数调用语句加一个分号; 空语句 : 由单独一个分号组成; 复合语句: 用 把一

13、些语句括起来; 第1章 C语言概述1.3.6.2 3种基本结构 顺序结构:按从上到下的顺序依次执行。 选择结构:通过对一个特定条件的判断来选择一 个分支执行,常见的语句类型为: ifelse语句和switch语句。 循环结构: 在给定的条件下,重复执行某段程 序,直到不满足条件为止。它包括三 种类型的语句:while语句、do while语句和for语句。 第1章 C语言概述1.3.6.3 条件语句 if语句的第一种形式: 格式:if(表达式)语句 功能:首先计算表达式的值,若表达式的值为 “真”(为非0),则执行语句;若表达式的值 为“假”(为0),不执行语句。 if语句的第二种形式: 格式

14、:if(表达式)语句1 else 语句2 功能:首先计算表达式的值,若表达式的值为 “真”(为非0),则执行语句1;若表达式 的值为“假”(为0),则执行语句2。第1章 C语言概述 if语句的第三种形式: 格式:if(表达式1) else if(表达式2) else if(表达式3) else if(表达式n) else 功能:首先计算表达式的值,若第n个表达式的值为“真”(非0),则执行语句n,若所有的表达式的值都为“假”(0),则执行语句n+1。 注意:在if和else后面可以只含有一个内嵌的操作语句,也可以含有多个操作语句,此时应用花括号“ ”将几个语句括起来,构成一个复合语句。 if的

15、个数一定不小于else的个数。else总是与它上面最近的且未曾使用过的if相配对。第1章 C语言概述 1.3.6.4 开关(switch)语句 一般形式如下: switch(表达式) case常量表达式1:语句1 case常量表达式2:语句2 case常量表达式n:语句n default:语句n+1 执行过程:首先计算switch后面圆括号内表达式的值,若此值等于某个case后面的常量表达式的值,则转向该case后面的语句去执行;若表达式的值不等于任何case后面的常量表达式的值,则转向default后面的语句去执行;如果没有default部分,直接转到switch语句后面的语句去执行。第1章

16、 C语言概述1.3.7 循环语句1.3.7.1 go to语句 一般形式: 语句标号:语句; if(条件表达式) go to 语句标号; 说明:语句标号必须用标识符表示,go to语句与if语句一起构成循环结构;当条件表达式成立时,重复执行语句标号到if语句之前的内容。 注意:go to 语句的用法不符合结构化原则,一般不宜采用。 第1章 C语言概述1.3.7.2 while语句 格式:while(表达式) 语句 功能:当表达式的值为非0时,执行while语句中的循环体;当表达式的值为时,结束循环,继续执行循环体下面的语句。 注意:循环体如果包含一个以上语句,应该用花括弧括起来,以复合语句的形

17、式出现,否则while语句范围只到while后面第一个分号处。第1章 C语言概述1.3.7.3 dowhile语句 格式:do while(表达式) 功能:先执行一次指定的语句,然后判断表达式的值,当表达式的值为非零(“真”)时,返回重新执行该语句,如此反复,直到表达式的值等于0为止,此时循环结束。 注意:循环体部分如果有多个语句,则必须用左右花括号括起来,使其形成复合语句。第1章 C语言概述1.3.7.4 for语句 格式:for(表达式1;表达式2;表达式3) 循环体语句 执行过程:先计算表达式1的值;然后计算表达式2 的值,若结果为真(非0),则执行后面的循环体中的各语句;若为假,则结束

18、循环;进行表达式3 的计算,至此完成一次循环;再次计算表达式2 的值,开始再次循环,直到计算表达式2的值为0,中止循环。 注意:for 语句中条件测试总是在循环开始时进行。如果循环体部分是多个语句组成的,则必须用左、右花括号括起来,使其成为一个复合语句。 省略表达式1时,其后的分号不能省略。如果表达式2省略,即认为表达式2始终为真。 第1章 C语言概述1.3.7.6 break语句和continue语句 格式:break; 功能:break语句可以用于switch语句或循环语句中。在switch语句中,其作用是跳出switch语句,转入switch外的下一个语句;在循环语句中,其作用是跳出该层

19、循环,转到下一个语句。 注意:break语句不能跳出多层循环,如果需要跳出多重循环可以用goto语句实现。 格式:continue; 功能:跳过循环体中位于continue语句后面的尚未执行的语句,转去判断是否继续进行下一次循环。 注意:continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束循环,不再进行判断。第1章 C语言概述1.3.8 数组1.3.8.1一维数组的定义、引用和初始化1. 一维数组的定义格式:类型说明符 数组名常量表达式;功能:定义一维数组,常量表达式表示数组元素的个数。注意:数组名后面是方括弧,不是圆括弧。 常量表达式表示元素个数,即数组的长

20、度。 数组元素的下标是从0开始的。下标最大值为:常量 表达式值减1。 常量表达式可是常量和符号常量,不能是变量。 数组必须先定义,后使用。 第1章 C语言概述2. 一维数组元素的引用 数组元素表示形式为:数组名下标。3. 一维数组的初始化 int a10=0,1,2,3,4,5,6,7,8,9; 可以只给一部分元素赋初值,后几个元素值为0。 在全部数组元素赋初值时,可以不指定数组长度。 例如:int a5=1,2,3,4,5;或 int a =1,2,3,4,5;1.3.8.2二维数组的定义、引用和初始化1二维数组的定义 格式:类型说明符 数组名常量表达式1常量表达式2; 功能:定义一个二维数

21、组。表达式1是数组元素的行数, 表达式2是数组元素的列数。第1章 C语言概述2二维数组的引用 二维数组元素的表示形式为:数组名下标下标 注意: 引用二维数组时,逐个元素引用,不能引用整个数组。 使用数组元素时,下标值应在已定义的数组的范围内。3二维数组的初始化 分行给二维数组赋初值。 例如:int a34=1,2,3,4,5,6,7,8,9,10,11,12; 将所有的数据写在一个花括号内。 例如:int a34=1,2,3,4,5,6,7,8,9,10,11,12; 对部分元素赋初值(没有赋值的元素的值都是0)。 例如:int a34=1,2,0,0,3,5,6; 注意: 如果对全部元素都赋

22、初值,则定义数组时对第一维 的长度可以不指定,但第二维的长度不能省略。第1章 C语言概述1.3.8.3 字符数组与字符串1字符数组定义形式 一维数组:char 数组名常量表达式; 二维数组:char 数组名常量表达式1常量表达式2;2字符数组的初始化1)赋值给数组中的各个元素。 例如:char c=w, , e, y, d ; 注意: 如果花括号中提供的数值个数大于数组长度,则作语法错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中的前面那些元素,其余元素自动定为空字符。 如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度。 用字符串常量使字符数组初始化。char c6

23、=china;第1章 C语言概述3. 字符数组的引用 字符数组的引用同前面其它类型数组元素引用一样。4. 字符串和字符串结束标志 字符串常量是用双引号括起来的一串字符,且用0作为 字串结束标志,它占内存空间,但不计入串的长度。 注意:可以通过赋初值隐含确定数给长度。 例如:char str =“china”;/*串的长度为6;自动末尾加0*/。6. 字符数组的输入输出 逐个字符输入或输出:scanf和printf;getchar和putchar。 整个字符串一次输入或输出: 例如:char c =china; printf (%s,c); 注意:输出字符不包括结束符0。用“%s”格式时,pri

24、ntf中的输出项是数组名。如果数组长度大于字符串实际长度,也只输出到遇到0结束。第1章 C语言概述7字符串处理函数 puts(字符串):将一个字符串输出到终端。 gets(字符数组):从终端输入一个字符串到字符数组。 strcat(字符串1,字符串2):连接两个字符串,把字符串2 接到字符串1的后面,结果放在字符串1中。 注意:字符串1必须足够大,以便能容纳连接后的新字 符串。连接的两个字符串后面都有一个0,连接 时将字符串1后面的0取消,只在新串的最后保 留一个0。 strcpy(字符数组,字符串):字符串拷贝到字符数组中去。 注意:字符数组必须足够大,以便能容纳被拷贝的字 符串。拷贝时连同

25、字符串后面的0一起拷贝到字 符数组中。 不能用赋值语句将一字符串常量或字符数组直 接赋给一个字符数组。 第1章 C语言概述 strcmp(字符串1,字符串2): 按ASCII码值大小比较,将两个字符串自左至右逐个字符相比,直到出现不同的字符或到0为止。如果全部字符相同,则认为相等,如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。比较的结果由函数值带回。 注意:字符串1=字符串2,函数值为0;字符串1字符串2,函数值为0;字符串1字符串2,函数值为pf2 表示pf1处于高地址位置; pf1成员名;用指针变量来指向结构体数组,用指针变量引用结构体数组的元素。 第1章 C语言概述1.3.

26、11.5指针与链表链表是一种常见的数据结构,我们可以动态地进行存储分配。链表是由被称为结点的元素构成的,结点的多少根据需要而定。每个结点都由两部分组成:一是数据部分,即用户需要处理的数据;二是指针部分,存放下一个结点的地址。链表中的结点是通过指针链接在一起的链接原则:前一个结点指向下一个结点;只有通过前一个结点才能找到下一个结点。一个链表首先要知道表头指针,一个结点一个结点的链接,直到最后一个结点,该结点不再指向下一个结点,它的地址部分放一个“NULL”(表示空结点),它称为表尾。第1章 C语言概述 把结构体变量用作链表中的结点。一个结构体变量包括若干成员,它们可以是数值型、字符型、数组型,也

27、可以是指针类型。用指针类型成员来存放下一个结点的地址非常方便。建立动态链表,就是一个一个地开辟结点和输入各结点数据,并建立前后相链的关系。在建立动态链表时,链表上的每个结点不是静态定义好的,而是根据需要随时从内存中申请得到的,同时也根据需要随时释放不需要的结点。为此,C语言系统提供了动态申请和释放内存的库函数malloc( n ):其作用是在内存的动态存储区中分配一个长度为n个字节的连续空间。此函数的返回值是一个指向已分配存储单元的起始地址的指针。free( p ):其作用是释放由p 指向的内存区,使这部分内存区能被其他变量使用。第1章 C语言概述 从链表中删除一个指定结点,首先要查找这个结点

28、,如果找到就将其删除,否则将不执行删除操作。 实际上删除一个结点,并不是真正将它从内存中删掉,而是把它从链表中分离出来,撤消原来的链接关系。 在链表中插入一个新结点,首先要找到指定结点,然后在它后面插入一个新结点,断开原来的链接,把新结点的地址赋给指定结点的指针,把指定结点的下一个结点的地址赋给新结点的指针。这样就插入了一个结点。 第1章 C语言概述1.3.11.6共用体 共用体是一种特殊的结构,它的特点是各个成员共享同一段存储单元。如果在共用体中有若干个不同类型的成员,在一瞬间只有一个成员起作用,实际是最后一个存放成员起作用。 共用体的定义: union 结构体名 数据类型 成员名1; 数据

29、类型 成员名2; 数据类型 成员名3; 数据类型 成员名n; ; 结构体和共用体可以互相嵌套。可以用“.”或“-”运算符来访问共用体中的成员。第1章 C语言概述 注意共用体和结构体的不同: 存储方式: 结构体的各个成员各自占用自己的存储单元,各有自己的地址,各个成员所占的存储单元的总和一般就是结构体的长度。 而共用体是各个成员共享同一段存储单元,起始地址相同,占用存储单元最多的成员的长度就是共用体的长度。 初始化: 结构体变量可以初始化,共用体变量不能初始化。第1章 C语言概述1.3.11.7 枚举 如果一个变量的取值范围有限,可以定义为枚举类型。枚举的一般定义形式为: enum 枚举类型名取

30、值1,取值2,取值n; 其中, 中的值称为枚举元素或枚举常量,C在编译时按定义的顺序使他们的值分别为0、1、2等,依次加1,也可以在定义枚举类型的同时为其中的枚举常量赋值。枚举类型定义之后,就可以定义相应的枚举常量。1.3.11.8类型定义 在C语言中除了使用C提供的标准类型名(如int、char等),还可以用typedef声明新的类型名来代替已有的类型名。 定义的一般形式为:typedef 类型名 新类型名 这样就可以用新类型名来定义变量。第1章 C语言概述1.3.12位运算与文件1.3.12.1位运算符位逻辑运算符号:(按位取反)、&(按位与)、|(按位或)、(按位异或)。位移位运算符:(

31、按位右移)。位自反赋值运算符:&=、|=、=、=。1.3.12.2位运算符的运算规则 移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移有关。 如果是左移,则规定补入的数全都是; 如果是右移,还与被移位的数据是否带符号有关。若是不带符号的数据,则补入的数全都为;若是带符号的数据,则补入的数据为原数的符号位上的数。 第1章 C语言概述位运算符的运算规则如表所示。 第1章 C语言概述1.3.12.5文件 1. 文件类型指针: 文件结构是由系统定义的,取名为FILE。有了FILE类型以后,可以用它来定义文件类型指针变量,以便存放文件的信息, 2. 文件的打开与关闭: C语言和其他高级语言一

32、样,对文件读写之前必须先打开文件,在使用文件之后应关闭该文件。文件的打开与关闭是通过调用fopen和fclose函数来实现的。 3. 字符读写函数: fputc( )、fgetc( )、putc( )和getc( )这是两组字符读写函数,它们均用于从文件中读出一个字符,或把一个字符写入文件。它们与函数putchar()和getchar()的不同在于,前者是针对文件操作,而后者是针对标准输入输出设备操作的。第1章 C语言概述 4. 字符串读写函数: fgets( )和fputs( )用于从指定的文件中读出一个字符串或把一个字符串写入指定的文件中。 5格式读写函数: fscanf( )和fprin

33、tf( ),他们可以实现对文件的格式读写。它们与scanf( )和printf( )的区别在于,这两个函数是对磁盘文件进行读写,而不是对标准输入输出设备进行读写。 6数据块读写函数: fread( )和fwrite( )用来对文件进行数据块的读写,调用一次函数可读或写一组数据。 第1章 C语言概述 7. 文件定位函数: ftell( )可返回文件指针的当前值;Fseek( )用于使文件指针在文件中移动;rewind( )使文件fp的位置指针指向文件开始。 8. 文件的检测: feof( )专门用作二进制文件的结束标志,也可作为文本文件的结束标志。如果文件指针已到文件末尾,则函数返回非0值;否则

34、,返回0。 ferror( )用来检测文件读写时是否发生错误,若未发生读写错误,则返回0值,否则,返回非0值。 clearer( )用于将文件的出错标志和文件结束标志置0。第2章 C程序设计开发环境介绍 2.1 Turbo C 2.0集成开发环境2.1.1 Turbo C 2.0集成开发环境 Turboc 2.0是Borland公司于1987年开发的C语言源程序处理软件。该软件具有速度快、效率高、功能强的特点,它是当时软件开发的主流工具。2.1 Turbo C 2.0集成开发环境2.1.1.1、Turbo c 2.0的启动 Turboc 2.0可由纯DOS环境或Windows平台下的MS_DO

35、S启动。若Turbo c 2.0安装在D:的根目录下,我们就可以进行如下操作:D:cd turboc 2D: turboc 2D: turboc 2tc 启动后就可以进入Turboc 2.0集成编译环境,其界面如图所示。 2.1 Turbo C 2.0集成开发环境2.1 Turbo C 2.0集成开发环境2.1.1.2菜单命令简介File菜单:Load(F3):加载文件。Pick(Alt+F3):选择文件。New:建立新的源程序文件。Save(F2):将编辑区中的文件存盘。Write to:文件另存为。Directory:显示源程序文件的存储路径。Change dir:改变目录。OS Shel

36、l:暂时退出TC2.0到Dos提示符下。用Exit返回到TC环境。Quit (Alt + X):退出TC2.0到Dos提示符下。 2.1 Turbo C 2.0集成开发环境Run菜单:Run(Ctrl+F9):运行程序。Program reset(Ctrl+F2):序重起。Go to cursor(F4): 调试程序时,使程序运行到光标处。Trace into(F7): 使程序运行时有亮条显示当前执行的函数或过程的位置。Step over(F8): 单步执行命令,一次执行一条语句。User screen(Alt+F5):在用户窗口和编辑窗口之间进行切换。用于查看结果。 2.1 Turbo C

37、2.0集成开发环境Compile菜单:Compile to obj :编译源程序生成目标文件。Make EXE file :生成可执行文件。Link EXE file :连接成可执行文件。Build all : 编译工程中的所有文件,打包生成可执行文件。Primary C file :指定编译的主文件。Get info : 获得当前的相关信息(路径、源文件名及大小、编译中的错误数等。2.1 Turbo C 2.0集成开发环境Project菜单:Project name :工程文件(.PRJ)名Break make on : 终止编译。Auto dependencies:编译时源文件与目标文件的

38、时间对应检查开关。Clear project: 清除工程文件名。Remove messages: 删除信息窗口中的信息。2.1 Turbo C 2.0集成开发环境Options菜单:Include directories : Tc2.0系统文件所在目录。Library directories : Tc2.0库文件所在目录。Output directory :输出目录即生成目标文件和可执行文件所在目录。Turbo C directory : Tc.exe文件所在的目录。Pick file name : 定义加载的Pick文件名。Current pick file: 当前加载的Pick文件目名。2

39、.1 Turbo C 2.0集成开发环境Break/Watch菜单:Add watch : 在监视窗口插入监视表达式。Delete watch :删除监视窗口当前监视表达式。Edit watch :在监视窗口编辑监视表达式Remove all watches :从监视窗口删除所有的监视表达式。Toggle breakpoints Ctrl-F8 :设置或删除光标所在的行为断点。Clear all breakpoints:清除所有的断点。View next breakpoints:移动光标到下一个断点。2.1 Turbo C 2.0集成开发环境2.1.1.3 程序的建立编辑与保存 按功能键F10

40、后,用光标移动键将亮条选中File菜单或用Alt-F打开File菜单,再用鼠标或“”、“”键选中“New”命令项回车,这样就可以建立一个新文件。对源程序进行建立、修改等编辑操作之后,要按F2键保存程序。2.1 Turbo C 2.0集成开发环境2.1.1.4 源程序的编译连接和运行 可以用“Run” 菜单中的“Run”命令或按“Ctrl+F9”键,对源程序进行编译、连接和运行。源程序在建立、编辑过程中,如果有语法错误,在对源程序进行编译的过程中,TC2.0编译系统会给出错误信息提示,并停止编译且用亮条或彩条指示出错的语句行,用户对源程序进行修改之后,再进行编译。 对源程序进行编译之后,系统将生

41、成扩展名为“.obj”的目标文件,然后系统经过目标文件的连接(link)生成扩展名为“.exe”的可执行文件。2.1 Turbo C 2.0集成开发环境2.1.1.5看运行结果 TC2.0集成开发环境中有两个窗口,一个是编辑窗口,另一个是用户窗口。源程序的运行结果显示在用户窗口。而用户窗口是隐含的。用户要想看到运行结果,可以在编辑窗口中按下Alt+F5键进行编辑窗口和用户窗口的切换。2.1.1.6 执行文件的生成与运行 在上面的运行步骤中系统首先生成可执行文件后再执行它。用户在用户窗口中看见的运行结果,是系统执行扩展名为“.EXE”的可执行文件的结果。2.1 Turbo C 2.0集成开发环境

42、2.1.1.7其他编译和调试操作 调试程序时,按下F8键,可以单步执行程序;利用Break/watch菜单中的Add watch命令可以进行单步执行方式下的变量监视; 利用Break/watch菜单中的Toggle breakpoint命令可以设置断点,使程序运行到断点时暂停,按Alt-F9使程序从中断处继续运行。还有一些其他的调试操作。2.1 Turbo C 2.0集成开发环境2.1.2 常见典型错误输入时括弧不配对,引号不配对,逗号、分号混淆。输入函数时,变量名后没有存储位置标识符&。scanf()和printf()函数的格式与控制字符错误。变量类型与控制格式符不对应。if语句中,语句条数

43、多于1条时,没有使用复合语句标志。使用开关语句时没有恰当的附带break语句。循环体应该加的复合语句标志没加。字符数组存储地址的引用与非字符数组混淆。函数的形参类型与实参类型不一致。变量的作用域不明确,造成运行结果错误。对没有打开的文件进行了读、写操作。对已经存在的文件进行盲目的写操作使文件原来的内容被破坏。 2.2 WinTC1.9.1集成开发环境 Win-TC是windows平台下的C语言开发工具,它使用了Turbo C 2.0为内核,提供Windows平台的开发界面,因此也就支持windows平台下的功能。如剪切、复制、粘贴和查找/替换等操作。 与Turbo C2.0相比,Win-TC在

44、功能上也进行了很大扩充,提供了诸如C内嵌汇编等功能。此外,还带有点阵字模工具、注释转换等工具集,为程序的开发提供了很大的帮助。 Win-TC简繁双语版可以正常运行于98及其以上的简体及繁体WINDOWS操作系统之上。 2.2 WinTC1.9.1集成开发环境2.2.1 Win-TC的特点可以充分利Windows支持剪贴板和中文的特点。Inciude和Lib路径可自动定位,不用手动设置。具备编译错误捕捉功能。支持C内嵌汇编从而实现C/ASM混合编程。支持C扩展库(自定义LIB库)支持语法加亮功能,并可以自定义设置。允许自定义设置输入风格,能实现与VC类似的输入风格。可选择是否生成“.asm”、“

45、.map”或“.obj”文件,甚至可以指定只生成“.exe”文件。稳定的文件操作功能,支持历史记录列表和使用模块。具有行标计数的功能,并可以设置样式。2.2 WinTC1.9.1集成开发环境2.2.3.1基本布局 Win-TC的基本布局如图所示: 上方显示的是菜单栏和工具栏,包括文件操作(新建、打开、保存等)、编辑操作(剪切、复制、粘贴、查找、替换等)、程序运行操作(编译链接和编译链接并运行命令)等; 中间白色区域是C源程序编辑区,我们可以在里面对C程序进行编写、修改等工作; 下方“输出”区域是程序的输出提示,用于显示错误信息和其他的编译信息等。 2.2 WinTC1.9.1集成开发环境2.2

46、 WinTC1.9.1集成开发环境2.2.3.2使用C内嵌汇编 使用C内嵌汇编,既可发挥汇编的高效性,又可以发挥C的易用性。在Win-TC中,你既不用记复杂的编译指令,也不用去额外找汇编器。你所需的就只要编写好代码,然后再选择“编译连接并运行”选项即可。 2.2.3.3带参数运行程序 在Win-TC中,提供了带参数运行的方式,可以让用户很容易地实现带参数程序的执行。具体操作如下: 选择“运行” | “使用带参数运行”选项,此时“使用带参数运行”选项前面的“参”字图标凹下去,再单击一下“参”字图标弹起即取消了带参数运行。运行程序,即选择“运行” |“编译连接并运行”选项,程序运行后将会提示用户输

47、入参数。输入参数,单击“完成”按钮即可实现带参数运行。2.2 WinTC1.9.1集成开发环境2.2.3.5中文DOS环境运行 Win-TC自带了中文DOS环境,在中文DOS环境下,不仅可以达到直接显示中文文本的目的,而且可以实现中文输入。 在编译连接并生成可执行的“.exe”文件后,选择“超级工具集”里面的“中文DOS环境运行”选项,将弹出“中文DOS环境运行”对话框,选择好后单击“运行程序”按钮,将启动中文DOS运行程序。 注意:中文DOS运行工具将严格区分可执行程序类型,32位PE和16位NE程序将限制运行,也就是说,只能运行DOS EXE程序。 2.2 WinTC1.9.1集成开发环境

48、2.2.3.6点阵字模工具 图形模式下显示汉字,一直是一个很难解决的问题。Win-TC在这个问题上采用了一个比较好的解决方式字模提取。使用Windows丰富的字体资源,将其生成的字型提取成点阵字模方式,然后使用一个简单的函数(Win-TC已自带)读取字模显示,形成了一种小型集成字库的解决方案。 2.3 Virsual C+6.0集成开发环境 2.3.1编辑源程序 用Visual C+6.0来编制一个C程序,可以分为两个步骤: 创建工程 先运行Visual C+6.0,选择菜单file下的new项,会出New对话框,如图2-10所示。 在“New”对话框中,选择Projects标签。选择Win3

49、2 Console Application选项,然后在Project Name文本框中输入新建工程的名称。 在Location文本框中输入或选择新建工程所在的位置。单击“OK”按钮,进入“Win32 Console Application-Step1of 1”界面。 选择An empty project项,单击Finish按钮,系统显示“New Project Information”界面。 单击“OK”按钮完成新工程的创建过程。系统自动返回到Visual C+6.0主窗口。即进入了真正的编程环境。 2.3 Virsual C+6.0集成开发环境创建文件 打开工程文件,选择菜单file下的ne

50、w项,在“New”对话框中,选择File标签。 单击“C+ Source File”选项,在“File”文本框中输入文件名,单击“OK”按钮,系统自动返回Visual C+6.0主窗口,并显示文件编辑窗口。 在文件编辑窗口中输入源程序。编译和连接 源程序文件编辑完成后,要进行编译、连接生成可执行目标代码文件。具体操作如下: 选择主窗口菜单栏中的“Build”选项。在弹出的下拉菜单选择“Build”命令(或按键盘上的功能键F7),系统开始对程序文件进行编译和连接,并生成以项目名称命名的可执行目标代码文件.exe。 2.3 Virsual C+6.0集成开发环境执行 执行程序时,可选择“Build

51、” 菜单中的“Execute”命令,或者单击主窗口编译工具栏上的按钮(对应的快捷键是Ctrl+F5)。 程序运行成功,屏幕上会输出执行结果,并提示信息:Press any key to continue,按任意键系统自动返回Visual C+6.0主窗口。2.3 Virsual C+6.0集成开发环境2.3 Virsual C+6.0集成开发环境2.3 Virsual C+6.0集成开发环境2.3 Virsual C+6.0集成开发环境2.3 Virsual C+6.0集成开发环境2.3 Virsual C+6.0集成开发环境3.1 软件开发过程3.1.1 软件概念 在现代软件工程中软件概念不

52、仅指程序本身,还包括规范而完备的文档材料。其中文档是软件“质”的部分,而程序则是文档代码化的表现形式。3.1.2 软件的特点 软件生产是逻辑思维,集中于开发而不是制造,因此起决定作用的是人的智能的高效率的发挥。这与开发者的个人技术水平和工作作风有很大的关系。3.1.3 软件开发的一般步骤 研究软件的生存周期可分为三个大阶段:计划阶段,开发阶段和维护阶段。 计划阶段:这一阶段的任务是进行问题定义,可行性研究和需求分析。 开发阶段:这一阶段的任务就是进行设计、编码和测试。 维护阶段:维护阶段的任务就是通过各种必要的维护活动使系统持久地满足用户的需要,通常通过四类维护活动,改正性维护,既诊断和改进在

53、使用过程中发现的软件错误;适应性维护,既修改软件以适应变化的环境;完善性维护,根据用户的要求改进或扩充软件使它更加完善;预防性维护,既修改软件为将来的维护活动做准备。 3.1.4 软件开发时常见的错误观念只要有对总目标的一般性描述,就可以开始写代码了,其他细节问题可以再补充。给出程序,并且运行了任务就算完成任务。软件灵活性大,易于修改。没有必要进行评审进度耽误了,可以增加人员。软件工作直到交付使用为止3.2 结构化程序设计 3.2.1结构化程序设计的一般概念程序设计优劣的判定标准 (1)功能应能满足用户目标要求;(2)可靠性应达到预定水平;(3)用户界面友好;(4)在规定的条件下执行时间要短;

54、(5)资源消耗少;(6)可维护性好;(7)可移植性高;结构化程序设计原则 (1)大型程序,按功能划分模块。(2)每一个基本程序单元,具有“独立程序“的特征,既单入口,单出口;强调由3种基本结构(顺序、选择、循环)组成;严格限制使用goto语句;不包含无限循环,即程序执行时间是有限的;程序中所有语句都应有执行的机会;书写格式清晰。按上述原则进行设计,就称为结构化程序设计。 结构化程序设计的优点在于能使结构清晰,风格固定,便于理解、交流和维护。其缺点是设计出的程序运行效率有所降低。 3.2.2自顶向下逐步求精模块程序设计思想程序模块化的优点包括:(1)便于将复杂问题转化为个别小问题。(2)便于从抽

55、象到具体地进行程序设计。(3)便于测试和维护。采用模块化原则设计程序时,某个模块所包含的信息(过程和数据)其他模块不需要知道,既不能访问,以体现模块的独立性。(4)便于理解分析程序。在对模块化程序进行分析时,由于每个模块功能明确,彼此独立,所以可以采用自顶向下的分析方法,首先确定每个模块的功能,进而理解整个程序。 自顶向下逐步求精的程序设计方法 自顶向下设计的一个重要特点是,对某一层来说,下一层设计的细节是隐藏起来的,只要那些必须通过接口的数据和控制才有定义。 如果一个数据结构被整个包含在某个低层模块之中。在设计到达该层之前,没有必要进行描述。但当数据必须由某层的几个模块共享时,则必须在进展到

56、该层之前就选定数据结构。 逐步求精的特点是考虑问题时先整体后局部,先抽象后具体。它要求从问题的全局出发,首先明确“做什么“,接着将其进一步分解成若干子任务分而治之。一步一步精细化,每步都向程序的最终形式接近一点,直到获得一个在你所使用的计算机系统上可执行的程序为止。 由此可见,通常把自顶而下逐步求精及模块化设计结合起来实现程序的结构化设计。 程序中常见的错误有两种:一种是语法错误:另一种是逻辑错误。 语法错误一般会在源程序被编译时由编译程序及时发现,因此相对比较容易排除。 而程序的逻辑错误常常是潜在的。例如,在程序中使用了零作除数,将导致程序执行时出现异常,而这种错误编译程序可能无法查出。 这

57、就要求程序设计者根据设计文挡。反复地,不厌其烦地阅读程序并精心设计测试用例,力求及时发现程序中的错误。 测试的目的是发现程序中的错误,而程序的目标是开发出高质量的完全符合用户需求的程序,因此,发现错误必须要改正错误,这又是调试的目的。调试是测试阶段最困难的工作。 程序测试过程涵盖了整个程序生命周期的过程。包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统测试,验证程序是否合格、能否交付用户使用等。3.3.1程序测试原则在测试阶段,应遵从以下测试原则。 设计测试用例 设计测试用例时,应给出测试的预期结果。 设计非法输入的测试用例 一个程序,不仅是当输入是合法的时候,

58、能正确运行,而且当有非法输入(有意的和无意的)时,还能够拒绝接受那些非法输入并给出提示信息。 进行回归测试 对于程序的任何修改都有可能引入新的错误,用以前测试用例进行回归测试,有助于发现由于修改程序而引入的新错误。 集中测试容易出错的程序段 对一些测试进行统计的结果表明:一段程序中已发现的错误数越多,则其中存在错误的概率也就越大。为了提高测试的效率,在进行深入的测试时,要集中测试那些容易出错即出错多的程序段。 妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。 一个好的测试用例是能够发现至今尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。3.3.2. 程

59、序测试的常用方法 从是否需要执行被测程序的角度,程序测试方法和技术分为静态测试和动态测试;同时按功能他们又被划分为白盒测试和黑盒测试。 静态测试:静态测试包括代码检查、静态结构分析、代码质量度量等。 动态测试:动态测试是基于计算机的测试,是为了发现错误而执行程序的过程。 白盒测试方法:也称结构测试。它是将程序视为一个透明的盒子,即根据程序的内部结构和处理过程,对程序的所有逻辑路径进行测试。 黑盒测试方法 黑盒测试方法简称黑盒法,也称功能测试。它是着眼于程序的外部特征,而不考虑程序的内部逻辑构造。 黑盒法是在程序的接口上进行测试,看它能否满足功能要求,输入能否正确接收,并能否输出正确的结果,以及

60、外部信息(如数据文件)的完整性能否保持。 黑盒法主要有等价类划分法、边界值分析法、错误推测法和因果图法等。3.3.3程序测试过程 程序测试是保证程序质量的重要手段。程序测试过程分4个步骤,即单元测试、集成测试、验收测试和系统测试。 单元测试 单元测试是对程序设计的最小单位模块(程序单元)进行正确性检验测试。 单元测试主要针对模块的以下5个基本特性进行:模块接口测试测试通过模块的数据流;数据结构测试;重要的执行路径检查;出错处理测试;影响以上各点及其他相关点的边界条件测试。 单元测试方法可以采用静态分析和动态测试。这两种测试可以互补。 在进行模块测试时,必须设计一个驱动模块和若干个桩模块。 驱动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论