3.3.1 while语句
while语句用于在满足循环条件时重复执行某件事情,其流程如图3-6所示。从图中可以看出,当表达式的值为真时,执行相应的语句块(循环体),然后再判断表达式的值,如果为真,则继续执行语句块……当表达式的值为假时,检查其后面是否有else子句(因为可选,所以流程图未画出),如果有,则执行else子句;如果没有,则直接跳出while语句,执行其下面的语句。
图3-6 while循环结构流程图
书写格式:关键字while与表达式之间用空格隔开,表达式后接英文冒号,else子句与while子句左对齐,后接英文冒号,所有语句块左对齐,即语句块中的全部语句均缩进4个空格,如图3-7所示。
图3-7 while循环结构书写格式
例如:
本例中计次的初始值time为8,循环条件为计次小于12,循环体为输出“有效次数内”并使计次加1。每次循环判断计次,直到计次等于12时,输出“计次已满”并结束循环。
在使用while语句时,需要注意以下事项:
①与if语句类似,while语句的表达式可以是任意类型,如x!=y,x>3 or x<5,-5等。
②循环体中的语句块有可能一次也不执行,上例中若初始值time=13,则语句块不会执行。
③语句块可以是一条或多条语句,上例中while子句中的语句块为两条语句,else子句中的语句块为一条语句。
④while循环中的else子句可以省略,上例中若没有else子句,则当计次等于12时,while语句结束,程序继续执行while循环后面的语句。
⑤程序中需要包含使循环结束的语句,上例中若缺少语句time=time+1,则程序无法终止。
死循环:在while循环中,如果表达式的值恒真,循环将一直执行下去,无法靠自身终止,从而产生死循环。
例如:
书写程序时,有时要尽量避免死循环,但是在某些特定场合中死循环却具有十分重要的作用,如嵌入式编程、网络编程中等等。
【例3-9】编写程序,统计并输出1~1000以内所有能够同时被3和7整除的数字个数。
分析:循环变量的初始值为1,如果循环变量的值小于等于1000(满足循环进行的条件),则进入循环体使用if语句进行判断,然后循环变量自增1并进入下一轮循环,循环结束后输出统计结果。
代码如下:
【例3-10】编写程序,用下列公式计算π的近似值,直到最后一项的绝对值小于10-6为止。
分析:观察π的计算公式可知,循环变量的初始值为1,循环条件为循环变量的绝对值大于等于10-6,循环变量值的变化规律如上式所示,每项的分母比上一项增加2,符号与上一项相反。
代码如下: