计数器控制的循环的要素_第1页
计数器控制的循环的要素_第2页
计数器控制的循环的要素_第3页
计数器控制的循环的要素_第4页
计数器控制的循环的要素_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、BeihangS1l计数器控制的循环的要素计数器控制的循环的要素l掌握掌握for循环和循环和dowhile循环循环l使用使用switch选择语句,理解多路选择选择语句,理解多路选择*l使用使用break和和continue程序控制语句改变控制流程程序控制语句改变控制流程l使用逻辑运算符形成语句中复杂的条件表达式使用逻辑运算符形成语句中复杂的条件表达式l避免将避免将”=”运算符和运算符和”=”运算符相混淆而产生的后果运算符相混淆而产生的后果第第5章章 控制语句控制语句 ( II )BeihangS21 计数器控制循环的要点计数器控制循环的要点l控制变量(或循环计数器)的名称控制变量(或循环计数器

2、)的名称(name)l控制变量的初始值控制变量的初始值(initial value)l测试控制变量终值测试控制变量终值(final value)的条件(即是否继续循环)的条件(即是否继续循环)l每次循环时控制变量修改的增量或减量每次循环时控制变量修改的增量或减量(increment or decrement)#include using namespace std;int main() int counter = 1; / initialization while ( counter = 10 ) / repetition condition cout counter endl;+counte

3、r; / increment return 0;编程要点与技巧编程要点与技巧l用整数值控制计数循环用整数值控制计数循环l缩排控制结构中的语句缩排控制结构中的语句l程序中应有适当的空行程序中应有适当的空行l嵌套结构不宜太多嵌套结构不宜太多l缩排和空行使程序具有二维缩排和空行使程序具有二维效果,增加可读性效果,增加可读性BeihangS32 for 循环语句循环语句lfor重复结构处理计数器控制循环的所有细节,重复结构处理计数器控制循环的所有细节,是一种广泛使用的循环结构是一种广泛使用的循环结构lfor结构与等价的结构与等价的while结构,例结构,例顺序结构选择结构重复结构重复结构if/else

4、ifswitchdo/whilewhilefor#include using namespace std;int main() int counter; for ( counter = 1; counter =10; counter+ ) cout counter endl; return 0;#include using namespace std;int main() int counter = 1; / initialization while ( counter = 10 ) / repetition condition cout counter endl;+counter; / in

5、crement return 0;BeihangS42 for 循环语句循环语句lfor重复结构处理计数器控制循环的所有细节,重复结构处理计数器控制循环的所有细节,是一种广泛使用的循环结构是一种广泛使用的循环结构lfor结构的一般格式与等价的结构的一般格式与等价的while结构结构expression1while ( expression2 )statementexpression3;for ( expression1; expression2; expression3 )statementlfor语句的流程图语句的流程图(UML活动图见教材活动图见教材)lfor结构中各个表达式可以省略结构中

6、各个表达式可以省略statementexpression2truefalseexpression3expression1#include using namespace std;int main() int counter; for ( counter = 1; counter =10; counter+ ) cout counter endl; return 0;BeihangS52 for 循环语句循环语句l变量的作用域:变量的作用域:C+标准化之前下列两个程序相同,但在标准化的编标准化之前下列两个程序相同,但在标准化的编译器中,右边的程序有编译错误译器中,右边的程序有编译错误#inclu

7、de using namespace std;int main() int counter; for ( counter = 1; counter =10; counter+ ) cout counter endl; for ( counter = 11; counter =20; counter+ ) cout counter endl; return 0;#include using namespace std;int main() for ( int counter = 1; counter =10; counter+ ) cout counter endl; for ( counter

8、 = 11; counter =20; counter+ ) cout counter endl; return 0;BeihangS62 for 循环语句循环语句l逗号运算符,例:计算逗号运算符,例:计算 220所有偶数的和所有偶数的和#include using std:cout; using std:endl;int main() int total = 0; for ( int number = 2; number = 20; number += 2 ) total += number; cout Sum is total endl; return 0; #include using

