C语言程序设计教程课件(07662-7) 第1章 基本概念

上传人:E**** 文档编号:89384647 上传时间:2019-05-24 格式:PPT 页数:38 大小:415KB
返回 下载 相关 举报
C语言程序设计教程课件(07662-7) 第1章  基本概念_第1页
第1页 / 共38页
C语言程序设计教程课件(07662-7) 第1章  基本概念_第2页
第2页 / 共38页
C语言程序设计教程课件(07662-7) 第1章  基本概念_第3页
第3页 / 共38页
C语言程序设计教程课件(07662-7) 第1章  基本概念_第4页
第4页 / 共38页
C语言程序设计教程课件(07662-7) 第1章  基本概念_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《C语言程序设计教程课件(07662-7) 第1章 基本概念》由会员分享,可在线阅读,更多相关《C语言程序设计教程课件(07662-7) 第1章 基本概念(38页珍藏版)》请在金锄头文库上搜索。

1、第1页 共38页,第1章 基本概念,计算机的结构概述 程序设计语言 C语言的发展及特点 C语言标准库函数 软件危机与结构化程序设计 程序设计步骤 初识C语言程序 C语言程序的开发过程,第2页 共38页,1.1 计算机的结构概述,运算器 存储器 控制器 输入/输出设备(I/O),第3页 共38页,1.1 计算机的结构概述,计算机自诞生以来,其结构都统称为冯诺依曼(John von Neumann,19031957)结构。冯诺依曼结构计算机的核心思想是“存储程序”的概念。传统的冯诺依曼计算机是以运算器为中心的。近几年来,现代的计算机已转化为以存储器为中心,如图所示,图中实线为控制线,虚线为反馈线,

2、双线为数据线。,第4页 共38页,以存储器为中心的计算机结构,第5页 共38页,1.1.1 运算器,运算器部件是计算机的数据加工部件,其首要功能是完成对数据的算术和逻辑运算,由其内部的算术与逻辑运算部件(ALU)承担。它在给出运算结果的同时,还给出结果的某些特征,如是否溢出,有无进位,结果是否为零、为负等。 运算器的第二项功能是暂存将参加运算的数据和中间结果,由其内部的一组寄存器承担。这些寄存器可被汇编语言直接访问与使用,某些高级语言如C语言也可直接访问与使用这些寄存器。 运算器通常还作为处理机内部传送数据的重要通路。,第6页 共38页,1.1.2 存储器,存储器是计算机系统中的记忆设备,用来

3、存放程序和数据。计算机的存储器可分为两大类:一类叫内部存储器(简称内存或主存);另一类叫外部存储器(简称外存)。 主存储器包括存储体、各种逻辑部件及控制电路等。存储体由许多存储单元组成。由于ASCII码和汉字内码都是按8位来制定的,所以,在微型机系统中,不管是8位机、16位机还是32位机,都是以8位二进制作为一个字节,两个字节则作为一个字,此外还有双字。与此对应,微型机系统中的内存也是以8位作为一个单元。一个存储单元可存储一串二进制代码,这串二进制代码称为一个存储字,这串二进制代码的个数叫做存储字长。,第7页 共38页,我们赋予每个存储单元一个编号,叫做存储单元的地址号。内存的工作方式就是按存

4、储单元的地址号来实现对存储字各位的存(写入)、取(读出)。这种存取方式叫做按地址存取,所以内存也叫做按地址访问存储器(简称访存)。 内存的存储特性是:即使电源只是瞬间断开,也会使原有的指令和数据丢失;信息存入存储单元后,可以被反复取出,也可以被多次覆盖。,第8页 共38页,1.1.3 控制器,控制器是计算机组成的神经中枢,由它指挥全机各部件自动、协调地工作。控制器主要由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成。控制器的主要功能如下: 从内存中取出一条指令,并指出下一条指令在内存中的位置。 对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作。 指挥并控制CP

5、U、内存和输入/输出设备之间数据流动的方向。,第9页 共38页,1.1.4 输入/输出设备(I/O),输入设备和输出设备统称I/O设备,又称做外部设备。输入设备用来将原始数据转换为计算机能识别的信息并存入存储器,常见的有键盘、鼠标等;输出设备则将计算机运算结果转换为人们需要的形式输出,常见的输出设备有打印机、显示器等。 I/O系统包括各种外部设备及相应的接口。每一种设备都是由I/O接口与主机相连的,它接受控制器发出的各种控制命令完成相应的操作。因此,设备管理是操作系统的一个重要组成部分。I/O是计算机系统中较复杂的部分,是与具体系统密切相关的,而且几乎没有一个系统具有与另一个系统同样的I/O结

