1.4 控制结构
语句顺序地执行:函数的第一条语句首先执行,接着是第二条,依次类推。当然,少数程序——包括我们将要编写的解决书店问题的程序——可以仅用顺序执行语句编写。事实上,程序设计语言提供了多种控制结构支持更为复杂的执行路径。本节将简要地介绍C++(www.cppentry.com)提供的控制结构,第6章再详细介绍各种语句。
1.4.1 while语句
while语句提供迭代执行。可以用while语句编写一个从1到10(包括10)的求和程序,如下:
#include <iostream> int main() { int sum = 0, val = 1; // keep executing the while until val is greater than 10 while (val <= 10) { sum += val; // assigns sum + val to sum ++val; // add 1 to val } std::cout << "Sum of 1 to 10 inclusive is " << sum << std::endl; return 0; } |
编译并执行后,将输出:
Sum of 1 to 10 inclusive is 55 |
与前面一样,程序首先包含iostream头文件并定义main函数。在main函数中定义两个int型变量:sum保存总和,val表示从1到10之间的每一个值。我们给sum赋初值0,而val则从1开始。
重要的部分是while语句。while结构有这样的形式:
while (condition) while_body_statement;
|
while通过测试condition和执行相关的while_body_statement来重复执行,直到condition为假。
condition是一个可求值的表达式,所以可以测试其结果。如果结果值非零,那么条件为真;如果值为零,则条件为假。
如果condition为真(表达式求值不为零),则执行while_body_statement。执行完后,再次测试condition。如果condition仍为真,则再次执行while_ body_statement。While语句一直交替测试condition和执行while_ body_statement,直到condition为假为止。
在这个程序中,while语句是
// keep executing the while until val is greater than 10 while (val <= 10) { sum += val; // assigns sum + val to sum ++val; // add 1 to val } |
While语句的条件用了小于或等于操作符(<=操作符),将val的当前值和10比较,只要val小于或等于10,就执行while循环体。这种情况下,while循环体是一个包含两个语句的块:
{ sum += val; // assigns sum + val to sum ++val; // add 1 to val }
|
块是被花括号括起来的语句序列。C++(www.cppentry.com)中,块可用于任何可以用一条语句的地方。块中第一条语句使用了复合赋值操作符(+=操作符),这个操作符把它的右操作数加至左操作数,这等效于编写含一个加法和一个赋值的语句:
sum = sum + val; // assign sum + val to sum |
因此第一条语句是把val的值加到sum的当前值,并把结果存入sum,
第二条语句
使用了前自增操作符(++操作符),自增操作符就是在它的操作数上加1,++val和val = val + 1是一样的。
执行while的循环体后,再次执行while的条件。如果val的值(自增后)仍小于或等于10,那么再次执行while的循环体。循环继续,测试条件并执行循环体,直到val的值不再小于或等于10为止。
一旦val的值大于10,程序就跳出while循环并执行while后面的语句,此例中该语句打印输出,其后的return语句结束main程序。
关键概念:C++(www.cppentry.com)程序的缩排和格式
C++(www.cppentry.com)程序格式非常自由,花括号、缩排、注释和换行的位置通常对程序的语义没有影响。例如,表示main函数体开始的花括号可以放在与main同一行,也可以像我们那样,放在下一行的开始,或放在你喜欢的任何地方。唯一的要求是,它是编译器所看到在main的参数列表的右括号之后的第一个非空格、非注释字符。
虽然说我们可以很自由地编排程序的格式,但如果编排不当,会影响程序的可读性。例如,我们可以将main写成单独的一长行。这样的定义尽管合法,但很难阅读。
关于什么是C或C++(www.cppentry.com)程序的正确格式存在无休止的争论,我们相信没有唯一正确的风格,但一致性是有价值的。我们倾向于把确定函数边界的花括号自成一行,且缩进复合的输入或输出表达式从而使运算符排列整齐,正如1.2.2节的main函数中的输出语句那样。随着程序的复杂化,其他缩排规范也会变得清晰。
记住重要的是可能存在其他格式化程序的方式。在选择格式化风格时,要考虑提高程序的可读性,使其更易于理解。一旦选择了某种风格,就要始终如一地使用。
【责任编辑:
董书 TEL:(010)68476606】