9、std:cout; using std:endl;int main() int total = 0; for ( int number = 2; number = 20; total += number, number += 2 ); cout Sum is total endl; return 0; l从软件工程角度,不建议采用逗号运算符,程序可读性变差从软件工程角度,不建议采用逗号运算符,程序可读性变差BeihangS7for 结构使用举例结构使用举例l将控制变量从将控制变量从1变到变到 200,增量为,增量为 1for ( int i = 1; i = 1; i- )for ( int

10、i = 8; i = 88; i += 8 )for ( int j = 2; j = 0; j -= 11 )BeihangS8for 结构使用举例(续)结构使用举例(续) 例:银行存款为例:银行存款为1000元,元,年利率为年利率为5%,假设所有利息都,假设所有利息都留在账号中,计算留在账号中,计算10年间每年年间每年年末的金额并打印出来。计算年末的金额并打印出来。计算公式为公式为a=p(1+r)n ,其中,其中 p是本是本金,金,r 是年利率,是年利率,n是年数,是年数,a 是年末本息。是年末本息。解:解:a1 = p+p*r = p*(1+r)a2 = a1+a1*r = a1*(1+

11、r) = p*(1+r)*(1+r) = p*(1+r)2a3 = a2+a2*r = a2*(1+r) = p*(1+r)2*(1+r) = p*(1+r)3Fig. 5.6BeihangS93 double 类型与数学库函数类型与数学库函数ldouble类型与类型与float相相似,但似,但double类型的类型的变量能存放比变量能存放比float精精度更大的数值。度更大的数值。C+把常量把常量(如如1000.0)当作当作double类型。类型。l使用指数运算函数使用指数运算函数pow需包括需包括 cmath , pow的参数和返回值的参数和返回值都是双精度类型。都是双精度类型。Fig.

12、5.6BeihangS104 输入输入/输出格式控制输出格式控制lsetw是参数化流操作算子,调用是参数化流操作算子,调用setw(4)指定下一指定下一个值的输出域宽个值的输出域宽(field width)为为4,即至少用,即至少用4个字个字符打印这个值。若输出值宽度少于符打印这个值。若输出值宽度少于4个字符位,则个字符位,则默认在输出域中右对齐默认在输出域中右对齐(right justified);若输出值;若输出值宽度大于宽度大于4个字符位,则该值将输出域扩大到能放个字符位,则该值将输出域扩大到能放下这个值为止。下这个值为止。l若要人工控制对齐方式,可直接使用流操纵符若要人工控制对齐方式,

13、可直接使用流操纵符 left, right, 例如例如 cout left setw( 4 ) year right setw( 21 ) amount endl;l粘性设置粘性设置 (后面若无修改,格式会一直有效)(后面若无修改,格式会一直有效) cout fixed setprecision( 2 );lfixed指出变量以带小数点的定点值形式打印指出变量以带小数点的定点值形式打印l操纵符操纵符setprecision( 2 )指定了小数点右侧两位的精指定了小数点右侧两位的精度度l域宽控制域宽控制 setw( )只对紧临的变量起作用只对紧临的变量起作用Fig. 5.6BeihangS11使

14、用使用double 类型可能引起的结果偏差类型可能引起的结果偏差l在金融计算中使用在金融计算中使用double类型可能引起偏差类型可能引起偏差例如:假设打印时指定例如:假设打印时指定setprecision( 2 ),计算机中实际的,计算机中实际的值是值是 a = 14.234, b = 18.673, 相加后相加后 c = 32.907cout fixed setprecision( 2 );cout a endl;cout b endl;cout c endl;OUTPUT:14.2318.6732.91But 14.23+18.67 = 32.90 ?BeihangS12性能提示性能提示

