您好,欢迎访问三七文档
第1章程序设计概述C语言程序设计授课教师:郑歆C语言程序设计第1章程序设计概述一、课程的任务与目标:1.掌握C语言的数据类型、控制结构、常用算法、编程技术及模块化的程序设计思想;2.熟悉C语言程序的编辑、编译、调试、运行的方法;3.在掌握C语言程序设计基本方法的同时,着重通过程序设计实践培养学生分析问题和解决问题的能力,提高计算机专业素养;4.使学生具备计算机二级(C)考试所要求的水平和能力。C语言程序设计第1章程序设计概述二、教材选用:1.教科书:C语言程序设计教程,叶东毅主编,厦门大学出版社学习指导,叶东毅主编,厦门大学出版社2.参考书:(1)C程序设计题解与上机指导,谭浩强著,北京:清华大学出版社(2)C语言程序设计与应用教程,严桂兰主编,厦门大学出版社(3)C程序设计(第三版),谭浩强著,北京:清华大学出版社C语言程序设计第1章程序设计概述第1章程序设计概述1.1程序设计基础1.2算法及其表示1.3结构化程序设计方法C语言程序设计第1章程序设计概述本章学习目标l计算机语言按其发展过程一般分为:机器语言、汇编语言和高级语言、非过程化的高级语言、面向对象的程序设计语言l算法的概念、特性及描述l结构化程序设计的概念及设计步骤第1章程序设计概述1.1程序和程序设计语言1.1.1程序与程序设计的概念1.1.2程序设计语言第1章程序设计概述1.1.1程序与程序设计的概念要让计算机完成某项任务,就必须将完成这项任务的方法和具体步骤编写成计算机可以直接或间接执行的一系列指令,使之执行这些指令后,就可以完成给定的任务。这样的一系列指令的集合就称为计算机程序或简称程序。编写这些指令就是程序设计。程序可以看成是借助计算机的一种问题求解的过程。计算机通过运行不同的程序来完成各种不同的问题求解任务,从而实现计算机在各个领域的应用。第1章程序设计概述1.1.2程序设计语言1.机器语言机器语言是最底层、最早产生和使用的计算机语言。用机器语言编写的程序,计算机硬件可以直接识别。机器语言程序都是由二进制“0”和“1”组成的序列,程序编写起来非常繁琐,可以用“难学、难记、难写、难检查、难调试”来概括,尤其是用机器语言编写的程序完全依赖于机器,所以程序的可移植性差。由于用机器语言编写的程序直接针对计算机硬件,因此它的执行效率比较高,能充分发挥出计算机的速度性能,这也是机器语言的优点。第1章程序设计概述2.汇编语言为了克服机器语言的缺点,人们对机器语言进行了改进,用一些容易记忆和辨别的有意义的符号代替机器指令,如:用指令助记符来代替机器语言指令代码中的操作码,用地址符号来代替地址码。用这样一些符号代替机器指令所产生的语言就称为汇编语言,也称为符号语言。如计算表达式:9+8的值,用汇编语言实现:语句序号汇编语言指令指令功能1MOVAL,9把加数9送到累加器AL中2ADDAL,8把累加器AL中的内容与另一数相加,结果存在累加器AL中(即完成9+8运算)3HLT停止操作第1章程序设计概述在汇编语言程序中,操作指令符号含义明确,容易记忆,所以又称为助记符。这些助记符编写的程序,可读性好,容易查错,修改方便;但计算机硬件不能直接识别,必须由一种专门的翻译程序将汇编语言程序翻译成机器语言程序后,计算机才能识别并执行。这种翻译的过程称为“汇编”,负责翻译的程序称为汇编程序,翻译出的程序称为目标程序,而翻译前的程序称为源程序。如下图:汇编语言源程序目标程序汇编程序图1-1汇编程序的作用第1章程序设计概述3.高级语言20世纪50年代中期开始逐步发展出面向过程的程序设计语言,称为高级语言。1954年出现了第一种高级语言——FORTRAN。之后的几十年来,有几百种高级语言出现,使用较普遍的有Basic、Pascal、C等。用高级语言编写的程序,计算机也不能直接执行,也需要一种工具将它翻译为机器语言程序,这种工具就是高级语言的编译系统。一般地将高级语言程序翻译为意义等价的机器语言程序的方法有两种方式,即编译方式和解释方式。第1章程序设计概述4.非过程化语言面向过程的高级语言:用这种语言解决问题时,人们首先要理解问题要求我们“做什么”,然后去构造“怎么做”的解题过程。程序设计者要详细地规定计算机操作的每一个细节。非过程化的高级语言:只需告诉计算机“做什么”,而无需去构造“怎么做”的过程。如各种数据库语言SQL、dBASE、FoxBASE、FoxPro等均属此类语言。非过程化语言是面向问题的语言,它具有缩短应用开发过程、降低维护代价、最大限度地减少调试过程中出现的问题以及对用户友好等优点。第1章程序设计概述5.面向对象语言面向对象语言是按照现实世界的特点来管理复杂的事物,把它们抽象为对象,具有自己的状态和行为,通过对消息的反应来完成一定的任务。面向对象语言是一类以类作为基本程序结构单位的程序设计语言。类是一类事物共性的反映,对象是类的实例,是一类事物个性的反映。面向对象语言具有继承性、封装性和多态性。典型的面向对象语言如Java、C#等。第1章程序设计概述1.2算法概述1.2.1算法的概念1.2.2算法的表示方法第1章程序设计概述1.2.1算法的概念算法指的是为解决一个问题而采取的方法和步骤。著名瑞士计算机科学家沃思曾提出一个公式:数据结构+算法=程序其中,数据结构主要是数据的类型和数据的组织形式,即对程序中数据的描述。算法是对程序中操作的描述,即操作步骤。数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。第1章程序设计概述算法的特性l有穷性一个算法必须在执行有穷步骤之后结束,且每个步骤都能在有限时间内完成。l确定性算法的每一步必须是确切定义的,不能有歧义。l可行性算法中所有要进行的运算都能够由相应的就算装置所理解和实现,并可通过有穷次运算完成。l有输入一个算法应有零个或多个输入。l有输出一个算法应有一个或多个输出。第1章程序设计概述算法的评价标准l正确性正确性指算法能满足具体问题的要求。l可读性可读性指算法被理解的难易程度。l健壮性健壮性指对非法输入的抵抗能力。l高效率和低存储量要求效率指的是算法执行时间;存储量指的是算法执行过程中所需要的最大存储空间。处理一个问题,可以有不同的算法。设计和选择算法不仅要保证算法的正确,还要考虑算法的质量和效率。第1章程序设计概述1.2.2算法的表示方法常用的描述算法的方法有:自然语言、传统流程图、N-S结构流程图、伪代码、PAD图等,这里主要介绍前面四种。1、用自然语言表示算法自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。用自然语言描述算法具有通俗易懂的优点,但缺点也比较多:(1)比较繁琐。(2)容易出现“歧义性”。(3)用自然语言容易描述顺序执行的步骤。第1章程序设计概述例1.1求1到100之间所有偶数的和(记为sum)。用自然语言描述如下:①假设变量i的初始值为2,sum的初始值为0;②如果i≤100,执行③,否则执行⑥;③计算sum+i的值后,重新赋值给sum;④计算i+2的值后,重新赋值给i;⑤转去执行②;⑥输出sum的值,算法结束。第1章程序设计概述2、用传统流程图表示算法传统流程图是用一些图框表示各种操作。用图形表示算法,直观形象,易于理解。美国国家标准化协会ANSI(AmericanNationalStandardInstitute)规定了一些常用的流程图符号:起止框输入输出框判断框处理框流程线连接点注释框图1-2常用流程图符号第1章程序设计概述例1.1求1到100之间所有偶数的和(记为sum)。用传统流程图描述如下:开始i←2,sum←0i≤100sum←sum+ii←i+2输出sum结束是否第1章程序设计概述3.用N-S流程图表示算法成立PAB不成立I.Nassi和B.Shneiderman提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。这种流程图简称N-S流程图。①顺序结构②选择结构当P1成立A(a)直到P1不成立A(b)③循环结构AB第1章程序设计概述例1.1求1到100之间所有偶数的和(记为sum)。用N-S流程图描述如下:sum←0i←2sum←sum+ii←i+2输出sum当i≤100时第1章程序设计概述4、用伪代码表示算法伪代码是一种用来书写程序或描述算法时使用的非正式表述方法,主要采用自然语言、数学公式和符号来描述算法的操作步骤,同时采用计算机高级语言(如C、Pascal、VB、C++、Java等)的基本控制结构来描述算法步骤的执行顺序。伪代码接近程序设计语言,因此用伪代码写出的算法比较容易转化为程序代码。第1章程序设计概述例1.1求1到100之间所有偶数的和(记为sum)。用伪代码描述如下:BEGIN/*算法开始*/i←2;/*为变量i赋初值*/sum←0;/*为变量sum赋初值*/whilei=100/*当i=100时,循环*/{sum←sum+i;i←i+2;}输出sum的值;END/*算法结束*/第1章程序设计概述1.3.1结构化程序基本控制结构1.3.2结构化程序设计的原则和步骤1.3结构化程序设计方法第1章程序设计概述1.3.1结构化程序基本控制结构结构化程序设计方法由著名的计算机科学家E.W.Dijkstra和N.Wirth等人在20世纪60年代后期提出并逐渐发展起来,其基本思想是采用“自顶向下,逐步求精、分而治之”的原则,将一个较为复杂的原问题分解成若干相对独立的小问题,依次细化,直至各个小问题获得解决为止。按照结构化程序设计的观点,任何算法功能都可以通过三种基本控制结构以及它们的嵌套组合来实现,这三种结构就是顺序结构、选择(分支)结构和循环结构。第1章程序设计概述AB①顺序结构条件?AB成立不成立②选择结构第1章程序设计概述条件?A成立不成立A条件?成立不成立③循环结构(a)当型循环(b)直到型循环第1章程序设计概述1.3.2结构化程序设计的原则和步骤1.结构化程序设计的原则:(1)使用语言中的顺序、选择、循环等基本控制结构表示程序逻辑。(2)选用的控制结构只准许有一个入口和一个出口。(3)程序语句组成容易识别的块,每块只有一个入口和一个出口。(4)复杂结构应该用基本控制结构进行组合嵌套来实现。(5)尽量避免使用跳转语句(如:goto、break等语句)。第1章程序设计概述2.结构化程序设计的步骤:(1)问题分析(2)建立数学模型(3)算法设计(4)程序编码(5)测试(6)建立程序文档第1章程序设计概述第2章C语言概述2.1C语言的发展历史和特点2.2C语言程序的结构2.3C语言程序的编译和运行第1章程序设计概述本章学习目标lC语言的发展历史和特点lC语言程序构成和书写格式lC语言程序的编译和运行第1章程序设计概述2.1C语言的发展历史和特点2.1.1C语言的发展历史2.1.2C语言的特点第1章程序设计概述2.1.1C语言的发展历史C语言是一种高效的编译型结构化程序设计语言,最早由美国贝尔实验室的DennisM.Ritchie在B语言的基础上开发出来的,并于1972年在一台DECPDP-11计算机上首次实现。最初的C语言只是为描述和实现Unix操作系统提供一种工作语言而设计的。随后几年,贝尔实验室又对C语言进行了多次的改进,直到1975年,C语言的突出优点才引起人们的普遍注意。1978年,BrianW.Kernighan和DennisM.Ritchie出版了名著《C程序设计语言》,这本书成为后来广泛使用的C语言版本的基础,称为标准C。第1章程序设计概述2.1.1C语言的发展历史1983年,美国国家标准化协会(ANSI)根据C语言的各个版本,制定了一套ANSI标准,称为ANSIC。1987年,ANSI又公布了新标准——87ANSIC。1990年,国际标准化组织ISO接受87ANSIC为ISOC的标准。目前广泛流行的C编译系统都是以ISOC为基础的。在微机上使用的有BorlandC、MicrosoftC、TurboC、QuickC等。第1章程序设计概述2.1.2C语言的特点C语言的优点:1.可移植性强2.
本文标题:C语言算法
链接地址:https://www.777doc.com/doc-8144812 .html