已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教学大纲,第2章程序设计与程序结构,2.1程序设计与算法2.2流程图2.3程序结构2.4流程图与程序例子2.5本章小结2.6习题,2.1程序设计与算法,2.1.1程序设计的概念1、对数据的描述和对操作的描述一个程序应包括以下两方面内容:(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(datastructure)。(2)对操作的描述。即操作步骤,也就是算法(algorithm)。数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。作为程序设计人员,必须认真考虑和设计数据结构和操作步骤(即算法)。,因此,著名计算机科学家沃思(NikiklausWirth)提出一个公式:数据结构+算法=程序实际上,一个程序除了以上两个主要要素之外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。因此,可以这样表示:程序=算法+数据结构+程序设计方法+语言工具和环境,2.程序设计过程,分析题意,清楚要求,设计算法,选择合适的程序结构,确定变量及其数据类型,画流程图,编写代码,调试,运行,2.1.2算法,实例1:从北京去天津开会,从事各种工作和活动,都必须事先想好进行的步骤,然后按部就班地进行,才能避免产生错乱。广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。,买火车票,乘坐地铁到北京站,登上火车,到天津后坐电车到会场,实例2:考大学,填写报名表,交报名费,拿到准考证,按时参加考试,到校报到注册,得到录取通知书,对同一个问题,可以有不同的解题方法和步骤。方法有优劣之分。有的方法只需进行很少的步骤,而有些方法则需要较多的步骤。一般说,希望采用简单的且运算步骤少的方法。因此,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。,简单算法的举例,例1求12345。可以用最原始的方法进行。步骤1:先求12,得到结果2。步骤2:将步骤1得到的乘积2再乘以3,得到结果6。步骤3:将6再乘以4,得24。步骤4:将24再乘以5,得120。这就是最后的结果。,当求1000!时,求解过程过于麻烦,是不是一种通用的表示方法呢?,设计思想:可以设两个变量,一个变量代表被乘数,一个变量代表乘数。不另设变量存放乘积结果,而直接将每一步骤的乘积放在被乘数变量中。今设p为被乘数,i为乘数。用循环算法来求结果。可以将算法改写如下:S1:使p=1S2:使i=2S3:使pi,乘积仍放在变量p中,可表示为pi=pS4:使i的值加1,即i+1=iS5:如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则,算法结束。最后得到p的值就是5!的值。,例2有5个学生,要求将他们之中成绩在80分以上者打印出来。用n表示学生学号,n1代表第一个学生学号,ni代表第i个学生学号。用g代表学生成绩,gi代表第i个学生成绩。算法设计:S1:1=iS2:如果gi80,则打印ni和gi,否则不打印S3:i+1=iS4:如果i5,返回S2,继续执行;否则,算法结束。本例中,变量i作为下标,用它来控制序号(第几个学生,第几个成绩)。当i超过5时,表示已对5个学生的成绩处理完毕,算法结束。,例3判定20002500年中的每一年是否闰年,将结果输出。闰年的条件是:能被4整除,但不能被100整除的年份都是闰年,如1996年,2004年是闰年;能被100整除,又能被400整除的年份是闰年。如1600年、2000年是闰年。不符合这两个条件的年份不是闰年。算法设计:设y为被检测的年份。可采取以下步骤:S1:2000=yS2:y不能被4整除,则输出y“不是闰年”。然后转到S6,S3:若y能被4整除,不能被100整除,则输出y“是闰年”。然后转到S6S4:若y能被100整除,又能被400整除,输出y“是闰年”;否则输出“不是闰年”。然后转到S6S5:输出y“不是闰年”S6:y+1=yS7:当y2500时,转S2继续执行,如y2500,算法停止。,2.1.3算法的特性,一个算法应该具有以下特点:1.有穷性一个算法应包含有限的操作步骤,而不能是无限的。事实上,“有穷性”往往指“在合理的范围之内”。究竟什么算“合理限度”,并无严格标准,由人们的常识和需要而定。2.确定性算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。,3.有零个或多个输入所谓输入是指在执行算法时需要从外界取得必要的信息。一个算法也可以没有输入。4.有一个或多个输出算法的目的是为了求解,“解”就是输出。没有输出的算法是没有意义的。5.有效性算法中的每一个步骤都应当能有效地执行,并得到确定的结果。,2.2流程图,算法的表示方式,常用的有自然语言、传统流程图、结构化流程图、伪代码、PAD图等。流程图是用几何图形、箭头和文字说明来表示算法的框图。流用图形表示算法,直观形象,易于理解。美国国家标准化协会ANSI(AmericanNationalStandardInstitute)规定了一些常用的流程图符号(见图示)。,常用的流程图符号,三种基本结构的流程图,在长期的程序设计实践过程中,人们提出了结构化流程图,即一个流程图都可以由3种基本的结构(顺序、选择、循环)组成,这3种基本结构可以相互嵌套,从而组成复杂的算法。根据结构化流程图写出的程序就是结构化程序。,(1)顺序结构,如图所示,按语句的书写顺序执行。,(2)选择结构,或称选取结构,或称分支结构,如图所示,请注意,无论p条件是否成立,只能执行A框或B框之一,不可能既执行A框又执行B框。,无论走哪一条路径,在执行完A或B之后,都经过b点,然后脱离本选择结构。A或B两个框中可以有一个是空的,即不执行任何操作,如下图所示。,(3)循环结构,它又称重复结构。有两类循环结构:当型(While型)循环结构见图(a)。它的功能是当给定的条件p1成立时,执行A框操作,执行完A后,再判断条件p1是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次p1条件不成立为止,此时不执行A框,而从b点脱离循环结构。,直到型(Until型)循环见图(b)。它的功能是先执行A框,然后判断给定的p2条件是否成立,如果p2条件不成立,则再执行A,然后再对p2条件作判断,如果p2条件仍然不成立,又执行A如此反复执行A,直到给定的p2条件成立为止,此时不再执行A,从b点脱离本循环结构。,说明:,以上三种基本结构,有以下共同特点:(1)只有一个入口。(2)只有一个出口。请注意,一个菱形判断框有两个出口,而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。(3)结构内的每一部分都有机会被执行到。对每一个框来说,都应有一条从入口到出口的路径通过它。如下图a,没有一条从入口到出口的路径通过A框。(4)结构内不存在“死循环”(无终止的循环)。如下图b,就是一个死循环。,(a),(b),2.3流程图及程序例子,例1求5!即t=12345。流程图如右图所示。/*c语言程序代码*/#includemain()inti,t;t=1;i=2;dot=t*i;i=i+1;while(i=5);printf(%d,t);,例2打印出5个学生中成绩高于80分者的学号和成绩。/*源程序代码*/#includemain()floata5;inti=1,j=1;printf(录入学生成绩:n);while(i=80)printf(成绩大于80分的学生学号:%d,成绩:%fn,i,ai);i+;,流程图,例3判定20002500年中的每一年是否闰年,将结果输出。闰年的条件是:能被4整除,但不能被100整除的年份都是闰年,如1996年,2004年是闰年;能被100整除,又能被400整除的年份是闰年。如1600年、2000年是闰年。不符合这两个条件的年份不是闰年。流程图如下:,/*c程序代码*/#includevoidmain()intyear,flag;year=2000;printf(输出闰年);while(yeary?x:y;printf(“max=%dn”,max);,说明:,下面总结一下c语言源程序的结构特点:一个c语言源程序可以由一个或多个源文件组成。每个源文件可以由一个或多个函数组成。一个源程序不论由多少个文件组成,都有一个且只能有一个main()函数,即主函数。源程序中可以有预处理命令,预处理命令通常应放在源文件或源程序的最前面。每一个说明、每一个语句必须以分号结尾,但预处理命令、函数头和花括号“”之后不能加分号。标识符与关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。,本章小结,本章主要介绍了以下内容:程序包括对数据的描述和对操作的描述,即:程序=数据结构+算法程序设计过程:分析题意设计算法选择程序结构确定变量画流程图编写代码调试运行算法的特点:有穷性;确定性;有效性;有0个或多个输入;有一个或多个输出,从逻辑上讲,结构程序由顺序、选择、循环3种基本结构组成。一个程序有且只有一个main()函数。程序总是从main()函数开始执行,当main()执行完毕时,程序执行完毕。函数是c语言程序的基本单位,任何函数都是由函数说明和函数体两部分组成,函数体的说明语句必须在可执行语句之前。通过熟悉例题程序,建立程序的概念,形成良好的编程风格。,习题,一、选择题1、C语言程序是由组成。A子程序B主程序和子程序C函数D过程2、C语言中,主函数的个数是个。A2个B1个C任意个D10个3、下列关于C语言注释的叙述中错误的是。A以“/*”开头并以“*/”结尾的字符串为C语言的注释符B注释可以出现在任何位置,用以提示和注释程序的意义C程序编译时,不对注释作任何处理D程序编译时,需要对注释进行处理,4、下列关于C语言的关键字的叙述中错误的是。A关键字是由C语言规定的具有特定意义的字符串,也称保留字B用户定义的标识符不应与关键字相同CANSIC标准规定的保留字有32个DANSIC标准规定的保留字有64个5、下列不是C语言分隔符的是。A回车B空格C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年北京市建筑施工作业人员安全生产知识教育培训考核试卷A及答案
- 流域排水管网能力提升工程社会稳定风险评估报告
- 非金属钙基新材料生产线项目建筑工程方案
- 变电站试题及答案
- 社区卫生服务中心设备采购方案
- 研究生考试:政治高频考点
- 计算机网络基础复习试题及答案
- 科研机构年终总结报告
- 静脉输液护理试题及答案
- 运营中心管理人员试题及答案
- 项目三 高速动车组转向架检修与维护
- 幼儿园天气播报PPT
- 服务型制造标准体系建设指南(2023年)征
- 色盲检测图(第五版)-驾校考试-体检必备-自制最全最准确
- 八年级美术PPT课件 荷兰后印象派画家梵高作品介绍 《向日葵》《吃土豆的人》《割耳朵后的自画像》
- GB/T 3390.1-2013手动套筒扳手套筒
- GB 6675.1-2014玩具安全第1部分:基本规范
- 土方回填施工记录表
- 惠州市基层诊所医疗机构卫生院社区卫生服务中心村卫生室地址信息
- 四知卡(一责双卡 岗位风险识别卡)-加油站加油参考模板范本
- 西门子燃气轮机介绍课件
评论
0/150
提交评论