5.1.3 while语句

三种基本结构:顺序结构、选择结构、循环结构(当型循环结构与直到型循环结构)。现在讲解“当型”循环结构,也就是while语句。它的一般形式为:

看一看程序执行流程图,如图5.1所示,其中一般形式中提到的“要执行的语句”,也就是图5.1中的“循环体语句”。

图5.1 当型循环结构执行流程图

用语言描述一下整个执行流程:当型循环结构的最大特点是先判断表达式的值,如果表达式的值为真(非0),就执行“循环体语句”部分,然后再次循环回去,重新判断表达式的值从而决定是否再次执行“循环体语句”部分,如此反复。这里不要忘记,如果表达式的值在第一次判断时就为假(0),那么“循环体语句”部分就会一次也不执行。

看看如下范例,这里用while语句把刚才用goto语句进行的1到100的加法运算重写一次:

不知读者是否觉得这种写法比goto语句的写法更清晰呢?有几点说明:

(1)整个while中如果有多条要执行的语句(这就叫循环体语句),则要用{}括起来,以复合语句的形式出现(如上面的范例,用的就是复合语句),如果不用{},则while语句在条件成立(表达式值为真)时所执行的语句范围只会覆盖到while后面第一次遇到分号之前的语句,那整个程序的执行流程就错了。

(2)在循环体所包含的语句中,应该有使循环趋向于结束的语句,如上面的范例中,循环的结束条件是i>100,在循环体中使i值每次自增1(i++;),最终促成while条件变成“假”,从而退出while循环并使程序流程继续往下走,如果没有“i++;”这条语句,就会导致while循环永远不会执行结束,无法执行到while后面的语句,从而程序就一直卡在while循环处不断执行,这种情况就被称为程序卡死了,程序卡死后的表现就是屏幕上无法出现while后面的语句所显示的结果(因为程序流程根本执行不到后面),甚至还会导致计算机CPU占用率百分比变大,从而使整个计算机的响应速度变慢等问题。