《第4章流程控制.ppt》由会员分享,可在线阅读,更多相关《第4章流程控制.ppt(61页珍藏版)》请在优知文库上搜索。
1、 4-1 4-1 结构化程序设计结构化程序设计 4-2 C4-2 C语句概述语句概述 4-3 4-3 选择语句选择语句 4-4 4-4 循环语句循环语句 4-5 4-5 辅助控制语句辅助控制语句 4-6 4-6 习题习题 结构化程序设计思想结构化程序设计思想 算法算法 传统流程图表示的三种结构传统流程图表示的三种结构 N/SN/S方框图表示的三种结构方框图表示的三种结构 小结小结4-1 结构化程序设计结构化程序设计 4.1.14.1.1 结构化程序设计结构化程序设计 思想思想任何程序都可以用三种基本结构表示,即用顺序任何程序都可以用三种基本结构表示,即用顺序(Composition)(Comp
2、osition)、选择、选择(Alternation)(Alternation)和循环和循环(Iteration)(Iteration)结结构来表示。构来表示。这三种结构反复组合、嵌套构成的程序称为结构化程序。这三种结构反复组合、嵌套构成的程序称为结构化程序。顺序结构的程序流程是按照语句的顺序依次执行;选择顺序结构的程序流程是按照语句的顺序依次执行;选择结构是根据给定的条件进行判断,由判断结构决定执行两结构是根据给定的条件进行判断,由判断结构决定执行两支或多支程序段中的一支;循环结构是在给定条件成立的支或多支程序段中的一支;循环结构是在给定条件成立的情况下,反复执行某个程序段。情况下,反复执行
3、某个程序段。优点优点结构化程序层次分明、结构清晰、有效地改善了程序的结构化程序层次分明、结构清晰、有效地改善了程序的可靠性,从而大大地提高了程序设计的质量和效率可靠性,从而大大地提高了程序设计的质量和效率。4-1 概述概述员工工资管理系统员工工资管理系统税率计算税率计算员工福利员工福利员工出勤记录员工出勤记录保险费保险费退休金退休金4-1 结构化程序设计结构化程序设计自顶向下,逐步求精自顶向下,逐步求精 4.1.24.1.2 算法算法 “算法算法”是为解决一个具体问题而采取的确定的有限的是为解决一个具体问题而采取的确定的有限的操作步骤。操作步骤。(数据结构)(算法)(数据结构)(算法)程序程序
4、 N NWirthWirth 算法的表示方法:算法的表示方法:传统的流程图传统的流程图 N/SN/S方框图方框图 自然语言自然语言 伪码伪码 问题求解图(问题求解图(PADPAD)明确问题明确问题利用某种语言利用某种语言描述算法描述算法设计算法设计算法4-1 结构化程序设计结构化程序设计 4.1.3 4.1.3 传统流程图表示的三种结构传统流程图表示的三种结构开始开始/结束框结束框一般处理框一般处理框判断框判断框输入输入/输出框输出框流程线流程线连接符连接符4-1 结构化程序设计结构化程序设计 4.1.34.1.3 传统流程图表示的三种结构传统流程图表示的三种结构 顺序结构顺序结构(Compo
5、sition)(Composition)AB4-1 结构化程序设计结构化程序设计 4.1.3 4.1.3 传统流程图表示的三种结构传统流程图表示的三种结构 选择结构选择结构(Alternation)(Alternation)AB条件条件P成立成立不成立不成立4-1 结构化程序设计结构化程序设计 4.1.34.1.3 传统流程图表示的三种结构传统流程图表示的三种结构 循环结构循环结构(Iteration)(Iteration)不成立不成立条件条件PA成立成立成立成立A条件条件P不成立不成立(1)当型)当型(2)直到型)直到型4-1 结构化程序设计结构化程序设计实例实例1 1:计算:计算1+2+3
6、+1+2+3+100+100的值的值i=i+1s=s+i开始开始NY循环变量循环变量i 置置1累加器累加器s 置置0i=100?结束结束输出输出s4-1 结构化程序设计结构化程序设计 这是一款意大利生产的多功能厨具这是一款意大利生产的多功能厨具|请猜价格!请猜价格!600答案是:答案是:720低了!低了!800750700高了!高了!高了!高了!正确!正确!这是一款瑞士生产的多功能刀具这是一款瑞士生产的多功能刀具|请猜价格!请猜价格!600高了!高了!500高了!高了!时间到!时间到!1个商标个商标720低了!低了!答案是:答案是:4284-1 结构化程序设计结构化程序设计实例实例2 2:幸运
7、:幸运5252“幸运幸运5252”的传统流程图的传统流程图否否是是是是是是否否否否否否是是时间到?时间到?输出产品特点输出产品特点新产品?新产品?开始开始计时计时商标数清商标数清0猜对了?猜对了?猜高了?猜高了?输入猜想价格输入猜想价格输出输出“高了!高了!”输出输出“正确!正确!”输出输出“低了!低了!”累计商标数累计商标数结束结束输出商标数输出商标数输出输出“时间到!时间到!”传统流程图的优缺点传统流程图的优缺点 优点:形象直观,各种操作一目了然,不会优点:形象直观,各种操作一目了然,不会产生产生“歧义性歧义性”,便于理解,算法出错时容,便于理解,算法出错时容易发现,并可直接转化为程序。易
8、发现,并可直接转化为程序。缺点:所占篇幅较大,由于使用流程线,过缺点:所占篇幅较大,由于使用流程线,过于灵活,不受约束,使用者可使流程线任意于灵活,不受约束,使用者可使流程线任意转移,从而造成程序阅读和修改的困难,不转移,从而造成程序阅读和修改的困难,不利于结构化程序的设计。利于结构化程序的设计。4-1 结构化程序设计结构化程序设计 4.1.44.1.4 N/S N/S方框图方框图 N/SN/S方框图是由美国学者方框图是由美国学者I INassiNassi和和B BSchneiderman Schneiderman 于于19731973年提出的。年提出的。N/SN/S方框图的重要特点就是完全取
9、消了流程线,方框图的重要特点就是完全取消了流程线,这样,算法被迫只能顺序执行,从而避免了流这样,算法被迫只能顺序执行,从而避免了流程的任意转向,保证了程序的质量。尤其适合程的任意转向,保证了程序的质量。尤其适合结构化程序的设计。结构化程序的设计。N/SN/S方框图的另一个优点是既形象直观,又节方框图的另一个优点是既形象直观,又节省篇幅。省篇幅。4-1 结构化程序设计结构化程序设计4-1 结构化程序设计结构化程序设计 4.1.44.1.4 N/S N/S方框图方框图 顺序结构顺序结构(Composition)(Composition)AB4-1 结构化程序设计结构化程序设计 4.1.44.1.4
10、 N/S N/S方框图方框图 选择结构选择结构(Alternation)(Alternation)AB条件条件P P成立成立不成立不成立4-1 结构化程序设计结构化程序设计 4.1.44.1.4 N/S N/S方框图方框图 循环结构循环结构(Iteration)(Iteration)A当当P成立成立A直到直到P成立成立(1)当型)当型(2)直到型)直到型实例实例1 1的的N/SN/S方框图方框图累加器累加器s 置置0循环变量循环变量i 置置1i=i+1s=s+ii=100?输出输出s4-1 结构化程序设计结构化程序设计 表达式语句表达式语句 表达式;表达式;赋值语句赋值语句 i=10;i=10
11、;函数调用语句函数调用语句 printf(Hello!n);printf(Hello!n);流程控制语句流程控制语句 选择选择 ifelse,elseif,switchcaseifelse,elseif,switchcase 循环循环 for,while,dowhilefor,while,dowhile 辅助控制辅助控制 break,continue,goto,returnbreak,continue,goto,return 空语句空语句 ;什么也不干什么也不干 for(i=1;i5000;i+);for(i=1;i5000;i+);延时延时 for(i=0;i100;ai+=0);for(i
12、=0;ib)t=a;a=b;b=t;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;if(bc)t=b;b=c;c=t;printf(%5.2f=%5.2f=%5.2fn,a,b,c);printf(%5.2f=%5.2f=%5.2fn,a,b,c);4.3.1 if4.3.1 if 语句语句 格式:格式:if(表达式表达式)语句;语句;说明:说明:一般语言,一般语言,if 后是关系或逻辑表达式,而后是关系或逻辑表达式,而C无要求无要求 if 只是测试表达式的值,当表达式的值为非只是测试表达式的值,
13、当表达式的值为非0时,执行语句时,执行语句 if(表达式表达式)if(表达式表达式!=0)if(!表达式表达式)if(表达式表达式=0)“语句语句”为一条语句或复合语句为一条语句或复合语句4-3 选择语句选择语句 4.3.2 4.3.2 ifelse ifelse 语句语句 格式:格式:if(if(表达式表达式)语句语句1 1;else else 语句语句2 2;说明:说明:n 表达式仍为一般表达式,当表达式非表达式仍为一般表达式,当表达式非0 0时,执行时,执行语句语句1 1,否则,执行语句,否则,执行语句2 2n “语句语句1 1”、“语句语句2 2”均为一条语句或复合语句均为一条语句或复
14、合语句4-3 选择语句选择语句 根据需要交换两个变量的值根据需要交换两个变量的值#include main()int a,b,x,ch;printf(Enter two integers:);scanf(%d%d,&a,&b);printf(Swap?(y/n):);ch=getchar();if(ch=y|ch=Y)x=a;a=b;b=x;printf(a=%d,b=%d,a,b);else printf(No swap!n);加上加上就行了!就行了!if(n0)if(n0)if(ab)z=a;if(ab)z=a;else z=b;else z=b;4-3 选择语句选择语句要想在要想在n=0
15、n0)if(n0)if(ab)z=a;if(ab)z=a;else z=b;else z=b;什么时候执行什么时候执行z=b;z=b;?太简单了!太简单了!elseelse总是与总是与其上最近的且未与其他其上最近的且未与其他elseelse配对的配对的if if 配对,因配对,因此此n0n0并且并且a=bamagic)if(guessmagic)printf(printf(“Too high!nToo high!n”););else else printf(Too low!n printf(Too low!n”););4-3 选择语句选择语句main()main()int magic=200,
16、guess;int magic=200,guess;printf(printf(“Please guess a magic number:Please guess a magic number:”););scanf(%d,&guess);scanf(%d,&guess);if(guess=magic)if(guess=magic)printf(printf(“Right!nRight!n”););else if(guessmagic)else if(guessmagic)printf(printf(“Wrong!Too big!nWrong!Too big!n”););else else printf(Wrong!Too small!n printf(Wrong!Too small!n”););猜数数游戏:由计算机猜数数游戏:由计算机“想想”一个数请人猜,若猜对了则给一个数请人猜,若猜对了则给出提示出提示“RightRight”,否则提示,否则提示“WrongWrong”,并告诉人是大还是小,并告诉人是大还是小了?了?4-3 选择语句选择语句输入学号及成绩,并根据成绩定等级输入学号及成