15、Fig. 5.6for ( int year = 1; year = 10; year+ ) amount = principal * pow( 1.0 + rate, year ); cout ;RATE = 1.0 + rate;for ( int year = 1; year = 10; year+ ) amount = principal * pow( RATE, year ); cout ;BeihangS135 dowhile 循环语句循环语句ldo.while结构与结构与while结构相似结构相似ldowhile结构执行循环体之后再测试循环条件,至少执行循环体一次。结构执行循环体

16、之后再测试循环条件,至少执行循环体一次。l语句格式语句格式dostatement while ( condition );lC+语句语句例:打印数字例:打印数字1到到10int counter = 1;docout counter endl; while ( +counter = 10 );l流程图流程图(UML活动图参考教材活动图参考教材)l注意:注意:while, for, dowhile结构中的循环条件结构中的循环条件(condition)永远无法变成永远无法变成false时,会造成时,会造成无限循环。因此,需要在循环首部或循环体中某个地方改变循环条件,使循环条件最无限循环。因此,需要在

17、循环首部或循环体中某个地方改变循环条件,使循环条件最终变成终变成false 。顺序结构选择结构重复结构重复结构if/elseifswitchdo/whilewhileforactionconditiontruefalseBeihangS146* switch 多项选择结构多项选择结构lifelse是双向选择结构,是双向选择结构,switch可以进行多项选择。可以进行多项选择。例:计算学生考试成绩的每一等级人数。例:计算学生考试成绩的每一等级人数。Page152, Fig. 5.95.11顺序结构选择结构选择结构重复结构if/elseifswitchdo/whilewhileforlcin.ge

18、t( )函数从键盘读取一个字符,并将函数从键盘读取一个字符,并将这个字符存放在整型变量这个字符存放在整型变量grade中。中。C/C+中可以把字符当做整数或字符。中可以把字符当做整数或字符。lswitch后面括号中的变量名后面括号中的变量名grade称为控制称为控制表达式,它与每个表达式,它与每个case标记比较,若与某标记比较,若与某个标记匹配,就执行相应的个标记匹配,就执行相应的case语句。若语句。若连续的连续的case之间没有语句,则它们执行同之间没有语句,则它们执行同样的语句。样的语句。break语句使程序退出语句使程序退出switch, case中有多个语句时,不必放在中有多个语句

19、时,不必放在 中。中。lcase n; case t; case ; 使程序跳过换使程序跳过换行符、制表符和空格符。行符、制表符和空格符。lswitch只用于测试常量整型表达式。只用于测试常量整型表达式。l文件结束输入文件结束输入 l流程图流程图(UML(UML活动图参阅教材活动图参阅教材) )defaultactionsfalsebreaktruecase aact afalsebreaktruecase bact bfalsebreaktruecase zact zBeihangS157 break 和和 continue 语句语句lbreak和和continue语句改变控制流程。语句改变

20、控制流程。lbreak 语句在语句在 while, for, do/while 或或 switch 结构中执行时,使程序立即退结构中执行时,使程序立即退出这些结构,从而执行该结构后面的出这些结构,从而执行该结构后面的第一条语句,常用于提前从循环退出第一条语句,常用于提前从循环退出或跳过或跳过switch结构的其余部分。结构的其余部分。for ( int x = 1; x = 10; x+ )if( x =5 ) break;cout x “ “; / other codes输出:输出:1 2 3 4lcotinue 语句在语句在 while, for 或或do/while 结构中执行时跳过该结