6、构。,第10页 共38页,1.2 程序设计语言,机器语言 汇编语言 高级语言,第11页 共38页,1.2.1 机器语言,世界上第一台电子计算机ENIAC(Electronic Numerical Integrator And Computer)于1946年2月在美国宣告诞生。此后的几年里,人们只能用机器语言也就是二进制代码编写程序。当时,计算机的机器指令都设计成“三地址形式”,一条指令中含有三个内存地址,例如: (0110) 048 2000 2001 2002 表示内存0110号单元内存放了一条机器指令: 048 2000 2001 2002 该指令命令计算机执行编号为048这个“操作”(不

7、妨假设为某计算机的加法操作)。于是,这条指令的具体含义是“把分别存放在2000号和2001号单元的数据相加,其和存放到2002号单元中”。,第12页 共38页,可见,机器指令难于记忆和掌握,编写程序耗时费力,程序易错难改。而且,不同型号的计算机其机器语言往往互不相同,按某种机器语言编写的程序,只能用于这种型号的计算机。这就是所谓的机器语言的不可移植性。,第13页 共38页,1.2.2 汇编语言,为提高编写程序的效率,人们设想把程序设计中的部分工作交给计算机去完成。这种努力的初步成果是汇编语言的产生。 汇编语言用一种简单而又形象的符号来代替繁琐的机器码,并称这些符号为助记符或“符号语言”或“汇编

8、语言”,用符号语言写的程序称为“汇编源程序”。例如: ADD X,10 这条指令意为“把X号单元的内容与10相加,结果再存放到X号单元中”。为了把汇编源程序转换为计算机能识别的机器语言,人们开发出了称为“汇编程序”的“翻译程序”,由它把汇编源程序“翻译成”机器语言。,第14页 共38页,1.2.3 高级语言,高级语言是一种“与机器无关”的语言,它具有很多机器语言无法具备的优点。当然,高级语言程序要在计算机上运行,必须先将其转换成等价的机器语言程序,实现这种转换的程序称为编译程序(Compiler),编译程序的工作结果是得到等价于源程序的某种目标程序。解释器(Interpreter)也是高级语言

9、的一种实现系统,解释器的工作结果是得到源程序的执行结果。经解释的程序运行速度往往比编译的程序慢,但往往更具灵活性,因为它们能够与执行环境互相作用。,第15页 共38页,1.3 C语言的发展及特点,C语言是一种短小精悍的结构化程序设计语言。它简洁、紧凑、使用方便、灵活,由于语法限制不严,程序书写极具美感;它层次清晰,便于按模块化方式组织程序,易于调试和维护;它具有丰富的数据类型,便于实现各类复杂的数据结构;它具有丰富的运算符和表达式,具有极强的表现能力和处理能力;C语言还有丰富的标准函数库,调用这些标准函数可以操作计算机的硬件、进行动态地址的分配、绘图等功能;它还可以直接访问内存的物理地址,进行

10、位(bit)一级的操作。因此,有时C语言被称为介于高级语言与低级语言之间的中级语言。C语言不仅可以用来写操作系统、编译程序,也可以用来编写各种应用软件,譬如,它是开发嵌入式应用的主要工具。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各种类型计算机上,从而形成了多种版本的C语言。,第16页 共38页,1.4 C语言标准库函数,C语言程序是由称为“函数”的模块组成的。这些函数来自于三个方面:自己编写的函数、他人编写的函数和系统已有的函数集,前两类函数称做自定义函数,后者称做“C标准库函数”。 标准库函数有三点好处,即准确性、高效性和可移植性。准确性:编译程序的开发商通常会保证标准

