程序控制结构.ppt
《程序控制结构.ppt》由会员分享,可在线阅读,更多相关《程序控制结构.ppt(85页珍藏版)》请在三一办公上搜索。
1、第4章 程序控制结构,4.3 选择控制,4.4 循环控制,小结,语句是程序的基本语法成分,C语言语句以分号结束。程序设计语言的语句按功能可以分成:1 表达式语句 描述对数据的处理 int x=5;int y;y=x-52 说明(申明)语句 变量、常量、函数的定义或申明 int NumOfStudent,4.1 C语言语句概述,4.1 C语言语句概述,3 复合语句(语句块):括住的若干条语句构成一个语句块称为复合语句。在语法上复合语句也是单语句。语句块内可以定义变量变量仅在定义它的语句块内(包括下层语句块)有效(scope.c)同一个语句块内的变量不可同名,不同语句块可以同名(homonym.c
2、)各司其职、下层优先尽量不要在下层语句块内定义变量,也尽量不要定义同名变量复合语句可以用在任何可以使用语句的地方,4 控制语句 用于控制程序的执行流程。包括三种控制结构和转向语句所有程序都只能包含三种控制结构:顺序结构、选择结构和循环结构 转向语句 goto,break,continue,return 后面详细说明,4.1 C语言语句概述,已经证明,任何程序均可只用三种结构实现Bhm,Corrado,and Jacopini Guiseppe.Flow diagrams,Turing machines and languages with only two formation rules.Co
3、mmunication of ACM,9(5):366-371,May 1966.只用这三种结构的程序,叫结构化程序程序“必须”符合结构化规则,4.2 C语言的基本结构,4.2 C语言的基本结构,顺序结构,选择结构,循环结构,语句块,对给定的条件进行判断,并根据判断的结果选择不同的操作,4.3 选择语句,条件运算表达式根据判断条件,决定表达式的值不改变程序语句执行流程,1if 语句的形式和执行流程,if(表达式)语句 块;,4.3.1 if 语句,语句形式(1),语句形式(2),if(表达式)语句块1;else 语句块2;,1if 语句的形式和执行流程,4.3.1 if 语句,4.3.1 if
4、 语句,2if 语句的嵌套,if 语句中的执行语句如果又是另一个if语句,称为嵌套if语句 if 与 else 的配对关系:C+规定,else 总是与它接近的if 配对,if(表达式1)语句块1;else if(表达式2)语句块2;else if(表达式3)语句块3;else语句块4;语句块5;else部分可以没有,2if 语句的嵌套,应用举例,(1)把输入字符转换为小写字母。对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,不转换。,/例#include void main()char ch;cout ch;if(ch=A,输入的是大写字母,计算ASCII码偏移值,应用举例,把输入
5、字符转换为小写字母。对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,不转换。,/例#include void main()char ch;cout ch;if(ch=A,改写为条件表达式ch=(ch=A,(1)当条件表达式中包含&和|操作时,C+将进行短路求值。E1&E2 当表达式 E1 的值为 0 时,不对 E2 求值E1|E2 当表达式 E1 值为非 0 时,不再对 E2 求值,int a=3;int b=10;int c=0if(a2|b/c10).,由于a3这个表示式计算结果为0,所以后面的表达式不再计算,即使出现了除0错误;如果没有短路求值,则发生”除0错误”,由于a2这
6、个表示式计算结果为1,所以后面的表达式不再计算,if 语句的的注意事项,if 语句的的注意事项,(2)不可将浮点变量用“=”或“!=”与任何数字比较。无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“=”或“!=”与数字比较,应该设法转化成“=”或“=”形式。,if(x=-EPSINON)&(x=EPSINON)其中EPSINON是允许的误差(即精度)。,多分支选择语句;将表达式的值与常量比较,如果与某一常量相等,则执行该常量后语句;如果与所有常量均不相等,则执行默认语句(default),无默认语句,则什么也不做。,switch(表达式)case 常量1:
7、语句块1;break;case 常量2:语句块2;break;case 常量n:语句块n;break;default:语句块n+1;break;,语句标记,4.3.2 switch语句,swith语句执行流程,4.3.2 switch语句,switch使用注意事项:(1)switch后面括号内的“表达式”,允许为任何类型。(2)case后可以是常量表达式或者整数值;常量表达式样值只能是整型、字符型、枚举型,不能是其他类型(3)每一个case表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。,4.3.2 switch语句,(4)各个case和defa
8、ult的出现次序不影响执行结果。例如,可以先出现“default:”,再出现“case D:”,然后是“case A:”。(5)执行完一个case子句后,流程控制转移到下一个case子句继续执行。“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断.直到遇到break或者switch结束为止。,4.3.2 switch语句,#include using namespace std;int main(void)int day;cin day;switch(day)case 0:cout Sunday endl;break;case 1:cout Monday endl;break;
9、case 2:cout Tuesday endl;break;case 3:cout Wednesday endl;break;case 4:cout Thursday endl;break;case 5:cout Friday endl;break;case 6:cout Saturday endl;break;default:cout Day out of range Sunday.Saturday endl;break;,例:4-3,4.3.2 switch语句,switch(int(E1)case 1:S1;break;case 0:S2;,if 与 switch 语句互换,if(E1
10、)S1;else S2;,2.1.2 switch 语句,4.3.2 switch语句,if 与 switch 语句互换,switch(int(a b)case 1:max=a;break;case 0:max=b;,if(a b)max=a;else max=b;,2.1.2 switch 语句,4.3.2 switch语句,if 语句switch 语句 形成分支控制流程 不形成程序控制流程 用于复杂条件判断 表达式的值为数值集合时作多分支控制,可读性较好,与 if 语句比较:,2.1.2 switch 语句,为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。
11、,循环概念,4.4 循环控制,为了锻炼身体,我要每天晚上在操场在跑10圈,两种典型循环结构,4.4 循环控制,4.4 循环控制,循环的组成部分循环体循环变量循环终止条件设计循环时应考虑的因素循环体的算法是什么?循环变量是什么?循环终止条件是什么如何改变循环变量C+的三种循环结构while语句先判断条件型do语句后判断条件型for语句先判断条件型,4.4.1 while语句,语句形式,while(表达式 e)循环体 s;,逻辑表达式不管表达式形式如何,结果都作为逻辑值,重复执行的操作直至表达式的值为false(0),执行流程,#include void main()int i=1,sum=0;w
12、hile(i=100)sum=sum+i;i+;cout sum=sum endl;,想一想:循环条件是什么?循环结束条件是什么?哪一个语句修改循环条件?,一个简单的循环跟踪:求,4.4.1 while语句,求两个正整数 m 和 n 的最大公约数,例如:m=24,n=924 和 9 的最大公约数等于(24%9)=6 和 9 的最大公约数;9 和 6 的最大公约数等于(9%6)=3 和 6 的最大公约数;6 和 3 的最大公约数等于(6%3)=0 和 3 的最大公约数;所以,24 和 9 的最大公约数等于 3。,辗转相除法:当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数;
13、当 n=0,m 和 n 的最大公约数等于 m。,a=m,b=n,r=b;while(r!=0)把 a%b 的值赋给 r;用 b 的值替换 a 的值;用 r 的值替换 b 的值;a 是最大公约数,辗转相除法:当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数;当 n=0,m 和 n 的最大公约数等于 m。,24%9,求两个正整数 m 和 n 的最大公约数,a=m,b=n,r=b;while(r!=0)把 a%b 的值赋给 r;用 b 的值替换 a 的值;用 r 的值替换 b 的值;a 是最大公约数,辗转相除法:当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公
14、约数;当 n=0,m 和 n 的最大公约数等于 m。,求两个正整数 m 和 n 的最大公约数,a=m,b=n,r=b;while(r!=0)把 a%b 的值赋给 r;用 b 的值替换 a 的值;用 r 的值替换 b 的值;a 是最大公约数,辗转相除法:当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数;当 n=0,m 和 n 的最大公约数等于 m。,求两个正整数 m 和 n 的最大公约数,9%6,a=m,b=n,r=b;while(r!=0)把 a%b 的值赋给 r;用 b 的值替换 a 的值;用 r 的值替换 b 的值;a 是最大公约数,辗转相除法:当 m n,m 与 n
15、 的最大公约数等于 n 和 m%n 的最大公约数;当 n=0,m 和 n 的最大公约数等于 m。,求两个正整数 m 和 n 的最大公约数,a=m,b=n,r=b;while(r!=0)把 a%b 的值赋给 r;用 b 的值替换 a 的值;用 r 的值替换 b 的值;a 是最大公约数,辗转相除法:当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数;当 n=0,m 和 n 的最大公约数等于 m。,求两个正整数 m 和 n 的最大公约数,a=m,b=n,r=b;while(r!=0)把 a%b 的值赋给 r;用 b 的值替换 a 的值;用 r 的值替换 b 的值;a 是最大公约数
16、,辗转相除法:当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数;当 n=0,m 和 n 的最大公约数等于 m。,求两个正整数 m 和 n 的最大公约数,6%3,a=m,b=n,r=b;while(r!=0)把 a%b 的值赋给 r;用 b 的值替换 a 的值;用 r 的值替换 b 的值;a 是最大公约数,辗转相除法:当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数;当 n=0,m 和 n 的最大公约数等于 m。,求两个正整数 m 和 n 的最大公约数,a=m,b=n,r=b;while(r!=0)把 a%b 的值赋给 r;用 b 的值替换 a 的值;
17、用 r 的值替换 b 的值;a 是最大公约数,辗转相除法:当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数;当 n=0,m 和 n 的最大公约数等于 m。,求两个正整数 m 和 n 的最大公约数,a=m,b=n,r=b;while(r!=0)把 a%b 的值赋给 r;用 b 的值替换 a 的值;用 r 的值替换 b 的值;a 是最大公约数,辗转相除法:当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数;当 n=0,m 和 n 的最大公约数等于 m。,求两个正整数 m 和 n 的最大公约数,3 是 24 和 9 的最大公约数,a=m,b=n,r=b;wh
18、ile(r!=0)把 a%b 的值赋给 r;用 b 的值替换 a 的值;用 r 的值替换 b 的值;a 是最大公约数,辗转相除法:当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数;当 n=0,m 和 n 的最大公约数等于 m。,求两个正整数 m 和 n 的最大公约数,#include void main()int m,n,a,b,r;cout m;cout n;if(m n)a=m;b=n;else a=n;b=m;r=b;while(r!=0)r=a%b;a=b;b=r;cout m and n maximal common divisor is:a endl;,求两个
19、正整数 m 和 n 的最大公约数,提示输入数据,将最大数赋给a,初始余数,求新的余数,循环条件更改,4.4.2 do_while语句,语句形式,do 循环体 while(表达式);,4.4.2 do_while语句,表达式后的分号不能缺少。适用于循环至少执行一次的情况,例如,用do_while语句的求和式 的程序,#include void main()int i=1,sum=0;do sum+=i;i+;while(i=100);cout sum=sum endl;,4.4.2 do_while语句,4.4.2 do_while语句,4.4.2 do_while语句,#include voi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序控制 结构
链接地址:https://www.31ppt.com/p-6481992.html