控制结构程序设计方案.ppt
《控制结构程序设计方案.ppt》由会员分享,可在线阅读,更多相关《控制结构程序设计方案.ppt(156页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章控制结构程序设计控制结构程序设计2023/4/232023/4/231 1解析解析C C程序设计第程序设计第4 4章章 控制结构程序控制结构程序设计设计现实问题总是复杂的,面对各种需要解决现实问题总是复杂的,面对各种需要解决的问题,人们必须首先对各类问题进行分的问题,人们必须首先对各类问题进行分析,确定解决问题的方法和步骤即算法,析,确定解决问题的方法和步骤即算法,再借助具体编程语言编制好一组让计算机再借助具体编程语言编制好一组让计算机执行的指令(即程序),让计算机按人们执行的指令(即程序),让计算机按人们指定的步骤有效地工作。指定的步骤有效地工作。2023/4/232023/4/2
2、32 2解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计根据算法,依据某种编程语言的语法规则根据算法,依据某种编程语言的语法规则编写计算机执行的命令序列,就是程序设编写计算机执行的命令序列,就是程序设计。计。著名计算机科学家沃思(著名计算机科学家沃思(NikiklausWirth)提出了一个公式:)提出了一个公式:“数据结构算数据结构算法程序法程序”,即程序设计包括算法设计和数,即程序设计包括算法设计和数据存储。除此之外,还有结构化程序设计据存储。除此之外,还有结构化程序设计方法和计算机语言。方法和计算机语言。2023/4/232023/4/233 3解析解析C
3、C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计问题的提出问题的提出闰年问题:闰年问题:一年一年12个月,共个月,共365天,这是我天,这是我们说得最多的。但事实上,每年不完全是们说得最多的。但事实上,每年不完全是365天。在中国农历中有闰月的说法,而公天。在中国农历中有闰月的说法,而公历也有闰年的说法。一般情况下,历也有闰年的说法。一般情况下,2月是月是28天,而闰年时是天,而闰年时是29天,何年的天,何年的2月是月是29天呢,天呢,这就是闰年问题。编程判断一个年份是否这就是闰年问题。编程判断一个年份是否为闰年。为闰年。求根问题:编程求解一元二次方程的根。求根问题:编程求解
4、一元二次方程的根。2023/4/232023/4/234 4解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计本章内容本章内容l算法的基础知识算法的基础知识l大小写字母转换问题大小写字母转换问题顺序结构程序的概念顺序结构程序的概念字符数据的输入输出字符数据的输入输出l闰年问题闰年问题选择结构程序的概念选择结构程序的概念if语句语句switch语句语句l统计多名学生成绩问题统计多名学生成绩问题循环结构程序的概念循环结构程序的概念自增自减运算符与逗号表达式自增自减运算符与逗号表达式while循环循环dowhile循环循环for循环循环嵌套循环嵌套循环l应用实例应用实例2
5、023/4/232023/4/235 5解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计4.1算法的基础知识算法的基础知识算法是灵魂,是问题求解过程中的精确描算法是灵魂,是问题求解过程中的精确描述;数据结构是加工对象;语言是工具;述;数据结构是加工对象;语言是工具;编程需要采用合适的方法。编程需要采用合适的方法。算法:是对特定问题求解步骤的一种描述。算法:是对特定问题求解步骤的一种描述。程序:是用具体的计算机语言来描述算法程序:是用具体的计算机语言来描述算法的代码,可以输入计算机并产生结果。的代码,可以输入计算机并产生结果。2023/4/232023/4/236
6、6解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计常用算法常用算法 递推化算法递推化算法(牛顿迭代法、二分法、梯形法、穷举法等牛顿迭代法、二分法、梯形法、穷举法等);排序算法排序算法(选择法、冒泡法选择法、冒泡法);查找算法查找算法(顺序查找、折半查找顺序查找、折半查找);有序数列的插入、删除操作;有序数列的插入、删除操作;存储区的动态分配与释放,单向线性链表的建立、查找、存储区的动态分配与释放,单向线性链表的建立、查找、插入、删除操作;插入、删除操作;初等数论问题求解的有关算法初等数论问题求解的有关算法(最大公约数、最小公倍数、最大公约数、最小公倍数、素数等素数
7、等);递归算法递归算法(求最大公约数、阶乘等求最大公约数、阶乘等);字符串的处理字符串的处理(字符和字符串的插入、删除、字符串的连字符和字符串的插入、删除、字符串的连接、比较等接、比较等)。2023/4/232023/4/237 7解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计算法的五个特性算法的五个特性 有穷性:对任何合法的输入值,算法中每个步骤由计算有穷性:对任何合法的输入值,算法中每个步骤由计算机执行的次数及时间都是有限的。机执行的次数及时间都是有限的。确定性:算法中每个步骤含义明确,无二义性。在任何确定性:算法中每个步骤含义明确,无二义性。在任何条件下,
8、相同的输入,必有相同的输出。条件下,相同的输入,必有相同的输出。可行性:算法中描述的操作都可通过有限次的基本运算可行性:算法中描述的操作都可通过有限次的基本运算来实现。来实现。输入:一个算法应具有零个或多个输入。输入:一个算法应具有零个或多个输入。(无输入情况:如求:无输入情况:如求:1*2*3*4*5)。输出:一个算法应具有一个或多个输入。输出:一个算法应具有一个或多个输入。2023/4/232023/4/238 8解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计算法的设计目标算法的设计目标正确性:设计的算法应当满足具有输入、输出和加工处理等明确的无歧义正确性:
9、设计的算法应当满足具有输入、输出和加工处理等明确的无歧义 性的描述的具体问题的需求。验证正确性通常有性的描述的具体问题的需求。验证正确性通常有4 4个层次:个层次:程序不含语法错误;程序不含语法错误;程序对于几组输入数据能够得出满足规格说明要求的结果;程序对于几组输入数据能够得出满足规格说明要求的结果;程序对于精心选择的典型、苛刻而带有刁难性的几组输入数据程序对于精心选择的典型、苛刻而带有刁难性的几组输入数据 能够得出满足规格说明要求的结果;能够得出满足规格说明要求的结果;程序对于一切合法的输入数据能够得出满足规格说明要求的结程序对于一切合法的输入数据能够得出满足规格说明要求的结 果。果。一般
10、情况至少通过第一般情况至少通过第层的验证。层的验证。可读性:算法主要是为了阅读与交流,其次才是机器执行。可读性好有助可读性:算法主要是为了阅读与交流,其次才是机器执行。可读性好有助 于人对算法的理解;难懂的程序易于隐藏较多错误,难以调试和于人对算法的理解;难懂的程序易于隐藏较多错误,难以调试和 修改。修改。健状性:当输入非法数据时,算法也能适当地做出反应或进行处理,而不健状性:当输入非法数据时,算法也能适当地做出反应或进行处理,而不 会产生莫名其妙的输出结果。会产生莫名其妙的输出结果。效率与低存储量的需求:主要指算法执行时的最长时间与所需的最大存储效率与低存储量的需求:主要指算法执行时的最长时
11、间与所需的最大存储 空间。空间。2023/4/232023/4/239 9解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计算法的描述方法算法的描述方法自然语言自然语言流程图流程图N-S图图PAD图图伪代码伪代码2023/4/232023/4/231010解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计用自然语言表示算法用自然语言表示算法自然语言就是人们日常使用的语言,可以自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。用自然语言表是汉语、英语或其他语言。用自然语言表示通俗易懂,但文字冗长,容易出现示通俗易懂,但文字冗长,容
12、易出现“歧歧义性义性”。除了简单问题外,一般不用自然。除了简单问题外,一般不用自然语言描述算法。例如:语言描述算法。例如:2023/4/232023/4/231111解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计【例【例4-1】输入三个数,然后输出其中最大】输入三个数,然后输出其中最大的数。的数。(1)输入输入A,B,C。(2)若若AB,则,则MAX=A;否则;否则MAX=B。(3)若若CMAX,则,则MAX=C。(4)输出输出MAX,MAX即为最大数。即为最大数。2023/4/232023/4/231212解析解析C C程序设计第程序设计第4 4章章 控制结构
13、程序设计控制结构程序设计例:用自然语言写出求例:用自然语言写出求 1-1/2+1/3-1/4+1/99-1/100的算法。的算法。(1 1)sign=1 /*sign=1 /*数值的符号数值的符号*/(2 2)sum=1 /*sum=1 /*累加和累加和*/(3 3)deno=2 /*deno=2 /*分母值分母值*/(4 4)sign=(-1)*signsign=(-1)*sign(5 5)term=sign*(1/deno)/*term=sign*(1/deno)/*某一项的值某一项的值*/(6 6)sum=sum+termsum=sum+term(7 7)deno=deno+1denoj
14、ij输出输出maxmaxkmaxkmaxmax=imax=imax=jmax=jmax=kmax=k结束结束Y YN NY YN N2023/4/232023/4/232121解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计流程图举例流程图举例用流程图表示出求用流程图表示出求用流程图表示出求用流程图表示出求的算法。的算法。开始1 =sign1 =sum2 =denoadeno+1 =deno(-1)*sign =signsign*(1/deno)=termsum+term =sumdeno100NYab结束打印打印sumb2023/4/232023/4/23222
15、2解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计算法的描述算法的描述N-S图图 既然用基本结构的顺序组合可以表示任何复杂的算法结构,那么,基本既然用基本结构的顺序组合可以表示任何复杂的算法结构,那么,基本结构之间的流程线就属多余的了。结构之间的流程线就属多余的了。19731973年美国两学者年美国两学者I.NassiI.Nassi和和B.ShneidermanB.Shneiderman提出了一种新的流程图形式,并以他们的名字命名为提出了一种新的流程图形式,并以他们的名字命名为NSNS结构结构化流程图。这种流程图完全去掉了带箭头的流程线,全部算法写在一个矩形化流程
16、图。这种流程图完全去掉了带箭头的流程线,全部算法写在一个矩形框内,在该框内还可以包括其他的从属于它的框,即由一些基本的框组成一框内,在该框内还可以包括其他的从属于它的框,即由一些基本的框组成一个大框。这种个大框。这种NSNS流程图十分适合结构化程序设计,因而很受欢迎。流程图十分适合结构化程序设计,因而很受欢迎。三种基本结构对应的三种基本结构对应的NSNS图符号图符号:A B当当p成立成立A直到直到p成立成立AAB成立成立不成立不成立p顺序结构顺序结构 选择结构选择结构 当当(while)型循环结构型循环结构 直到直到(until)型循环结构型循环结构2023/4/232023/4/232323
17、解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计输入输入i i、j j、k k输出输出maxmaxY YY YN NN Nijijkmaxkmaxmax=imax=imax=jmax=jmax=kmax=k2023/4/232023/4/232424解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计例例4-4用用NS图表示求素数的算法图表示求素数的算法 素数是指除了素数是指除了1和该数本身和该数本身之外,不能被其他任何整数整之外,不能被其他任何整数整除的数。除的数。实际上,若要判断一个正整实际上,若要判断一个正整数数m是否为素数,只要将
18、是否为素数,只要将2到到 间的每一个整数去除间的每一个整数去除m,若有一,若有一个能整除个能整除m,则,则m不是素数,若不是素数,若其间的所有整数都不能整除其间的所有整数都不能整除m,则则m为素数。为素数。读入读入mk=mi=2当当i km被被i整除整除真真假假用用break结束循环结束循环i=i+1i k+1真真假假输出输出:m”是素数是素数”输出输出:m”不不是素数是素数”m2023/4/232023/4/232525解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计算法的描述算法的描述PAD图图AB顺序结构的PADWHILEAa)b)UNTILA循环结构的PA
19、D选择结构的PADc)ABCDi1i2i3i4I=b)PABa)PAPADPAD(Problem Analysis DiagramProblem Analysis Diagram),是近年来在软件开发中被广泛使用的),是近年来在软件开发中被广泛使用的一种算法的图形表示法,与前面介绍的流程图、一种算法的图形表示法,与前面介绍的流程图、N-SN-S图相比,流程图、图相比,流程图、N-SN-S图都是自上而下的顺序描述,而图都是自上而下的顺序描述,而PADPAD图除了自上而下以外,还有自左向右的图除了自上而下以外,还有自左向右的展开,所以,如果说流程图、展开,所以,如果说流程图、N-SN-S图是一维的
20、算法描述的话,则图是一维的算法描述的话,则PADPAD图就是图就是二维的,它能展现算法的层次结构,更直观易懂。二维的,它能展现算法的层次结构,更直观易懂。PADPAD图表示的三种基本结构如下所示:图表示的三种基本结构如下所示:2023/4/232023/4/232626解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计例:求三个数的最大值的例:求三个数的最大值的PAD图图max=imax=imax=jmax=jmax=kmax=k输入输入i i、j j、k k输出输出maxmaxijijkmaxkmax2023/4/232023/4/232727解析解析C C程序设
21、计第程序设计第4 4章章 控制结构程序设计控制结构程序设计算法的描述算法的描述伪代码伪代码 用流程图、用流程图、N-SN-S图、图、PADPAD图等描述算法,直观易懂,但绘制比较麻烦,在图等描述算法,直观易懂,但绘制比较麻烦,在设计一个算法时,可能要反复修改,而修改流程图是比较麻烦的,因此,流设计一个算法时,可能要反复修改,而修改流程图是比较麻烦的,因此,流程图适合表示算法,但在设计算法过程中使用不是很理想。为了设计算法方程图适合表示算法,但在设计算法过程中使用不是很理想。为了设计算法方便,常使用伪代码工具。便,常使用伪代码工具。伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。伪
22、代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。伪代码不用图形符号,书写方便,格式紧凑,便于向计算机语言算法过渡。伪代码不用图形符号,书写方便,格式紧凑,便于向计算机语言算法过渡。因此,实际中常用伪代码描述算法。因此,实际中常用伪代码描述算法。例:求三个数的最大值的伪代码算法描述如下:例:求三个数的最大值的伪代码算法描述如下:l定义三个变量定义三个变量i i、j j、k k,用来存放三个数,定义变量,用来存放三个数,定义变量maxmax存放最大值;存放最大值;l输入三个变量的值;输入三个变量的值;lmax=imax=ij?i:jj?i:j;lmax=max=maxmax k?max
23、:kk?max:k;l输出输出maxmax。2023/4/232023/4/232828解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计例:用自然语言写出求例:用自然语言写出求 1-1/2+1/3-1/4+1/99-1/100的算法。的算法。(1 1)sign=1 /*sign=1 /*数值的符号数值的符号*/(2 2)sum=1 /*sum=1 /*累加和累加和*/(3 3)deno=2 /*deno=2 /*分母值分母值*/(4 4)sign=(-1)*signsign=(-1)*sign(5 5)term=sign*(1/deno)/*term=sign*(
24、1/deno)/*某一项的值某一项的值*/(6 6)sum=sum+termsum=sum+term(7 7)deno=deno+1deno=deno+1(8 8)若)若deno100deno100返回第返回第(4)(4)步,否则转第步,否则转第(9)(9)步步(9 9)输出)输出sumsum2023/4/232023/4/232929解析解析C C程序设计第程序设计第4 4章章 控制结构程序设计控制结构程序设计算法的描述算法的描述计算机语言计算机语言 用计算机语言表示算法实际上就是计算机程序。用计算机语言表示算法用计算机语言表示算法实际上就是计算机程序。用计算机语言表示算法必须严格遵守所使用
25、的语言的语法规则。必须严格遵守所使用的语言的语法规则。例:用例:用C C语言表示求三个数的最大值的算法如下:语言表示求三个数的最大值的算法如下:#include#include void main()void main()int i,j,k,max;/*int i,j,k,max;/*定义变量定义变量*/printf(i,j,k=?n);/*printf(i,j,k=?n);/*提示信息提示信息*/scanf(%4d%4d%4d,&i,&j,&k);/*scanf(%4d%4d%4d,&i,&j,&k);/*输入函数输入函数*/max=ij?i:j;/*max=ij?i:j;/*求两数的最大值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制 结构 程序设计 方案
限制150内