




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第 一 章,C语言概述,2,教学目标,1.了解C语言的发展历史和特点 2.熟悉C语言程序的基本结构 3.掌握C语言常见算法及其用程序流程图和N/S图表示算法 4.熟悉C语言字符集、标识符号与关键字的相关知识 5.掌握在Turbo C环境下调试C程序的上机步骤,3,教学要点,C语言程序的基本结构 算法的描述,4,C语言的发展过程,C语言是国际上流行的、很有发展前途的计算机高级语言。它既可以用来编写系统软件,也可以用来编写应用程序。 以前操作系统等系统软件主要采用汇编语言编写。汇编语言依赖于计算机硬件,程序的可读性、可移植性都比较差。为了提高可读性和可移植性,人们希望采用高级语言编写这些软件,但是一般的高级语言难以实现汇编语言的某些操作,特别是针对硬件的一些操作(如:内存地址的读写-直接硬件、二进制位的操作)。人们设法寻找一种既具有一般高级语言特性,又具有低级语言特性的语言,C语言就在这种情况下应运而生。,5,C语言的发展过程,20世纪70年代初 问世 1978 美国电话电报公司(A&T)贝尔实验室 发表 C语言 1983 美国国家标准协会 制定 C语言标准(ANSI C) 1987 美国国家标准协会 公布 新C语言标准(87 ANSI C) 1990 ISO 接收 87 ANSI C 为 ISO C 注:现在使用的各种C语言编译系统(Turbo C、Visual C、Borland C等)虽然基本部分是相同的,但也有些不同,6,C语言的发展过程,ALGOL60,CPL,BCPL,B,C,标准C,ANSI C,ISO C,7,C语言的发展过程,汇编语言 机器语言,低级语言:具有面向硬件系统便于直接访问硬件的特点功能,但没有数据类型,不易阅读、记忆、推广。,C 语言,吸取了高级语言和低级语言优点,兼而有之。, FORTRAN语言 pascal语言 BASIC 语言,高级语言:具有丰富的数据类型和运算符,便于描述数据结构,既具有强有力的表达力,可加快开发速度,提高工作效率,面向用户、便于记忆、书写和阅读等。,8,C语言的特点,1、语言简洁、紧凑、结构清晰、使用方便、灵活; 2、C语言的运算符非常丰富、功能更强大 ; 3、提供了丰富的数据类型; 4、具有结构化的控制语句,用函数作为程序的模块单 位,便于实现程序的模块化; 5、C语言对语法限制不严格,程序设计自由度大; 6、C语言允许直接访问物理地址,能进行位(bit)操作; 7、生成的目标代码质量高,程序执行速度快; 8、C语言编写的程序具有良好的可移植性;,9,C语言程序的基本结构 例子 (1),main( ) printf(“Hello World!n”); 说明: 本程序功能:本程序的功能是输出一行信息:Hello World! 1、main表示“主函数”。每个C语言程序都必须有一个main函数,它是每一个C语言程序的执行起始点(入口点)。main()表示“主函数”main的函数头。 2、用 括起来的是“主函数”main的函数体。main函数中的所有操作(或:语句)都在这一对 之间。也就是说main函数的所有操作都在main函数体中。 3、“主函数”main中只有一条语句,它是C语言的库函数,功能是用于程序的输出(显示在屏幕上),本例用于将一个字符串“Hello World!n”的内容输出。即在屏幕上显示:Hello World! (回车/换行) 4、注意:每条语句用“;”号结束语句。,10,C语言程序的基本结构 例子 (2),main( ) /* 计算两数之和 */ int a,b,sum; /* 这是定义变量,声明部分 */ a=100;b=99; /* 以下3行为C执行语句部分 */ sum=a+b; printf(“sum=%dn”,sum); 说明: 1、同样此程序也必须包含一个main函数作为程序执行的起点。之间为main函数的函数体, main函数所有操作均在main函数体中。 2、/* */括起来的部分是一段注释,注释只是为了改善程序的可读性,在编译、运行时不起 作用(事实上编译时会跳过注释,目标代码中不会包含注释)。注释可以放在程序任何位 置,并允许占用多行,只是需要注意“/*”、“*/”匹配,一般不要嵌套注释。 3、int a,b,sum;是变量声明。声明了三个具有整数类型的变量a,b,sum。C语言的变量必须先声明再使用。 4、a=100;b=99;是两条赋值语句。将整数100赋给整型变量a,将整数99赋给整型变量b。 a,b两个变量分别为123,456。注意这是两条赋值语句,每条语句均用“;”结束。 5、sum=a+b;是将a,b两变量内容相加,然后将结果赋值给整型变量sum。 6、printf(“sum=%dn”,sum);是调用库函数输出sum的结果。%d为格式控制表示sum的值以 十进制整数形式输出。程序运行后,输出(显示):sum=199_ (回车/换行),11,C语言程序的基本结构例子(3),main( ) /* 主函数 */ int a,b,c; /*声明部分定义变量*/ scanf(“%d,%d”, /* main函数体结束 */,int max(int x,int y) /* 计算两数中较大的数 */ int z; /* 声明部分,定义变量 */ if(xy)z=x; else z=y; return (z); /* 将z值返回,通过max带回调用处 */ /* max函数体结束 */,12,C语言程序的基本结构例子(3)介绍,说明: 输入两个整数,计算两者较大的数,并输出。 1、本程序包括两个函数。其中主函数main仍然是整个程序执行的起点。函数max计算两数中较大的数。 2、主函数main调用scanf函数获得两个整数,存入a,b两个变量,然后调用函数max获得两个数字中较大的值,并赋给变量c。最后输出变量c的值(结果)。 3、int max(int x,int y)是函数max的函数头,函数max的函数头表明此函数获得两个整数,返回一个整数。 4、函数max同样也用 将函数体括起来。max的函数体是函数max的具体实现。从参数表获得数据,处理后得到结果z,然后将z返回调用函数main。 5、本例还表明函数除了调用库函数外,还可以调用用户自己定义,编制的函数。,13,C语言程序的基本结构总结,1、C程序由函数构成(C是函数式的语言,函数是C程序的基本单位)(以例1.3说明) 一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其它函数。函数是C程序的基本单位。 被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编写设计的函数。C是函数式的语言,程序的全部工作都是由各个函数完成。编写C程序就是编写一个个函数。 C函数库非常丰富,ANSI C提供100多个库函数,Turbo C提供300多个库函数。,14,C语言程序的基本结构总结,2、一个函数由函数首部和函数体两部分组成 (以例1.3的max函数说明) 函数首部:一个函数的第一行。 返回值类型 函数名(函数参数类型1 函数参数名1,函数参数类型n,函数参数名n) 注意:函数可以没有参数,但是后面的一对()不能省略,这是格式的规定。 函数体:函数首部下用一对括起来的部分。如果函数体内有多个 ,最外层是函数体的范围。函数体一般包括声明部分、执行部分两部分。 声明部分:在这部分定义本函数所使用的变量; 执行部分:由若干条语句组成命令序列(可以在其中调用其它函数); 。,15,C语言程序的基本结构总结,3、C程序书写格式自由 一行可以写几个语句,一个语句也可以写在多行上。 C程序没有行号,也没有FORTRAN,COBOL那样严格规定书写格式(语句必须从某一列开始)。 4、每条语句的最后必须有一个分号“;”表示语句的结束。 函数首部后面不跟分号,16,C语言程序的基本结构总结,5、可以使用/* */对C程序中的任何部分作注释 注释可以提高程序可读性,使用注释是编程人员的良好习惯。 编写好的程序往往需要修改、完善,事实上没有一个应用系统是不需要修改、完善的。很多人会发现自己编写的程序在经历了一些时间以后,由于缺乏必要的文档、必要的注释,最后连自己都很难再读懂。需要花费大量时间重新思考、理解原来的程序。这浪费了大量的时间。如果一开始编程就对程序进行注释,刚开始麻烦一些,但日后可以节省大量的时间。 一个实际的系统往往是多人合作开发,程序文档、注释是其中重要的交流工具。,17,C语言程序的基本结构总结,6、main函数(主函数)是每个程序执行的起始点 (以例1.3说明) 一个C程序总是从main函数开始执行,而不论main函数在程序中的位置。可以将main函数放在整个程序的最前面,也可以放在整个程序的最后,或者放在其它函数之间。,18,一个程序应包括两个方面的内容:,对数据的描述:数据结构(data structure) 对操作的描述:算法(algorithm),著名计算机科学家沃思提出一个公式: 数据结构 + 算法 = 程序,数据结构算法程序设计方法语言工具,完整的程序设计应该是:,算法及其描述,19,算法及其描述,算法:为解决一个问题而采取的方法和步骤。 计算机算法分为两大类别: 数值运算算法(解一元二次方程的算法 ) 非数值运算算法(图书检索、信息查询) 算法的特征: 有穷性:包含有限的操作步骤 确定性:算法中的每一个步骤都应当是确定的 有零个或多个输入:输入是指在执行算法时需要从外界取得必要的信息 有一个或多个输出:算法的目的是为了求解,“解” 就是输出 可行性:算法中的每一个步骤都应当能有效地执行,并得到确定的结果 。,20,例1.4: 求12345,步骤1:先求12,得到结果2 步骤2:将步骤1得到的乘积2再乘以3,得到结果6 步骤3:将6再乘以4,得24 步骤4:将24再乘以5,得120,太繁琐,如果要求121000,则要写999个步骤,算法及其描述简单算法举例,21,S1:使t=1 S2:使i=2 S3:使ti,乘积仍放在变量t中,可表示为: ti t S4:使i的值加1,即i+1 i。 S5:如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则,算法结束。最后得到t的值就是5!的值。,可以设两个变量:一个变量代表被乘数,一个变量代表乘数。不另设变量存放乘积结果,而直接将每一步骤的乘积放在被乘数变量中。设t为被乘数,i为乘数。用循环算法来求结果, 算法可改写:,22,S1:1 t S2:3 i S3:ti t S4:i+2 i S5:若i1000,返回S3。否则,结束。,如果题目改为:求1351000算法只需作很少的改动:,算法简练,23,用这种方法表示的算法具有通用性、灵活性。S3到S5组成一个循环,在实现算法时 要反复多次执行S3,S4,S5等步骤,直到某一时刻,执行S5步骤时经过判断,乘数i已超过规定的数值而不返回S3步骤为止。此时算法结束,变量t的值就是所求结果。,算法及其描述简单算法举例,24,算法的描述,用自然语言表示算法 含义不严格、有歧异性 用流程图表示算法,25,算法的描述流程图,顺序结构,选择结构,26,算法的描述流程图,当型(While型)循环结构,直到型(Until型)循环,27,三种基本结构的共同特点: (1)只有一个入口; (2)只有一个出口;(请注意:一个菱形判断框有两个出口,而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。) (3)结构内的每一部分都有机会被执行到; (4)结构内不存在“死循环”(无终止的循环)。,28,图中没有一条从入口到出口的路径通过A框。,不正确的流程表示:,流程内的死循环,29,小结:,流程图是表示算法的较好的工具。一个流程图包括以下几部分 : (1)表示相应操作的框; (2)带箭头的流程线; (3)框内外必要的文字说明。,30,算法及其描述流程图举例,开始,输入N,i=1,S=S+i,i=i+1,输出S,结束,是,求1+2+3+10的流程图,S=0,i=10,否,31,将求5!的算法用流程图表示,如果需要将最后结果打印出来,可在菱形框的下面加一个输出框。,32,算法的描述N/S图,1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其它的从属于它的框,或者说,由一些基本的框组成一个大的框。这种流程图又称N-S结构化流程图 。,33,算法的描述N/S图,三种基本结构,A B,A,当P成立,A,直到P成立,顺序结构,选择结构,While型循环结构,Untile型循环结构,34,用三种N-S流程图中的基本框,可以组成复杂的N-S流程图。图中的A框或B框,可以是一个简单的操作,也可以是三个基本结构之一。,A框可以是一个选择结构,B框可以是一个循环结构,35,算法的描述N/S图(举例),求1+2+3+10的和,S=0,i=1,S=S+i,i=i+1,当i=10,打印S,36,求5!算法用N-S图表示,也可以改成当型循环,37,N-S图表示算法的优点,比文字描述直观、形象、 易于理解;比传统流程图紧凑易画。尤其是它废除了流程线,整个算法结构是由各个基本结构按顺序组成的,N-S流程图中的上下顺序就是执行时的顺序。用N-S图表示的算法都是结构化的算法,因为它不可能出现流程无规律的跳转,而只能自上而下地顺序执行。,38,算法的描述用伪代码表示算法,概念:伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。 特点:它如同一篇文章一样 ,自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便 、格式紧凑,也比较好懂,也便于向计算机语言算法(即程序)过渡。 用处:适用于设计过程中需要反复修改时的流程描述。,39,算法的描述用伪代码表示算法,“打印x的绝对值”的算法可以用伪代码表示如下: IF x is positive THEN print x ELSE print x 也可以用汉字伪代码表示: 若 x为正 打印 x 否则 打印 -x 也可以中英文混用,如: IF x 为正 print x ELSE print -x,求1+2+3+10。 开始 置s的初值为0 置i的初值为1 当i=10,执行下面操作: 使s=si 使i=i+1 (循环体到此结束) 打印s的值 结束,40,算法的描述用计算机语言表示算法,概念:用计算机实现算法。计算机是无法识别流程图和伪代码的。只有用计算机语言编写的程序才能被计算机执行。因此在用流程图或伪代码描述出一个算法后,还要将它转换成计算机语言程序。 特点:用计算机语言表示算法必须严格遵循所用的语言的语法规则,这是和伪代码不同的。 用处:要完成一件工作,包括设计算法和实现算法两个部分。设计算法的目的是为了实现算法。,41,算法的描述用计算机语言表示算法,求1+2+3+10。 main( ) int i,s; s=0; i=1; while (i=10) s=s+i; i=i+1; printf(”%d”, s); ,42,算法的描述用计算机语言表示算法,求 main( ) int sign=1; float deno=2.0, sum=1.0, term; while(deno=100) sign=-sign; term=sign/deno; sum=sum+term; deno=deno+1; printf(”%f”,sum); ,43,C语言字符集、标识符与关键字,C语言字符集 1.字母 az, AZ 52个 2.数字 09 10个 3.空白符号 包括空格符、制表符和换行符 4.标点和特殊字符 如逗号、分号等 标识符 变量、符号常量、函数的名字 命名规则是:以字母或下划线开头,后面可以跟字母、数字或下划线。 相关特性(1)C语言区分大小写,因此大写字母和小写字母是两个不同的字符; (2)标识符中所能包含的字符个数不同版本的C语言集成环境要求也不一样。 (3)在定义标识符时应遵守“见名知意”的原则,即用有含意的英文单词或短语的缩写作为标识符,以增强程序的可读性。 (4)在C语言中,要求对所用到的标识符“先定义后使用” 。,字符是组成语言的最基本的元素。C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 玄武岩纤维及制品生产线项目建设工程方案
- 2025广东中山市教体系统事业单位招聘事业单位人员79人(第四期)模拟试卷(含答案详解)
- 医院客服笔试题库及答案
- 工程项目环保管理与绿色施工方案
- 2025年电厂土建考试题目及答案
- 2025年农安师范考试题目及答案
- 2025年江西农商联合银行金融科技人才招聘25人考前自测高频考点模拟试题及参考答案详解一套
- 废弃矿山矿渣与废料处置技术方案
- 施工项目验收与交付方案
- 福建体育笔试题目及答案
- 培养“最好的我”新时代品质少年-学校课程规划与实施方案
- 2025年全球及中国晶须碳纳米管行业头部企业市场占有率及排名调研报告
- 犁底层重构施工方案
- 2025年高中政治必修四《生活与哲学》全册基础知识点总结汇编(全册)
- 《工商管理专业导论》课件
- Unit 1 Teenage life单词变形-学生背诵与默写清单-2024-2025学年高中英语人教版(2019)必修第一册
- 铁路技术规章:018铁路军事运输管理办法
- 2024-2025学年广东省深圳市九年级上学期期中数学试题及答案
- 高三物理一轮复习-受力分析、共点力平衡练习(附答案)
- 《疯狂的头发》幼儿园大班艺术课件
- 小阿力的大学校(绘本)
评论
0/150
提交评论