2.4.5 简单的循环机制(1)
大多数程序都包含需要多次重复的行动。以图2.7用于计算员工工资总额的程序为例。如果公司有100名员工,一个更完善的工资程序将重复这一计算100次。程序中,用于重复一个或一组语句的那部分称为循环。C++(www.cppentry.com)语言提供了多种方式创建循环。其中一个结构称为while语句,或者称为while循环。为了展示它的用法,首先介绍一个简单的练习程序,再介绍一个更实用的程序。
图2.11的程序含有简单的while语句(以粗体显示)。花括号{和}之间的部分称为while循环的主体,也就是需要重复采取的行动。花括号内的语句依次执行,执行完一次之后,再从头继续执行,如此重复,直到while循环结束。在第一个示范对话中,循环主体在循环结束之前,重复执行了三次,所以程序输出了三次Hello。循环主体的每一次重复都称为循环的一次迭代。因此,第一个示范对话表明循环进行了三次迭代。
|
| 图2.11 while循环 |
示范对话1
- How many greetings do you want 3
- Hello Hello Hello
- That's all!
示范对话2- How many greetings do you want 1
- Hello
- That's all!
示范对话3- How many greetings do you want 0
-
- That's all!
"while"(当……时)一词已暗示了while语句的含义。当圆括号内的布尔表达式满足条件时(求值结果为true),就重复执行循环。在图2.11中,这意味着只要变量count_down大于0,就重复执行循环主体。下面以第一个示范对话为例,研究一下while循环是如何执行的。用户输入3,所以cin语句将count_down的值设为3。在这种情况下,当程序到达while语句时,肯定满足count_down大于0这个条件,所以执行循环主体中的语句。每次重复循环主体时,都会执行以下两个语句: - cout << "Hello ";
- count_downcount_down = count_down - 1;
因此,循环主体每次重复时,都会输出"Hello",同时变量count_down的值递减1。计算机重复了三次循环主体后,变量count_down的值递减至0,圆括号中的布尔表达式不再满足。所以,重复了三次循环主体后,这个while语句就会终止。
图2.12总结了while语句的语法。对Boolean_Expression的要求和对if-else语句中的布尔表达式的要求完全一样。和if-else语句一样,while语句中的布尔表达式也必须用圆括号括起来。图2.12针对两种情况给出了语法模板:第一种情况是循环主体有多个语句。第二种情况是循环主体只有一个语句。注意,循环主体只有一个语句时,就没有必要使用花括号。
现在着重讨论while语句采取的行动。执行while语句时,发生的第一件事情是检查单词while之后的布尔表达式。该表达式的求值结果要么为true,要么为false。例如:
- count_down > 0
如果count_down的值为正,则求值结果为true;如果为false,就不采取行动,程序将继续执行while语句之后的下一个语句。如果比较结果为true,就执行整个循环主体。在被比较的表达式中,通常至少要有一个包含了即将由循环主体改变的东西,比如图2.11的while语句中的count_down的值。执行循环主体之后,会再次进行比较。只要比较结果为true,这个过程就会不断地重复。循环主体每次迭代后,会再次进行比较,假如结果为true,就再次执行整个循环主体。一旦比较结果不为true,就结束while循环。
|
| 图2.12 while语句的语法 |