欢迎来到天天文库
浏览记录
ID:42762250
大小:794.50 KB
页数:53页
时间:2019-09-22
《结构化程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第六章结构化程序设计武汉大学计算机学院主讲:谭成予nadinetan@163.com教材:C程序设计导论本讲重点算法的表示方法结构化程序设计方法软件测试的一般方法算法的概念著名计算机科学家沃思(NikiklausWirth)提出一个公式数据结构+算法=程序程序=算法+数据结构+程序设计方法+语言工具和环境算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的方法。算法是解决“做什么”和“怎么做”的问题。程序中的操作语句,实际上就是算法的体现。如何理解程序?编程过程问题解决一个复杂的过程.算法解决问题所使用的一系列合乎逻辑的、简洁的步骤.解决问题包含的步骤:分析问题,找
2、出解决问题的模型。根据模型设计出适合计算机特点的处理方法即算法.选择适合的计算机语言进行编程,以实现算法。上机编辑、调试、运行所编制的程序.得到结果.对结果进行分析,整理出文字材料即文档。编程过程例:预定火车票的算法:旅客输入如姓名,年龄,路程起点,终点,日期等信息。然后他将订票单交到订票处。柜台工作人员查看是否有坐位。如果存在满足要求的有效座位,就给旅客一张确认票。否则,发给一张等待单。如果有其他人退票,可凭等待单换取车票。如果最终乘客没有订到车票,他将得到退款。算法的特点有穷性:一个算法应包含有限个操作步骤。确定性:每个步骤应该是确定的。有0个或多个输入有1个或多个输出有
3、效性:每个步骤都能有效执行。算法的描述1.自然语言描述:用自然语言给出解决问题的详细步骤.如前面的例子。2.流程图:用图框表示。3.伪代码:使用介于自然语言和计算机语言之间的文字、符号来描述算法。4.计算机语言:采用这种方法必须严格遵守所使用的语言的语法规则。算法的描述—自然语言例6.1判断一个数m是否为素数分析:判断整数m(m>2)是否为素数的方法是:如果m不能被i整除(i为2到m-1的所有整数),则m是素数。算法如下:S1:输入m的值。S2:i赋初值为2:S3:判断m能否被i整除。若能,转到S6。S4:若m不为被i整除,给i的值加1。若i4、输出m“是素数”,转到S7。S6:输出m“不是素数”。S7:算法结束。算法的描述—流程图以图解方式说明实现一个解决方案所需完成的一系列操作.为了达到下列目的:一目了然,比文字描述易懂.程序可以很容易地查看和修改.提供有效的程序文档.解释程序和讨论解决方案变得容易.传统流程图里常用的符号开始或结束框“处理框”--运算步骤输入或输出框判断框连接符:一个程序中两个部分之间的连接程序的流程线注释例6.1判断一个数m是否为素数流程图开始结束输入mi=2m%i!=0i=i+1i>m-1输出m是素数输出m不是素数传统流程图里的符号—连接符在为复杂问题准备流程图时流程图可能无法放在一页中要将5、所有的图块直接连接起来比较困难流程图可以被分割成若干部分.连接符可以用于指定连接的位置.在连接符中指定了一个唯一的数.在图表断开的地方,一个箭头指示了那一点.传统流程图里的符号—连接符a>b?12读入a,b,c开始a>c?c>b?12显示a显示c显示b结束NYNNYY流程图的一些提示画流程图时应该记住的一些要点:开始把注意力集中在问题的逻辑上,画出流程图的主路径.完成主路径后,加上分支和循环.一个流程图只能含有一个起始点和一个结束点使流程图保持独立,只要可能,就不要用与计算机有关的术语.没有必要在流程图中画出程序的每个步骤.使用描述性的术语来表现问题的逻辑结构.不要用模棱两可6、的词语.让其他编程人员或用户能够轻松看懂你的流程图N-S流程图N-S流程图ABPYNAB顺序结构分支结构N-S流程图当P成立AA直到P成立当型循环直到型循环输入mw=0i=2m%i!=0TFi=i+1W=1直到i>m-1或w=1w==0FT输出m是素数输出m不是素数N-S流程图PAD流程图S1S2S3S1S1S当P(a)(b)(c)PAD图的基本符号本讲重点算法的表示方法结构化程序设计方法软件测试的一般方法算法的概念伪代码描述伪代码(pseudocode)是用介于自然语言与计算机语言之间的文字和符号来描述算法。无固定的、严格的语法规则,如同一篇文章,自上而下地写下来。可以用自7、然语言,也可以用程序设计语言或使用自然语言与程序设计语言的混合体。伪代码书写方便,格式紧凑,也比较好懂,便于向计算机语言过渡。伪代码描述例6.2求5!即1*2*3*4*5开始置t的初值为1置i的初值为2当i<=5,执行循环{使t=t*i使i=i+1}打印t的值结束也可以写成以下形式:BEGINE1=>t2=>Iwhilei<5{t*i=>ti+1=>I}printtEND用计算机语言表示/*L6-1.C:判断一个数是否是素数*/#includeintmain(void){intm,w,
4、输出m“是素数”,转到S7。S6:输出m“不是素数”。S7:算法结束。算法的描述—流程图以图解方式说明实现一个解决方案所需完成的一系列操作.为了达到下列目的:一目了然,比文字描述易懂.程序可以很容易地查看和修改.提供有效的程序文档.解释程序和讨论解决方案变得容易.传统流程图里常用的符号开始或结束框“处理框”--运算步骤输入或输出框判断框连接符:一个程序中两个部分之间的连接程序的流程线注释例6.1判断一个数m是否为素数流程图开始结束输入mi=2m%i!=0i=i+1i>m-1输出m是素数输出m不是素数传统流程图里的符号—连接符在为复杂问题准备流程图时流程图可能无法放在一页中要将
5、所有的图块直接连接起来比较困难流程图可以被分割成若干部分.连接符可以用于指定连接的位置.在连接符中指定了一个唯一的数.在图表断开的地方,一个箭头指示了那一点.传统流程图里的符号—连接符a>b?12读入a,b,c开始a>c?c>b?12显示a显示c显示b结束NYNNYY流程图的一些提示画流程图时应该记住的一些要点:开始把注意力集中在问题的逻辑上,画出流程图的主路径.完成主路径后,加上分支和循环.一个流程图只能含有一个起始点和一个结束点使流程图保持独立,只要可能,就不要用与计算机有关的术语.没有必要在流程图中画出程序的每个步骤.使用描述性的术语来表现问题的逻辑结构.不要用模棱两可
6、的词语.让其他编程人员或用户能够轻松看懂你的流程图N-S流程图N-S流程图ABPYNAB顺序结构分支结构N-S流程图当P成立AA直到P成立当型循环直到型循环输入mw=0i=2m%i!=0TFi=i+1W=1直到i>m-1或w=1w==0FT输出m是素数输出m不是素数N-S流程图PAD流程图S1S2S3S1S1S当P(a)(b)(c)PAD图的基本符号本讲重点算法的表示方法结构化程序设计方法软件测试的一般方法算法的概念伪代码描述伪代码(pseudocode)是用介于自然语言与计算机语言之间的文字和符号来描述算法。无固定的、严格的语法规则,如同一篇文章,自上而下地写下来。可以用自
7、然语言,也可以用程序设计语言或使用自然语言与程序设计语言的混合体。伪代码书写方便,格式紧凑,也比较好懂,便于向计算机语言过渡。伪代码描述例6.2求5!即1*2*3*4*5开始置t的初值为1置i的初值为2当i<=5,执行循环{使t=t*i使i=i+1}打印t的值结束也可以写成以下形式:BEGINE1=>t2=>Iwhilei<5{t*i=>ti+1=>I}printtEND用计算机语言表示/*L6-1.C:判断一个数是否是素数*/#includeintmain(void){intm,w,
此文档下载收益归作者所有