版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计语言程序设计1学习这门课程的目标学习这门课程的目标l高层次的追求高层次的追求l低层次的追求低层次的追求l课程过关课程过关科研和工程中的科研和工程中的计算思维能力计算思维能力工具的开发者工具的开发者与软件人员良好与软件人员良好交流的能力交流的能力第第1章章 C程序设计概述程序设计概述5按对机器依赖性、按对机器依赖性、 接近自然语言的程度、接近自然语言的程度、 语言的发展过程语言的发展过程 机器语言机器语言 汇编语言汇编语言 高级语言高级语言 1.1.1 程序设计语言程序设计语言用于描述计算机程序的符号系统称为计算机程序设计语言。610110000000011000000010111
2、110100 计算计算12-5的机器语言代码的机器语言代码1.1.1 程序设计语言程序设计语言lCPU能理解且能直接执行的指令集合能理解且能直接执行的指令集合 l用机器语言编写的程序形式:用机器语言编写的程序形式: 机器语言机器语言71.1.1 程序设计语言程序设计语言l用机器语言编写程序的优点:用机器语言编写程序的优点:l质量高质量高l占存储空间小占存储空间小l执行速度快执行速度快l能由计算机直接执行能由计算机直接执行l用机器语言编写程序的缺点:用机器语言编写程序的缺点: l依赖于具体计算机依赖于具体计算机l难记忆难记忆l易出错易出错l阅读理解困难阅读理解困难l编程者需了解特定计算机的硬件及
3、指令系统编程者需了解特定计算机的硬件及指令系统机器语言机器语言8汇编语言汇编语言 MOV AL,12D SUB AL,5D HLT 计算计算12-5的汇编语言代码的汇编语言代码1.1.1 程序设计语言程序设计语言l汇编语言是一种符号化的机器语言,用助记符汇编语言是一种符号化的机器语言,用助记符号代替指令操作码、操作数。号代替指令操作码、操作数。l用汇编语言编写的程序形式:用汇编语言编写的程序形式:l汇编语言与机器语言有相同的特点,但要翻译汇编语言与机器语言有相同的特点,但要翻译成等价的指令序列后才能由计算机执行。成等价的指令序列后才能由计算机执行。 9 int main(void) print
4、f(“%dn”,12-5); 计算计算12-5的高级语言代码的高级语言代码1.1.1 程序设计语言程序设计语言l 接近于自然语言和数学语言,在一定程度上与具接近于自然语言和数学语言,在一定程度上与具体计算机无关的符号化语言。体计算机无关的符号化语言。l用高级语言编写的程序形式(以语言为例):用高级语言编写的程序形式(以语言为例):高级语言高级语言101.1.1 程序设计语言程序设计语言l用高级语言编写程序的优点:用高级语言编写程序的优点: l易学易用、代码易理解易学易用、代码易理解l易调试、修改和移植与机器无关易调试、修改和移植与机器无关l用高级语言编写程序的缺点:用高级语言编写程序的缺点:l
5、不支持对硬件的直接操作不支持对硬件的直接操作l代码需要翻译指令序列后才能执行代码需要翻译指令序列后才能执行高级语言高级语言111.1.1 程序设计语言程序设计语言高级语言的翻译高级语言的翻译方式方式l解释方式(解释方式(Interpreter 解释程序)解释程序)l逐句扫描,逐句翻译,逐句执行,直接获得结果。不逐句扫描,逐句翻译,逐句执行,直接获得结果。不产生等价的机器语言程序产生等价的机器语言程序高级语言高级语言高级语言源程序高级语言源程序 结果结果121.1.1 程序设计语言程序设计语言高级语言高级语言库文件库文件编译程序编译程序连接程序连接程序执行执行源程序源程序目标程序目标程序可执行程
6、序可执行程序数据数据结果结果h编译:编译:Compiling 将高级语言源程序翻译成为功能等价的低级(机器)语言目标程序的过程。h编译程序:编译程序:Compiler 完成编译工作的专门程序。h对不同的程序设计语言需要配备不同的编译程序。h对使用不同机器语言的机器需要配备不同的编译程序。131.1.1程序设计语言程序设计语言程序设计语言的基本语言成分程序设计语言的基本语言成分 l 数据成分数据成分l刻画程序所处理的数据对象的值、存储刻画程序所处理的数据对象的值、存储 l 运算成分运算成分 l算术、逻辑、集合等运算算术、逻辑、集合等运算l 控制成分控制成分 l控制程序的执行流程控制程序的执行流程
7、l 传输成分传输成分l数据的输入输出数据的输入输出141.1.2 程序程序程序概念程序概念l日常生活中程序概念日常生活中程序概念 l “程序程序”是完成事情的先后次序是完成事情的先后次序l计算机中的程序概念计算机中的程序概念 l按特定的算法,用某种计算机语言描述的完成指定按特定的算法,用某种计算机语言描述的完成指定任务的处理过程任务的处理过程 151.1.2 程序程序l从内容上看从内容上看 l包含算法描述和数据描述两个方面包含算法描述和数据描述两个方面,是数据与算法是数据与算法的结合的结合 程序算法数据结构程序算法数据结构 l从存储的角度看从存储的角度看l写在纸上或存储在外部存储介质上的一个静
8、态实体写在纸上或存储在外部存储介质上的一个静态实体 l从作用与执行的效果角度看从作用与执行的效果角度看l 是一个具有抽象性和动态性的逻辑实体,只有被是一个具有抽象性和动态性的逻辑实体,只有被装入主存启动执行后才起作用装入主存启动执行后才起作用 161.1.3 程序设计程序设计l设计、编制、测试程序的方法和过程设计、编制、测试程序的方法和过程l程序设计的内容与内涵程序设计的内容与内涵l设计设计l程序编制程序编制l程序调试程序调试l程序测试程序测试l程序验证程序验证l程序设计风格程序设计风格 l171.1.3 程序设计程序设计l结构化程序设计方法结构化程序设计方法 l一种传统的程序设计方法一种传统
9、的程序设计方法l本质是功能设计本质是功能设计l设计基本原则设计基本原则 :自顶向下,逐步细化,由抽象到具体:自顶向下,逐步细化,由抽象到具体的功能分解过程的功能分解过程l结构化程序设计过程例结构化程序设计过程例 求二次方程求二次方程ax2+bx+c=0的根的根 lS1:输入系数:输入系数a,b,clS2:求根计算:求根计算lS3:输出根:输出根181.1.3 程序设计程序设计adisc2|S11:输入系数:输入系数a,b,cS12:判别输入的:判别输入的a是否为是否为0,若为,若为0 ,转,转S11步重新输步重新输入系数入系数a,b,c。S31:如果:如果disc,计算并输出两个相同的根,计算
10、并输出两个相同的根x1x2uS32:如果:如果disc,计算并输出两个实根,计算并输出两个实根x1uv ,x2uv S33:如果:如果disc,计算并输出一对共扼复根,计算并输出一对共扼复根x1uvi ,x2uvi191.1.3 程序设计程序设计调试、测试、验证程序调试、测试、验证程序3个术语个术语l联系:目的都是为了产生没有错误的程序联系:目的都是为了产生没有错误的程序l区别:含义不同区别:含义不同l调试(调试(debugging)通常是指由程序设计者自)通常是指由程序设计者自己查找和改正程序中错误的过程,也称纠错己查找和改正程序中错误的过程,也称纠错或排错,目的是确定错误的性质、原因和位或
11、排错,目的是确定错误的性质、原因和位置且改正错误。置且改正错误。l按开发程序的过程程序中的错误分为按开发程序的过程程序中的错误分为l编译期错误编译期错误l连接期错误连接期错误l运行期错误运行期错误编译程序与连接程序编译程序与连接程序201.1.3 程序设计程序设计l测试(测试(testing)的目的除了发现程序存在错)的目的除了发现程序存在错误外,还证实程序是否达到规定的功能,具误外,还证实程序是否达到规定的功能,具有检验质量及性能评价等含义。有检验质量及性能评价等含义。 l验证(验证(verification)程序正确性的理想方法)程序正确性的理想方法是理论证明。目前验证程序的方法主要还是是
12、理论证明。目前验证程序的方法主要还是依靠有局限性的测试技术。依靠有局限性的测试技术。211.1.3 程序设计程序设计l程序设计风格指的是编码风格程序设计风格指的是编码风格(coding style) 即程序设计者表达程序的习惯方式即程序设计者表达程序的习惯方式l良好的程序设计风格基本指导原则良好的程序设计风格基本指导原则:l 规范化的源程序书写格式规范化的源程序书写格式l 注释程序注释程序 l 选用顾名思义的标识符选用顾名思义的标识符 l 用简明的方法表达算法用简明的方法表达算法 l 提供友善的输入输出界面提供友善的输入输出界面 221.2 C语言概述语言概述lC语言是在语言是在BCPL和和B
13、语言的基础上发展起来的语言的基础上发展起来的l与著名的与著名的UNIX操作系统的产生相辅相成的操作系统的产生相辅相成的l最初最初C语言以语言以B.W. Kernighan和和D. M. Ritchie所著的所著的The C Programming Language为标准,谓之为标准,谓之K&R Cl美国国家标准化协会(美国国家标准化协会(American National Standard Institute,ANSI)于)于1983年开始为年开始为C语言制定统一标语言制定统一标准,该标准颁布于准,该标准颁布于1987年,称之为年,称之为87 ANSI C。l1989年,年,ISO为为
14、C语言制定了国际标准语言制定了国际标准C89。最新的。最新的C语言国际标准是语言国际标准是1999年颁布的年颁布的C99。本书按。本书按C99标准标准叙述。叙述。231.2.3 C语言源程序的结构与执行语言源程序的结构与执行1. C语言源程序的结构语言源程序的结构l一个一个C语言源程序由一系列的外部声明组成。语言源程序由一系列的外部声明组成。l外部声明外部声明l函数定义性声明函数定义性声明l外部数据定义性声明外部数据定义性声明l函数引用性声明函数引用性声明l外部数据引用性声明外部数据引用性声明241.2.3 C语言源程序的结构与执行语言源程序的结构与执行l函数定义性声明指的是宣布(函数定义性声
15、明指的是宣布(announce)函数)函数的存在。的存在。l函数的一般定义形式为:函数的一般定义形式为:存储类别存储类别 数据类型数据类型 函数名函数名(形式参数表形式参数表)局部数据声明局部数据声明语句序列语句序列1. C语言源程序的结构语言源程序的结构函数体函数体函数头函数头251.2.3 C语言源程序的结构与执行语言源程序的结构与执行l例:例:int max(int a, int b, int c) int m; m=ab?a:b; return (mc?m:c); 1. C语言源程序的结构语言源程序的结构261.2.3 C语言源程序的结构与执行语言源程序的结构与执行l一个一个C语言程序
16、必须有且仅有一个名为语言程序必须有且仅有一个名为main的函数的函数l一个一个C语言源程序通常存放在一个源程序文件中(单语言源程序通常存放在一个源程序文件中(单文件程序),也可以分别存放在多个源程序文件中(文件程序),也可以分别存放在多个源程序文件中(多文件程序)多文件程序)l程序中所有函数(包括程序中所有函数(包括main函数)在源程序文件中函数)在源程序文件中安排的位置和顺序是任意的安排的位置和顺序是任意的l一个函数必须完整地包含在一个文件中,不允许跨文一个函数必须完整地包含在一个文件中,不允许跨文件存放件存放l不同的不同的C编译系统对源程序文件的扩展名要求不同,编译系统对源程序文件的扩展
17、名要求不同,例如例如TC2.0的源程序文件必须以的源程序文件必须以“.C”作为后缀。作为后缀。l一个一个C源程序文件是源程序文件是C源程序的一个程序模块,源程序的一个程序模块,C编编译程序总是以源程序文件为单位编译。译程序总是以源程序文件为单位编译。1. C语言源程序的结构语言源程序的结构271.2.3 C语言源程序的结构与执行语言源程序的结构与执行l外部数据定义性声明,顾名思义即在函数外部外部数据定义性声明,顾名思义即在函数外部定义数据对象。定义数据对象。l函数及外部数据引用性声明即声明要引用本程序中函数及外部数据引用性声明即声明要引用本程序中已经定义的函数或外部数据对象。已经定义的函数或外
18、部数据对象。l在函数外定义的数据对象可被程序中的诸函数公用在函数外定义的数据对象可被程序中的诸函数公用,因此这类数据对象也称为,因此这类数据对象也称为“全局全局”数据对象。数据对象。l区别的区别的“定义性声明定义性声明”与与“引用性声明引用性声明” :l“定义性声明定义性声明”建立函数与外部数据,需要对定义建立函数与外部数据,需要对定义的外部数据分配存储空间;的外部数据分配存储空间;l“引用性声明引用性声明”则指出要引用程序中其他地方定义则指出要引用程序中其他地方定义的函数或外部数据,并不为欲引用的外部数据分配的函数或外部数据,并不为欲引用的外部数据分配存储空间。存储空间。1. C语言源程序的
19、结构语言源程序的结构281.2.3 C语言源程序的结构与执行语言源程序的结构与执行lC语言程序总是从语言程序总是从main函数的第一条语句开始函数的第一条语句开始执行执行 lC语言程序中所有其他函数都可以相互调用语言程序中所有其他函数都可以相互调用l一个函数也允许自己调用自己一个函数也允许自己调用自己l可以调用由可以调用由C编译系统定义的库函数及用户自己定编译系统定义的库函数及用户自己定义的库函数。义的库函数。l整个程序的执行结束整个程序的执行结束l在正常情况下,在正常情况下,main函数执行完毕函数执行完毕l执行过程中发生各种错误,提前结束程序运行执行过程中发生各种错误,提前结束程序运行2.
20、 C语言源程序的执行语言源程序的执行291.2.4 C语言程序例语言程序例l例例1.1 一个简单的一个简单的C程序。程序。l该程序只由一个函数组成。该例的程序代码存储在该程序只由一个函数组成。该例的程序代码存储在myprog1.c源程序文件中,文件内容如下:源程序文件中,文件内容如下:#include int main(void)int number; printf(“books=”);scanf(“%d”, &number);printf(“I have %d books.n” , number);301.2.4 C语言程序例语言程序例l例例1.2 输入输入3个正整数,求它们的最小值
21、(设该最小值为个正整数,求它们的最小值(设该最小值为n),并计算),并计算1+2+n之和。之和。l该程序由两个函数组成。程序代码存储在该程序由两个函数组成。程序代码存储在myprog2.c源程序文件中,源程序文件中,文件内容如下:文件内容如下:/* This is an example */#include int min(int a, int b, int c); /* 调用自定义函数调用自定义函数min 的引用性声明的引用性声明 */int main ( void) unsigned n1 , n2 , n3 , n,i,sum=0; /* 声明程序中使用的存放正整数的声明程序中使用的存放
22、正整数的6个变量个变量 */ printf(“Input 3 positive integer:”); scanf(“%u%u%u”, &n1, &n2, &n3); /*输入输入3个正整数,分别存入个正整数,分别存入n1 , n2 , n3*/ 311.2.4 C语言程序例语言程序例 n=min(n1, n2, n3); /* 调用自定义函数调用自定义函数min,求,求3个正整数的最小个正整数的最小值值 */ for(i=1;i=n;i+) sum=sum+i; printf(“Minimum=%un1+2+.+%u=%un”, n,n, sum); int min(
23、int a, int b, int c) /* 求求3个整数的最小值的函数定义个整数的最小值的函数定义 */ if(a=b&a= c) return a; else if(b=a&b=c) return b; else return c;321.2.4 C语言程序例语言程序例lC语言程序中注释的一般表示形式是:语言程序中注释的一般表示形式是:l /* 注释内容注释内容 */l 注释内容可以占用若干书写行,只要以注释内容可以占用若干书写行,只要以“/*”开头、用开头、用“*/”结束。结束。C89或或C99都规定都规定C语言的注释不能嵌套。如语言的注释不能嵌套。如: /* void
24、 func (void) printf(“This is a functionn”); /* nested comment ,这种嵌套的注释是错误的!,这种嵌套的注释是错误的!*/ */l这样的注释是错误的。这样的注释是错误的。lC99中还允许使用以连续两个斜杠字符(中还允许使用以连续两个斜杠字符(/)开头的注释)开头的注释形式。即形式。即“/ 注释内容注释内容”。但是这种注释被限制。但是这种注释被限制在一行内。在一行内。 331.2.5 C语言源程序的书写语言源程序的书写l C语言源程序一般也都按小写字母书写。语言源程序一般也都按小写字母书写。l 用用#define定义的宏名通常用大写字母表
25、示(定义的宏名通常用大写字母表示(当然也可以用小写字母表示)。当然也可以用小写字母表示)。l 每个语句占用一书写行。每个语句占用一书写行。l 用缩进对齐的写法反映程序的不同的结构层用缩进对齐的写法反映程序的不同的结构层次。次。l 编译预处理命令行、外部数据定义、函数定编译预处理命令行、外部数据定义、函数定义之间、函数体内的义之间、函数体内的“数据声明数据声明” 部分和部分和“语语句序列句序列”部分空一行书写。部分空一行书写。341.2.5 C语言源程序的书写语言源程序的书写l 括住函数体的大括号,其左大括号应位于函数头括住函数体的大括号,其左大括号应位于函数头部第一个字符的下方,对应的右大括号亦单独占用一部第一个字符的下方,对应的右大括号亦单独占用一行,且与左大括号位置对齐。行,且与左大括号位置
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省南京市玄武区溧水高中2026届生物高一下期末调研试题含解析
- 2026海南海口市秀英区和美幼儿园招聘笔试模拟试题及答案解析
- 2026湖南长沙市明德雨花实验中学春季合同制教师招聘5人考试参考题库及答案解析
- 2025-2026学年走月亮试讲教学设计
- 2025-2026学年美声唱法教学设计感穿搭
- 2026陕西榆林学院高层次人才招聘考试参考题库及答案解析
- 2026江苏苏州市相城区卫健系统招聘55人笔试参考题库及答案解析
- icu医师规培考勤制度
- 严格执行休假考勤制度
- 公司上班请假考勤制度
- 湖南省长沙市长郡双语学校2023-2024学年九年级下学期入学物理试卷
- 化妆品工厂培训课件
- 售卖机服务 投标方案(技术方案)
- 【内蒙古乳制品出口贸易发展现状及优化建议分析8900字(论文)】
- 翻译研究论文的写作
- 配电类“两种人”安全规程考试题库
- 意识模糊评估量表(CAM)
- 斯塔宾格粘度计原理
- 川2020J146-TJ 建筑用轻质隔墙条板构造图集
- GB/T 7762-2003硫化橡胶或热塑性橡胶耐臭氧龟裂静态拉伸试验
- 外科上-微创技术
评论
0/150
提交评论