《第五章循环控制.docx》由会员分享,可在线阅读,更多相关《第五章循环控制.docx(4页珍藏版)》请在第一文库网上搜索。
1、第五章循环控制第一节概述、gotowhi1edowhi1e语句精解大家好,上一节我们讲解了如下内容:(1)条件运算符(2) switch语句本节是新的章的第一节,我们主要讲解如下几个内容,大家看到这些都是语句,请大家认真听;(1)循环控制语句概述(3) goto语句(4) WhiIe语句(5) dowhi1e语句一:循环控制语句概述什么叫循环控制语句,它有什么用呢?大家是否还记得,在前面章节中,老师曾经讲解过程序的三种基本结构:顺序结构,选择结构,循环结构(当型循环结构,直到型循环结构)。选择结构就是咱们曾经讲解过的if语句,switch语句等等。循环结构,就是我们即将要讲解的got。语句,W
2、hiIe语句,dowhi1e语句以及下节课要讲的for语句。几乎所有实用的应用程序都会包含循环结构,比如我们求解一个学生的若干门考试成绩之和。对于网络游戏中,我们要统计一个玩家的背包中物品的总价值,也要用循环来找玩家背包中所有物品,然后进行价值统计。二:goto语句首先我们讲解第一个循环控制语句:goto语句goto语句被叫做无条件转向语句,用来跳转到某个程序位置进行执行。他的一般形式为:goto语句标号语句标号是一个标识符,(标识符:只能由字母、数字、下划线三种字符组成,且第一个字符必须是字母或者下划线,井H标识符不可以是系统中的保留字,比如不能是int);比如gotoIabe11合法,而g
3、oto123不合法got。是个有争议的语句,有人说goto语句的使用会使程序的可读性变差之类的,所以要限制使用,老师觉得,如果必要,能够简化程序流程、提高工作效率等,就使用。我们不需要卷入这种争议中来,我们学C语言的主要目的是为了谋生。goto语句主要用途:1:与if语句一起构成循环结构(后面演示)2:从循环体内跳转到循环体外,后面大家学习更多循环语句时就知道什么叫循环体了(不推荐,因为这个破坏了结构化程序设计原则,除非万不得己没有更好的实现办法时)演示:单步跟踪并解说结果。做个1到100的加法运算。main(inti=1zsum=0;1oop:if(i=100)(sum=sum+i;i+;g
4、oto1oop;)Printf(%d”,sum);)运行结果5050;其实上边这个范例只是个演示,在很多情况下,我们可以用其他的循环语句来取代goto,所以,目前来看,got。语句的应用场合会比较少,除非大家觉得这个goto语句特别有必要用。got。语句不能跨越函数。可以举例演示。三:whi1e语句前面我们复习到三种基本结构:顺序结构,选择结构,循环结构(当型循环结构,直到型循环结构)。这里老师就要讲到“当型”循环结构,也就是这个WhiIe语句:看看一般形式:WhiIe(表达式)要执行的语句看一看程序执行流程图,用语言描述。执行流程:当表达式为非0值时,执行WhiIe语句中的一系列语句,其特点
5、是:先判断表达式的值,如果表达式的值为真,就执行语句。同时大家不要忘记,如果条件不满足,则循环内的语句一次也不会执行。演示:老师用whi1e语句把刚才用goto语句写的1+到100的值再重新写一遍;main()(inti=1;sum=0;whi1e(i100,在循环体中使i值增加以最终促成whi1e条件不成立,从而退出whi1e循环并使程序流程继续往下走,比如这里的i+;如果没有这条语句,则会导致Whi1e循环永远不会执行结束,无法执行到WhiIe后面的语句,从而程序就卡死了,程序卡死后的表现就是屏幕不出后面的结果了,然后甚至还会使整个电脑的响应速度变慢,cpu占用率的百分比变大。四:dowh
6、i1e语句这是直到型循环结构;看看一般形式:do要执行的语句whi1e(表达式);看看程序执行流程图,用语言描述执行流程:先执行一次指定的循环体内的语句,然后判断表达式的值,如果表达式的值为非0(真)时,继续执行循环体内的语句,然后继续判断表达式的值,如此反复,一直到表达式的值为假,跳出循环体。那么这个直到型循环体积结构,和上边讲的当型循环体结构最大的不同在哪里,大家是否注意到;当型循环体结构:当条件不满足时,循环体内的语句一次都不执行;直到型循环体结构:至少执行循环体内语句一次,然后才判断条件是否满足,条件如果满足,则继续执行循环体结构内的语句O演示:讲解并跟踪调试这段代码。inti=1,S
7、um=0;dosum=sum+i;i+;)whi1e(i=100)Printf(%d”,sum);大家看到了,我们上边分别用Whi1e()当型循环语句,d。WhiIeo直到型循环语句演绎了1+。到IOO的过程,这两种程序写法完全等价,结果相同。演示当型和直到型循环语句的不同:如果whi1e后边的表达式一开始就为假(0)时,两种循环的结果不同。intSum=OJ=1;whi1e(i=10)(sum=sum+i;i+;)Printf(%d”,sum);intsum=0J=1;do(sum=sum+i;i+;)whi1e(i=10);Printf(%d,sum);把上述程序的i=1修改为i=20;,再看运行结果,就发现两个运行结果不同了。因此此时对于whi1e循环一次也不执行,而对于dowhi1e循环,则会执行一次循环体。结论:当WhiIe后面的表达式的第一次的值为真时,两种循环得到的结果相同,否则,两种循环结果不相同。在实际实践中,WhiIe语句更常被使用,而dowhi1e语句则使用的场合比较少,因为基本上可以被Whi1e语句所取代,好本节课就讲到这里,感谢大家的收听。