师:今天授课主题是广州市信息技术教科书第二册第二章第四节循环结构第二课时while循环语句。首先回顾上节课,我们通过编写累加求和程序,掌握了for循环语句基本格式。本节课学习目标是掌握while循环语句格式,学会找循环条件,利用它解决重复性问题。
来看这道题,熟悉吧?这是上节课案例,已知循环次数为n次时,能用for循环语句解决。现在老师稍作改编,还能用for循环结构实现吗?方便吗?大家思考。我们来看橙同学的运行过程,该同学第一次输入n值为50,第二次输入40,第三次输入45,都不符合条件,最终输入44,找到了n的最大整数为44。陈同学认为这种方式不方便,那有没有更方便的方法解决这道题呢?其实,题目关键解题密码是循环条件总和小于1000,结合今天要学的while循环语句就能解决。接下来通过一段微课了解while循环的意义和格式。
while循环的意义在日常生活中有体现,比如只要还没退休,就要一直工作;只要还没有毕业,就要一直去上学;只要没满18岁就不能考取驾照。用while循环表示就是:从这些例子可知,while循环的意义就是根据条件重复做某件事。
while循环语句格式功能是,如果条件为true,就会执行while语句下面缩进的语句块,即循环体。执行完语句块后回到while条件处,检测条件是否还成立。若条件成立,就继续重复执行语句块,直到条件为false,循环结束,接着执行while语句后面未缩进的语句。注意,条件表达后别忘输入英文冒号,while语句的循环体也需要缩进。
根据视频介绍,学习while循环语句基本格式:while循环条件: 语句块,当循环条件为真值,重复执行语句块,否则不执行语句块,跳出循环。接下来尝试用while循环语句基本格式解决改编后的题目,体验程序运行结果。显示为s等于990,N的值为44。这个程序明显比for循环编写的程序更直观、方便。下面对题目进行编程思路分析:
第一步,找到题目中的变量s和n,并赋予初值。
第二步,找到题目中的循环条件,即s加n小于1000。
第三步,找到重复要做的事,即循环体内的语句块。根据数学推理,n的值由n加1赋予,s的值由s加n赋值。当条件s加n不小于1000时,程序跳出循环体,执行下面的语句块。
第四步,执行输出语句,输出s的值和n的值。
来看小陈同学遇到的困难,试着帮他解决。第一行、第二行应该是赋值符号,要把等号修改过来。接着注意while语句后面的冒号,此时是中文冒号,要改成英文冒号。还要留意循环体的缩进,最后把所有逗号改为英文逗号,再来运行程序,成功运行了。视频中小陈同学遇到的困难,也是很多同学编程时常遇见的,我们总结下该程序编写要注意的问题:注意英文、中文符号不混淆,缩进位置要对应,赋值符号和相等符号不混淆。
接下来请同学们动手实践,利用while循环语句编写猜数字游戏。要求预设一个数字,让用户猜并输入,如果没猜对,提醒用户猜大了还是猜小了,让用户重新猜测并输入。只要没猜对,游戏就一直继续,猜对本轮游戏结束。看程序运行效果,第一次输入数字56,第二次输入30,第三次输入40,最后一次输入38。前三次输入不正确时,程序会提醒,最后一次猜对,程序提醒游戏结束。根据思考分析,当条件假设永远为真时,无限循环提示用户输入,如果猜错,重复提示;猜准确,则跳出循环。像这种循环结构里又有分支结构的程序怎么编写呢?梳理下编写思路:
第一步,设置目标数字初值。
第二步,利用无限循环格式,假设条件永远为真。
第三步,通过用户输入赋值参数变量。
第四步,结合break语句控制跳出循环体。
第五步,输出变量值,结束程序。
总结无限循环格式:while true: 语句块 if条件: break 像这种既有循环结构又有分支结构的,称为无限循环。接下来通过一个视频了解无限循环while和if之间的区别和联系。
while和if语句结构类似,比如使用while时,只要“我很口渴”条件满足,就会持续执行“喝一口水”动作,直到条件判断为false时结束;而使用if时,如果“我很口渴”条件满足,就会喝一口水,喝完后不管是否还口渴,都不再重复。
上面例子中,由于while循环条件一直判断为true,程序会一直运行。若处理数据量大,会占用很多系统资源,甚至导致死机。所以需要一个跳出循环的办法,这就要用到break语句,功能是退出while循环,执行while循环模块后面的语句。