21、结构中执行时跳过该结构体的其余语句,进入下一轮构体的其余语句,进入下一轮循环。循环。for ( int x = 1; x = 10; x+ )if( x =5 ) continue;cout x “ “; / other codes输出:输出:1 2 3 4 6 7 8 9 10BeihangS16break 和和 continue 语句语句lwhile结构在大多数情况下可以取代结构在大多数情况下可以取代for结构,但如果结构,但如果while结构中的递增表达式结构中的递增表达式在在continue 语句之后,则会出现例外。语句之后,则会出现例外。 int x = 1;while ( x =

22、10 )cout x “ “;x+;for ( int x = 1; x = 10; x+ )cout x “ “;输出:输出:1 2 3 4 5 6 7 8 9 10int x = 1;while ( x = 10 )if( x =5 ) continue;cout x “ ”;x+; cout “OK” endl;输出:输出:? for ( int x = 1; x = 10; x+ )if( x =5 ) continue;cout x “ “; cout “OK” , =, 60),当要),当要表示多个条件的组合(如:表示多个条件的组合(如:60 x70)时,需要使用逻辑运算。)时,需

23、要使用逻辑运算。l“逻辑与逻辑与” & 运算符:通常用来表示两个条件同时成立,例运算符:通常用来表示两个条件同时成立,例if ( math 60 & english 60 & algebra = 90 | finalExam = 90 ) cout “student grade is A” endl;l“逻辑非逻辑非” ! 运算符:用来逆转条件的意义,例运算符:用来逆转条件的意义,例if ( !( grade = flagValue ) ) / grade != flagValue cout “The next grade is” grade endl;BeihangS

24、18逻辑运算符逻辑运算符l逻辑表达式的真值表逻辑表达式的真值表( truth table )l通常用相关的关系或相等运算符表达条件,避免使用通常用相关的关系或相等运算符表达条件,避免使用 ! 运算符运算符if ( grade != flagValue ) / !( grade = flagValue ) is not suggested cout “The next grade is” grade endl;expre1 expre2 expre1 & expre2false false falsefalse true falsetrue false falsetrue true tr

25、ueexpre1 expre2 expre1 | expre2false false falsefalse true truetrue false truetrue true trueexpre !exprefalse trueture falseBeihangS19逻辑运算符的例子逻辑运算符的例子l流操纵符流操纵符boolalpha指定每个指定每个bool表达式的值应显示为单词表达式的值应显示为单词true或或false ,而不是默认的而不是默认的 1 或或 0expre1 expre2 expre1 & expre2false false falsefalse true false

26、true false falsetrue true trueexpre1 expre2 expre1 | expre2false false falsefalse true truetrue false truetrue true trueexpre !exprefalse trueture falseFig. 5.18BeihangS20运算符的优先级和结合律运算符的优先级和结合律lPage164 (看书自学)(看书自学)l理解优先级和结合律的意义,不必死记硬背理解优先级和结合律的意义,不必死记硬背l编程技巧:必要时加上多余的编程技巧:必要时加上多余的“括号括号”如:如:cout = 60

27、? “Passed” : “Failed”);grade =60 ? cout “Passed” : cout =60) ? (cout “Passed”) : (cout “Failed”);BeihangS219 相等关系相等关系“=”与赋值与赋值“=”运算符的区别运算符的区别l赋值赋值 int a; a = 6; / 变量赋值变量赋值l相等关系运算相等关系运算 int a, b, c; b=5; c=7; a=(b=c); / b=c的关系运算结果为的关系运算结果为 0 , 此值赋给变量此值赋给变量 al用用=运算符进行赋值或用运算符进行赋值或用=运算符表示相等是个逻辑错误运算符表示相等

28、是个逻辑错误 int gender = 0; / 为为1时表示性别为时表示性别为male,为为0时表示为时表示为female if ( gender = 1 ) cout “male” endl; else cout “female” 60) action1else action2if (grade60) if (grade90) cout 50) cout “Its not so bad”; else action4顺序结构选择结构重复结构if/elseifswitchdo/whilewhileforBeihangS27结构化程序设计的规则结构化程序设计的规则基本规则基本规则1.从最简单的流

