【教学课件】第4章循环控制.ppt
《【教学课件】第4章循环控制.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第4章循环控制.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序设计 cs.sjtu 2011.9程序设计-1第第4章章 循环控制循环控制 重复重复N次循环次循环While循环循环Do while循环循环循环的中途退出循环的中途退出枚举法枚举法贪婪法贪婪法程序设计 cs.sjtu 2011.9程序设计-2for循环语句循环语句v格式:格式:forfor(表达式(表达式1 1;表达式;表达式2 2;表达式;表达式3 3)语句语句v执行过程:执行过程:1.1.执行表达式执行表达式1 12.2.执行表达式执行表达式2 23.3.如果表达式如果表达式2 2的结果为的结果为“truetrue”,则执行循环体,则执行循环体和表达式和表达式3 3,然后回到,然后回到
2、2 2,否则,否则forfor语句执行结束语句执行结束循环体循环体循环控制行循环控制行程序设计 cs.sjtu 2011.9程序设计-3for循环语句循环语句 续续续续v作为计数循环,可以理解为作为计数循环,可以理解为for(for(循环变量赋初值;循环条件;循环变量增值循环变量赋初值;循环条件;循环变量增值)符合循环条件时的执行语句符合循环条件时的执行语句v循环体所有语句的一次完全执行称为一个循环循环体所有语句的一次完全执行称为一个循环周期周期v循环体可以是复合语句或空语句循环体可以是复合语句或空语句程序设计 cs.sjtu 2011.9程序设计-4逗号表达式逗号表达式v格式:表达式格式:表
3、达式1,表达式,表达式2,,表达式表达式n v执行过程:先执行表达式执行过程:先执行表达式1,再执行表达式,再执行表达式2,再执行表达式,再执行表达式n,整个表达式的计算结果,整个表达式的计算结果为最后一个表达式的值为最后一个表达式的值v逗号运算符的优先级是所有运算符中最低的逗号运算符的优先级是所有运算符中最低的 如如a的初值为的初值为0,则表达式,则表达式 a+=1,a+=2,a+=3,a+=4,a+=5的结果为的结果为 15 程序设计 cs.sjtu 2011.9程序设计-5v有了逗号表达式,从有了逗号表达式,从1加到加到100的问题就的问题就可以只用一个语句:可以只用一个语句:for(i
4、=1,s=0;i=100;+i)s+=i;或将所有的初始化都放在循环外,即或将所有的初始化都放在循环外,即i=1;s=0;for(;i=100;+i)s+=i;v建议还是用建议还是用 s=0;s=0;for(i=1;i=100;+i)s+=i;for(i=1;i=100;+i)s+=i;程序设计 cs.sjtu 2011.9程序设计-6for循环的进一步讨论循环的进一步讨论 续续v表达式表达式2也不一定是关系表达式。它可以是逻辑表也不一定是关系表达式。它可以是逻辑表达式,甚至可以是算术表达式。当表达式达式,甚至可以是算术表达式。当表达式2是算术是算术表达式时,只要表达式的值为非表达式时,只要表
5、达式的值为非0,就执行循环体,就执行循环体,表达式的值为表达式的值为0时退出循环。时退出循环。v如果表达式如果表达式2省略,即不判断循环条件,循环将无省略,即不判断循环条件,循环将无终止地进行下去。终止地进行下去。v无终止的循环称为无终止的循环称为“死循环死循环”v最简单的死循环是最简单的死循环是 for(;);v要结束一个无限循环,必须从键盘上输入特殊的要结束一个无限循环,必须从键盘上输入特殊的命令以中断程序执行并强制退出命令以中断程序执行并强制退出 程序设计 cs.sjtu 2011.9程序设计-7For循环的进一步讨论循环的进一步讨论 续续v表达式表达式3也可以是任何表达式,一般为赋值表
6、也可以是任何表达式,一般为赋值表达式或逗号表达式。表达式达式或逗号表达式。表达式3是在每个循环周是在每个循环周期结束后对循环变量的修正。表达式期结束后对循环变量的修正。表达式3也可以也可以省略,此时做完循环体后直接执行表达式省略,此时做完循环体后直接执行表达式2。v如从如从1加到加到100,可以写为,可以写为 s=0;for(i=1;i=100;)s+=i,i+;或或 s=0;for(i=1;i=100;s+=i,i+);程序设计 cs.sjtu 2011.9程序设计-8For循环实例循环实例v求函数求函数 在区间在区间a,b之间的定积分之间的定积分v实现思想:函数与实现思想:函数与x轴围成的
7、区域的面积。定积分轴围成的区域的面积。定积分可以通过将这块面积分解成一连串的小矩形,计可以通过将这块面积分解成一连串的小矩形,计算各小矩形的面积的和而得到算各小矩形的面积的和而得到 ab程序设计 cs.sjtu 2011.9程序设计-9int main()double a,b,dlt,integral=0;cout a b;cout dlt;for(double x=a+dlt/2;x b;x+=dlt)integral+=(x*x+5*x+1)*dlt;cout 积分值为:积分值为:integral 0.000001)while(p0.000001)ex+=p;ex+=p;计算新的计算新的p
8、 p;问题:如何计算p?计算第i个p,需要两个i次的循环。第一个循环计算xi,第二个循环计算i!解决方案:从前一项计算后一项。如果p是第i项的值,则第i+1项的值为 p*x/(i+1)程序设计 cs.sjtu 2011.9程序设计-13int main()int main()double ex,x,p;/exdouble ex,x,p;/ex存储存储e ex x的值,的值,p p保存当前项的值保存当前项的值 int i;int i;cout cout x;cin x;ex=0;p=1;i=0;ex=0;p=1;i=0;while(p 1e-6)while(p 1e-6)ex+=p;ex+=p;
9、+i;+i;p=p*x/i;p=p*x/i;cout e cout e的的 x x 次方等于次方等于:ex endl;ex endl;return 0;return 0;程序设计 cs.sjtu 2011.9程序设计-14第第4章章 循环控制循环控制 重复重复N次循环次循环While循环循环Do while循环循环循环的中途退出循环的中途退出枚举法枚举法贪婪法贪婪法程序设计 cs.sjtu 2011.9程序设计-15DoWhile 循环语句循环语句v格式:格式:do do 语句语句 while(while(表达式表达式)v执行过程:先执行循环体,然后判断循环条件。如条执行过程:先执行循环体,然
10、后判断循环条件。如条件成立,继续循环,直到条件为假件成立,继续循环,直到条件为假v如将若干个输入数相加,直到输入如将若干个输入数相加,直到输入0 0为止。为止。total=0;total=0;do cout do cout value;cin value;total+=value;total+=value;while(value!=0);while(value!=0);程序设计 cs.sjtu 2011.9程序设计-16编程实例编程实例v计算方程计算方程f(x)在区间在区间a,b之间的根之间的根。注意,。注意,f(a)和和f(b)必须异号必须异号v假设方程为假设方程为 ,区间为,区间为-1,1
11、 程序设计 cs.sjtu 2011.9程序设计-17计算方法计算方法v令令x1=a,x2=bv连接连接(x1,f(x1)和和(x2,f(x2)的弦交与的弦交与x轴的坐标点可轴的坐标点可用如下公式求出用如下公式求出 v若若f(x)与与f(x1)同符号,则方程的根在同符号,则方程的根在(x,x2)之间,将之间,将x作为新的作为新的x1。否则根在。否则根在(x1,x)之间,将之间,将x设为新的设为新的x2。v重复步骤重复步骤和和,直到,直到f(x)小于某个指定的精度为止。小于某个指定的精度为止。此时的此时的x为方程为方程f(x)=0的根。的根。程序设计 cs.sjtu 2011.9程序设计-18i
12、nt main()double x,x1=-1,x2=1,fx1,fx2,fx;do fx1=x1*x1*x1+2*x1*x1+5*x1-1;fx2=x2*x2*x2+2*x2*x2+5*x2-1;x=(x1*fx2-x2*fx1)/(fx2-fx1);fx=x*x*x+2*x*x+5*x-1;if(fx*fx1 0)x1=x;else x2=x;while(fabs(fx)1e-7);cout 方程的根为:方程的根为:x endl;return 0;程序设计 cs.sjtu 2011.9程序设计-19第第4章章 循环控制循环控制 重复重复N次循环次循环While循环循环Do while循环循
13、环循环的中途退出循环的中途退出枚举法枚举法贪婪法贪婪法程序设计 cs.sjtu 2011.9程序设计-20循环的中途退出循环的中途退出v考虑一个读入数据直到读到标志值的问题。如考虑一个读入数据直到读到标志值的问题。如用自然语言描述,基于标志的循环的结构由以用自然语言描述,基于标志的循环的结构由以下步骤组成:下步骤组成:读入一个值读入一个值如果读入值与标志值相等,则退出循环如果读入值与标志值相等,则退出循环执行在读入那个特定值情况下需要执行的语句执行在读入那个特定值情况下需要执行的语句v当一个循环中有一些操作必须在条件测试之前当一个循环中有一些操作必须在条件测试之前执行时,称为循环的中途退出问题
14、。执行时,称为循环的中途退出问题。程序设计 cs.sjtu 2011.9程序设计-21问题问题v由于循环语句是先判断条件再决定是否执行循环由于循环语句是先判断条件再决定是否执行循环体,循环的中途退出将使得循环体中的某些语句体,循环的中途退出将使得循环体中的某些语句必须重复出现。必须重复出现。v基于标志的循环结构被改为:基于标志的循环结构被改为:读入一个值读入一个值While(读入值与标志值不相等)(读入值与标志值不相等)执行在读入那个特定值情况下需要执行的语句执行在读入那个特定值情况下需要执行的语句 读入一个值读入一个值 程序设计 cs.sjtu 2011.9程序设计-22解决方案解决方案vb
15、reak语句:跳出循环语句:跳出循环v上述问题可以用下列方案解决:上述问题可以用下列方案解决:while(true)提示用户并读入数据提示用户并读入数据 if (value=标志标志)break;根据数据作出处理根据数据作出处理 vcontinue语句:跳出当前循环周期语句:跳出当前循环周期程序设计 cs.sjtu 2011.9程序设计-23第第4章章 循环控制循环控制 重复重复N次循环次循环While循环循环Do while循环循环循环的中途退出循环的中途退出枚举法枚举法贪婪法贪婪法程序设计 cs.sjtu 2011.9程序设计-24枚举法枚举法v对所有可能的情况一种一种去尝试,直对所有可能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 循环 控制
限制150内