1 / 48

一、流程控制 控制程序中语句的执行顺序。 二、流程控制方式: 顺序控制、条件分支控制、循环控制。 三、程序结构种类: 顺序结构、条件分支结构、循环结构。

一、流程控制 控制程序中语句的执行顺序。 二、流程控制方式: 顺序控制、条件分支控制、循环控制。 三、程序结构种类: 顺序结构、条件分支结构、循环结构。. 4.1 流程控制与程序结构. 1 、顺序流程 程序中的语句按先后顺序依此执行。 如: ( 1 ) int i; ( 2 ) cin>>i; ( 3 ) cout<<i﹡2; 计算机按语句的先后顺序依此执行 ( 1 )( 2 )( 3 ). 4.1 流程控制与程序结构. 2 、条件分支结构 ( 1 )由特定的条件决定执行哪个语句。 ( 2 )分类 ☆ 单分支结构

chipo
Download Presentation

一、流程控制 控制程序中语句的执行顺序。 二、流程控制方式: 顺序控制、条件分支控制、循环控制。 三、程序结构种类: 顺序结构、条件分支结构、循环结构。

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 一、流程控制 控制程序中语句的执行顺序。 二、流程控制方式: 顺序控制、条件分支控制、循环控制。 三、程序结构种类: 顺序结构、条件分支结构、循环结构。 4.1 流程控制与程序结构

  2. 1、顺序流程 程序中的语句按先后顺序依此执行。 如:(1)int i; (2)cin>>i; (3)cout<<i﹡2; 计算机按语句的先后顺序依此执行 (1)(2)(3) 4.1 流程控制与程序结构

  3. 2、条件分支结构 (1)由特定的条件决定执行哪个语句。 (2)分类 ☆单分支结构 ☆多分支结构 (3)条件分支结构用if语句或switch语句实现。 4.1 流程控制与程序结构

  4. 3、循环结构 (1)由特定的条件决定某个语句重复 执行的次数。 (2)分类 ☆先判断后执行结构 ☆先执行后判断结构 (3)循环结构用for语句, while语句或 do…while 语句来实现。 4.1 流程控制与程序结构

  5. 说明: 1、三种程序结构的共同特点: 只有一个入口和一个出口。 2、三种程序结构之间的关系: ☆衔接:一个结构的出口是另一个结构的入口。 ☆嵌套:自身嵌套、相互嵌套 4.1 流程控制与程序结构

  6. 一、if语句 格式1: 格式2: if(条件)语句1 if(条件)语句1 else 语句2 若条件为真,执行 语句1,否则什么都不做 4.2 选择语句 若条件为真,执行 语句1,否则执行语句2

  7. 说明: 1、格式中的条件通常是一个逻辑表达式,若不是,则一切0值转换为false,一切非0值转换为true。 2、格式中的语句1和语句2可以是基本语句,也可以是复合语句,但不能不是语句,也不能是多个语句。 4.2 选择语句

  8. 例1:if (x) cout<<”x is non-zero ” else cout<< ” x is zero ”; 例2:if(x==100) {a=1;b=2;}; else {a=-1;b=-2;}; 4.2 选择语句 例1:if (x) cout<<”x is non-zero ”; else cout<< ” x is zero ”; 例2:if(x==100) {a=1;b=2;} else {a=-1;b=-2;}

  9. 二、if语句的嵌套 if语句格式中的语句1和语句2本身也可以是if语句。 1、if与else的配对:从第一个else开始,else总是与离它最近的尚未配对的if进行配对。 例1:if (n>0) if(a>b) z=a; else z=b; 4.2 选择语句 if (n>0) { if(a>b) z=a; else z=b;}

  10. 例2: if(x>0) if(x>10) cout<<’A ’; else cout<< ’ B ’; else if(y<-8) if(y>-20) cout<< ’ C ’; else cout<< ’ D ’; 若x值为4,y值为-55,则输出结果为:B 4.2 选择语句

  11. 2、为了提高可读性,必要时可以把嵌套 位置放在else之后。 例: if (n>0) { if(a>b) z=a;} else z=b; 3、把永真条件或永假条件用于if语句,是一种严重的逻辑错误。 4.2 选择语句 if (n<=0) z=b; else if(a>b) z=a;

  12. 三、if多分支结构 通过规范化的if嵌套所构成的多分支结构。 4.2 选择语句 嵌套的if语句放在else之后

  13. 格式: if(条件1)语句1 else if(条件2)语句2 else if(条件3)语句3 … else if(条件n)语句n 【 else 语句n+1 】 注:多分支结构中的各个条件都应当是 相互排斥的,任意时刻顶多有一个 条件得以满足。 4.2 选择语句

  14. 例:#include<iostream.h> void main( ) { float score; cin>> score; if(score<0|| score>100) cout<< ”输入错误!”; else if (score < 60) cout<< ”不及格”; else if (score < 70) cout<< ”及格”; else if (score < 80) cout<< ”中等”; else if (score < 90) cout<< ”良好”; else cout<< ”优秀”; } 4.2 选择语句

  15. 四、switch语句和switch多分支结构 1、switch语句的格式: switch(整型表达式) {case 整型常量表达式1:语句序列1; case 整型常量表达式2:语句序列2; … case 整型常量表达式k:语句序列k; 【default:语句序列k+1 】 } 4.2 选择语句

  16. 2、执行顺序: 先计算switch语句中表达式的值,然后 在case 语句中寻找值相等的常量表达式,并以此为入口,由此开始 顺序执行。如果没有找到 相等的常量表达式,且default 后的语句n+1存在,则执行语句n+1,否则什么都不做。 4.2 选择语句

  17. 3、几点说明: (1)整型表达式如果不是整型,则它的值将自动转换为整型。 (2)整型常量表达式通常就是一个整型常量。如果不是,将自动转换为整型。 (3)case的作用只是标明一个入口以及转入该入口的条件。一旦从某个入口进入一个语句序列,就从该语句序列开始顺序执行,直到以下所有语句序列执行完毕时为止。 4.2 选择语句

  18. 4、语句序列可以是空的,即其中一个语 句也没有。 5、break语句可以提前结束switch语句的 执行。 4.2 选择语句

  19. 例:根据整型变量dayoftheweek(0-6)值输出其表示的星期几的英语单词。(无break语句) Switch(dayoftheweek) { case 0: cout<< ”Sunday”; case 1: cout<< ”Monday”; case 2: cout<< ”Tuesday”; case 3: cout<< ”Wednesday”; case 4: cout<< ”Thursday” case 5: cout<< ”Friday”; case 6: cout<< ”Saturday”; default:cout<< ”Unknown week day”; }; 4.2 选择语句

  20. 若dayoftheweek的值为4, 则输出结果为: ThursdayFridaySaturdayUnknown week day 4.2 选择语句

  21. (有break语句) Switch(dayoftheweek) {case 0: cout<< ”Sunday”; break; case 1: cout<< ”Monday”; break; case 2: cout<< ”Tuesday”; break; case 3: cout<< ”Wednesday”; break; case 4: cout<< ”Thursday”; break; case 5: cout<< ”Friday”; break; case 6: cout<< ”Saturday”; break; default:cout<< ”Unknown week day”; break; }; 4.2 选择语句

  22. 若dayoftheweek的值为4, 则输出结果为: Thursday 4.2 选择语句

  23. 五、if多分支结构和switch多分支结构的相互替代:五、if多分支结构和switch多分支结构的相互替代: ☆替代条件: switch语句中每个非空语句序列的最后 一个语句都为break语句。 4.2 选择语句

  24. 例:switch(k) if(k==1||k==2||k==3) { cout<<’A ’; case1: else if(k==4||k==5) case2: cout<< ’ B ’; case3: cout<<’A ’;break; else cout<< ’ C ’; case4: case5: cout<< ’ B ’;break; default: cout<< ’ C ’;break; } 4.2 选择语句

  25. if(x>=0&&x<=2) cout<<’X ’; else if(x>=20&&x<=22) cout<< ’ Y ’; else cout<< ’ Z ’; 4.2 选择语句 switch(x) {case0: case1: case2:cout<<’X ’;break; case20: case21: case22:cout<< ’ Y ’; break; default:cout<< ’ Z ’; }

  26. 一、for循环 1、 for语句构成一种先判断后执行的循环结构。 2、 for语句格式: for(循环初始化;循环条件;循环参数调整) 循环体 4.3 循环结构

  27. 说明: (1)循环条件应当是一个逻辑表达式。 (2)循环初始化和循环参数调整都应当 是具有副作用的表达式,其中循环 参数调整应当能够影响循环条件。 (3)循环体是一个语句。(可以是一个 简单语句、复合语句或空语句) 4.3 循环结构

  28. 3、执行过程: (1)进行循环初始化; (2)判断循环条件; (3)如果循环条件为真,则执行循环体、对循环参数调整,然后转向步骤(2);如果循环条件为假,则结束循环。 4.3 循环结构

  29. 4、流程图: 4.3 循环结构 例:for(int i=0;i<20;i+=5) cout<<i<<’ ’; 执行结果为: 0 5 10 15 循环初始化 N 循环条件? Y 循环体 循环参数调整

  30. 4、 几种特殊的for语句 (1)for( ;循环条件; ) 循环体 此时用while语句更好。 (2)for(循环初始化; ;循环参数调整)循环体 循环条件为空 永真条件 无限循环 4.3 循环结构 在循环体中用break语句可强制退出 在循环体中不用break语句形成死循环

  31. (3) for(循环初始化;循环条件;循环参数调整) 循环体为空,用于延迟一段时间。 4.3 循环结构

  32. 例 输入10个数,计算并显示它们的合计。 #include<iostream.h> void main( ) { double x,s=0; //保存累加结果的变量应初始化为0 cout<<”请输入10个数: ”; for(int i=0;i<10;i++){cin>>x; s+=x;} cout<< ”合计: ” <<s; } 4.3 循环结构 若从键盘输入: 1 2 3 4 5 6 7 8 9 10 则结果为:55

  33. 例 显示输出一个三角形。 #include<iostream.h> void main( ) { for(int i=0;i<6;i++) { cout<<endl; int j; for(j=0;j<5-i;j++) cout<<’ ’; for(j=0;j<i+i+1;j++) cout<< ’* ’; } } 4.3 循环结构

  34. 例 显示输出99乘法表。 #include<iomanip.h> void main( ) { cout<<endl<<setw(3)<<”| ”; int i; for(i=1;i<10;i++) cout<<setw(3)<<i; cout<<endl<< ” --+-------------------------- ”; for(i=1;i<10;i++){cout<<endl<<setw(2)<<i<< ”| ”; for(int j=1;j<10;j++)cout<<setw(3)<<i*j;} } 4.3 循环结构

  35. 说明: 1、setw:为下一个要输出的数据设置输 出宽度,宽度值由随后的参数给出。 如:cout<<1<<setw(8)<<2<<3; 则输出结果为:1 23 2、 iomanip.h:包含setw等大多数操纵 符的定义以及iostream.h中的所有内容。 4.3 循环结构

  36. 二、while循环 1、 while 语句构成一种先判断后执行的 循环结构。 2、 while语句格式: while(循环条件) 循环体 4.3 循环结构

  37. 3、执行过程: 当循环条件为真时, 执行循环体,否则 退出循环。 4、流程图(见右上图) 4.3 循环结构 N 循环条件? Y 循环体

  38. 5、for语句和while语句的区别: (1) for语句一般用于循环次数已知的情况; (2) while语句不仅可以用于循环次数已知 的情 况,也可以用于循环次数未知的情况; (3)一切用for语句实现的循环都可以用while语句来代替,反之不可以。 (4)在循环次数已知的情况下, for语句和while语句可以相互转换。 4.3 循环结构

  39. 例:for(int i=0;i<10;i++) cout<<i; int i=0;while(i<10){cout<<i;i++;} 例:int i=20;while(i>0) cout<<i--; for(int i=20;i>0;i--)cout<<i; 4.3 循环结构

  40. 例 求数列1/2,3/4,5/8,7/16,9/32…的所有 大于等于0.000001的数据项之和,显 示输出计算的结果。 4.3 循环结构

  41. 方法一 ☆基于递推公式: #include<iostream.h> void main( ) { int n=1,d=2; double s=0.0,s0; while((s0=double(n)/d)>=0.000001) {s+=s0; n+=2; d+=d;} cout<<s; } 4.3 循环结构

  42. 方法二 ☆基于通项公式: #include<iostream.h> #include<math.h> void main( ) { int i=1; double s=0.0,s0; while((s0=(i+i-1)/pow(2,i))>=0.000001) {s+=s0; i++;} cout<<s; } 4.3 循环结构

  43. 例:设计函数double powi(double x,int n);,它计算并返回x的n次方。 #include<iostream.h> double powi(double x,int n) { double a=1; //保存累乘结果的变量应初始化为1 while(n--) a*=x; return a; } void main( ) {cout<<powi(5.0,3)<<endl<<powi(5.1,3);} 4.3 循环结构

  44. 三、do…while循环 1、 do… while 语句构成一种先执行后判断 的循环结构。 2、 do… while语句格式: do 循环体 while(循环条件); 4.3 循环结构

  45. 3、执行过程: 循环执行语句, 直到循环条件为假时, 退出循环。 4、流程图(见右上图) 5、do…while语句与while语句唯一的区别: while语句的循环体有可能一次不执行。 do…while语句的循环体至少执行一次。 4.3 循环结构 循环体 N 循环条件? Y

  46. 一、break和continue的使用 break和continue是可以在循环体中使用的控制语句。 1、 break语句 (1)格式: break; (2)功能:强制退出所在的循环语句。 2、 continue语句 (1)格式: continue; (2)功能:提前结束本轮循环体的执行。 4.4 转向语句

  47. 二、goto语句 1、作用:无条件地转移到指定标号处。 2、标号定义的格式: 标号:语句 3、转移到指定标号的格式:goto 标号; 4.4 转向语句 C++中唯一可以先使用后说明的非保留字标识符

  48. 二、return语句 1、return语句用于结束函数的运行并返回 到函数调用处。 2、无返回值的函数不使用return语句或空 return语句(return;) 3、有返回值的函数必须使用非空的return 语句( return 表达式;) 4.4 转向语句

More Related