29、程图开始从最简单的流程图开始2.任何矩形框(操作)可以换成两个顺序矩形框(操作)任何矩形框(操作)可以换成两个顺序矩形框(操作)3.任何矩形框可以换成任何控制结构(任何矩形框可以换成任何控制结构(7种结构)种结构)4.可按任何顺序多次重复规则可按任何顺序多次重复规则2和规则和规则3l利用此规则可以得到整洁的结构化流程图利用此规则可以得到整洁的结构化流程图l重复采用规则重复采用规则2可以得到许多顺序放置矩形框的流程图可以得到许多顺序放置矩形框的流程图(堆叠规则)(堆叠规则)顺序结构选择结构重复结构if/elseifswitchdo/whilewhileforBeihangS28结构化程序设计的规

30、则(续结构化程序设计的规则(续1)基本规则基本规则1.从最简单的流程图开始从最简单的流程图开始2.任何矩形框(操作)可以换成两个顺序矩形框(操作)任何矩形框(操作)可以换成两个顺序矩形框(操作)3.任何矩形框可以换成任何控制结构(任何矩形框可以换成任何控制结构(7种结构)种结构)4.可按任何顺序多次重复规则可按任何顺序多次重复规则2和规则和规则3l规则规则3称为嵌套规则称为嵌套规则(nesting rule),对最简单的流程图采,对最简单的流程图采用规则用规则3即可得到包含整齐嵌套控制结构的流程图即可得到包含整齐嵌套控制结构的流程图顺序结构选择结构重复结构if/elseifswitchdo/w

31、hilewhileforBeihangS29结构化程序设计的规则(续结构化程序设计的规则(续2)基本规则基本规则1.从最简单的流程图开始从最简单的流程图开始2.任何矩形框(操作)可以换成两个顺序矩形框(操作)任何矩形框(操作)可以换成两个顺序矩形框(操作)3.任何矩形框可以换成任何控制结构(任何矩形框可以换成任何控制结构(7种结构)种结构)4.可按任何顺序多次重复规则可按任何顺序多次重复规则2和规则和规则3l规则规则4产生更大、更复杂且层次更多的嵌套结构产生更大、更复杂且层次更多的嵌套结构l结构化的妙处在于只用结构化的妙处在于只用2种(堆栈、嵌套)简单方法将种(堆栈、嵌套)简单方法将7种种简单

32、的单入简单的单入/单出快组合成复杂的程序单出快组合成复杂的程序顺序结构选择结构重复结构if/elseifswitchdo/whilewhileforBeihangS30结构化编程的三种控制形式结构化编程的三种控制形式l结构化编程提倡简单性,结构化编程提倡简单性,Bohm和和Jacopini证明,实现结证明,实现结构化编程只需要三种控制形式:构化编程只需要三种控制形式:u顺序顺序(sequence)u选择选择(selection)u重复重复(repetition)l选择结构的三种实现方法:选择结构的三种实现方法:uif结构(单项选择);结构(单项选择);if/else(双向选择);(双向选择);

33、switch(多项选择)(多项选择)l简单的简单的ifif结构即可提供任何形式的选择(即任何能用结构即可提供任何形式的选择(即任何能用 if/else 结构和结构和 switch 结构完成的工作,也可以组合简单结构完成的工作,也可以组合简单 if 结构来实现)结构来实现)l重复结构的三种实现方法:重复结构的三种实现方法:uwhile结构;结构;do/while结构;结构;for结构结构l简单的简单的while结构即可提供任何形式的重复(即任何能用结构即可提供任何形式的重复(即任何能用 do/while 和和 for 结构完成的工作,也可以组合简单结构完成的工作,也可以组合简单 while 结构来实现)结构来实现)顺序结构选择结构重复结构if/elseifswitchdo/whilewhileforBeihangS31三种选择结构的关系三种选择结构的关系l简单的简单的 if 结构即可提供任何形式的选择(即任何能用结构即可提供任何形式的选择(即任何能用 if/else 结构和结构和 switch 结构完成的工作,也可以组合简单结构完成的工作,也可以组

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论