预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共29页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
算法与流程图一个程序应包括两个方面的内容:#include<iostream>usingnamespacestd;intmain(){inta,b,c;a=10;b=23;c=a+b;cout<<"a+b=";cout<<c;cout<<endl;return0;}2.1算法的概念2.1算法的分类2.2简单算法举例S1:使p=1。S2:使i=2。S3:使p×i,乘积仍放在变量p中,可表示为:p×i->pS4:使i的值加1,即i+1->i。S5:如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则,算法结束。最后得到p的值就是5!的值。S1:1→pS2:3→iS3:p×i→pS4:i+2→pS5:若i≤1000,返回S3。否则,结束。用这种方法表示的算法具有通用性、灵活性。S3到S5组成一个循环,在实现算法时要反复多次执行S3,S4,S5等步骤,直到某一时刻,执行S5步骤时经过判断,乘数i已超过规定的数值而不返回S3步骤为止。此时算法结束,变量p的值就是所求结果。例2.2有50个学生,要求将他们之中成绩在80分以上者打印出来。设n表示学号,n1代表第一个学生学号,ni代表第i个学生学号。用g1代表第一个学生成绩,gi代表第i个学生成绩,算法表示如下:如果需要输入成绩例2.3判定2000~2500年中的每一年是否闰年,将结果输出。设y为被检测的年份,算法可表示如下:S1:2000→yS2:若y不能被4整除,则输出y“不是闰年”。然后转到S6。S3:若y能被4整除,不能被100整除,则输出y“是闰年”。然后转到S6。S4:若y能被100整除,又能被400整除,输出y“是闰年”,否则输出“不是闰年”。然后转到S6。S5:输出y“不是闰年”。S6:y+1→yS7:当y≤2500时,转S2继续执行,如y>2500,算法停止。2.3算法的特性2.4算法的表示2.4.1用自然语言表示算法2.4.2用流程图表示算法例2.7将例2.2的算法用流程图表示。打印50名学生中成绩在80分以上者的学号和成绩。如果如果包括这个输入数据的部分,流程图为例2.8将例2.3判定闰年的算法用流程图表示小结:2.5结构化程序设计方法采取以下方法来保证得到结构化的程序:自顶向下;逐步细化;模块化设计;结构化编码。用这种方法逐步分解,直到作者认为可以直接将各小段表达为文字语句为止。这种方法就叫做“自顶向下,逐步细化”。自顶向下,逐步细化方法的优点:考虑周全,结构清晰,层次分明,作者容易写,读者容易看。如果发现某一部分中有一段内容不妥,需要修改,只需找出该部分修改有关段落即可,与其它部分无关。我们提倡用这种方法设计程序。这就是用工程的方法设计程序。模块设计的方法:模块化设计的思想实际上是一种“分而治之”的思想,把一个大任务分为若干个子任务,每一个子任务就相对简单了。在拿到一个程序模块以后,根据程序模块的功能将它划分为若干个子模块,如果这些子模块的规模还嫌大,还再可以划分为更小的模块。这个过程采用自顶向下方法来实现。子模块一般不超过50行。划分子模块时应注意模块的独立性,即:使一个模块完成一项功能,耦合性愈少愈好。作业:写出以下两题的算法,并用流程图表示出来(9月15日提交作业)