11、库函数的准确性。因为开发商在提供这些库函数前,已经为这些库函数做了全面的检测来证实其准确性,这通常比自己编写的要更加全面(有些昂贵的测试工具能使这项工作更加容易),第17页 共38页,1.5 软件危机与结构化程序设计,结构化程序设计是把程序从整体式的设计转化成模块化的设计。简单地说就是将一个大程序以功能为中心,划分成若干个相对独立的模块“分而治之”,基本思想是:先根据程序功能,自顶向下划分模块,被分解的模块应具有简单性、独立性和完整性;程序编码则应遵循由粗到细、由抽象到具体的思维方法和工作方法,逐步求精第一步编出的程序抽象级最高,第二步编出的程序抽象级有所降低最后一步编出的程序即为可执行的程序

12、。用这种方法编写出来的程序有很多优点,如程序易读、易调试、易维护、易保证其正确性及验证其正确性。由此可见,所谓结构化程序设计,就是保证和便于验证程序正确性而规定的一套程序设计方法,其核心是逐步降低程序的抽象级。结构化程序设计的基本准则是:(1)用自顶向下、逐步求精的方法设计程序;(2)有良好的程序设计风格;(3)使用顺序、判断和循环三种基本结构,限制使用goto语句。,第18页 共38页,1.6 程序设计步骤,问题分析和数据定义 实践证明,软件中的错误,大部分都是在编码之前造成的。因此在编写程序之前,首先要充分研究分析要解决的问题对象。分析数据结构及数据处理要求,它的规范文档是软件设计任务书。

13、明确自己将面对什么样的环境和要“做什么”,这也就是程序的需求分析阶段。,第19页 共38页,研究并确定解决问题的方案 这是软件设计阶段,主要是要解决“怎么做”的问题。根据软件设计任务书,面向结构,使用流程图、N-S图或文字叙述来表示解决问题的步骤。把要求、功能演绎成算法。我们把对分析做出的程序行为的非形式描述称之为算法。,第20页 共38页,编写程序(编码) 首先要确定一种合适的程序设计语言,然后,用这种语言去实现算法,也就是将程序行为的非形式描述用程序语言恰当地描述出来,其结果就是程序。,第21页 共38页,程序的调试 在程序设计的过程中,任何一个熟练的程序员也不敢说他写的程序百分之百正确,

14、因此,不可避免地会发生这样那样的错误。程序调试就是对程序进行测试,查找程序中隐藏的错误,确定错误的位置,分析错误的性质和产生错误的原因并将这些错误修正或排除。程序调试和测试是程序设计中的一门重要的技术。,第22页 共38页,文档的整理 在将软件交付使用之前,应把该软件的所有有关资料详细列出,编制成文档,以方便用户的使用和日常维护。文档包括:程序文件清单、使用手册、系统功能说明书和系统维护说明书以及其他有关资料。需要特别指出的是,文档的质量如何,对日后软件的维护影响极大。因为软件在实际的使用中还可能会发现新的错误,也可能存在未完善的地方,也可能用户会提出新的需求,需要补充一些新的功能,这就需要不

15、断修改和维护。一个好的较完备的文档将为系统的修改和维护提供很大的帮助。,第23页 共38页,1.7 初识C语言程序,【例】输入正整数a和b(a0,b0),求它们的最小公倍数并输出结果。所编C语言程序如下:,第24页 共38页,#include /* 预处理命令 */ #include /* 预处理命令 */ int lcm(int,int); /* 求最小公倍数函数原型声明 */ int main(void) /* 以下是主函数模块 */ int a, b; /* 定义两个整型变量 a和b */ printf( “Enter 2 integers:a and b.(a0,b0): “ ); /

16、* 输出提示行 */ scanf( “%d%d“, /* 程序正常结束返回 */ ,第25页 共38页,int gcd(int,int); /* 求最大公约数函数原型声明 */ int lcm(int m,int n) /* 以下是求最小公倍数函数模块 * return m*n/gcd(m,n); /* 返回函数计算结果 */ int gcd(int m,int n) /* 以下是求最大公约数函数模块 */ while(n !=0) r=m % n; m=n; n=r; return m; /* 返回函数计算结果 */ ,第26页 共38页,上述程序在逻辑结构上由预处理命令、主函数main、求最小公倍数函数lcm和求最大公约数函数gcd四部分组成,也称为四个模块,如图所示。,第27页 共38页,程序第1行是一条预处理命令,这条预处理命令的功能是:将名为stdio.h的头文件中的内容替换这条命令。预处理命令以“#”开头,其中include意为文件包含,它是预处理

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

当前位置:首页 > 高等教育 > 大学课件

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