2.5 if 选择结构
选择结构在不同操作之间选择。例如,假设考试成绩60分算及格,则下列伪代码:
if student's grade is greater than or equal to 60 print "Passed"
确定“学生成绩大于或等于60分”是true或false,如果是true,则该生及格,打印“Passed”字样,并顺序“执行”下一个伪代码语句(记住,伪代码不是真正的编程语言)。如果条件为false,则忽略打印语句,并顺序“执行”下一个伪代码语句。注意这个选择结构第二行的缩排,这种缩排是可选的,但值得提倡,因为它能体现结构化程序的内部结构。将伪代码变成C++代码时,C++编译器忽略空格、制表符、换行符等用于缩排和垂直分隔的空白字符。
编程技巧 2.1
在整个程序中坚持用合理缩排规则能大大提高程序可读性。建议用固定制表长度即1/4英寸或三个空格的缩排量。
上述伪代码的if语句可以写成如下C++语句:
if(grade>=60) cout<<"Passed"; cout<<"Passed";
注意C++代码与伪代码密切对应,这是伪代码的一个属性,使得其成为有用的程序开发工具。
编程技巧 2.2
伪代码常用于程存设计期间“构思”程序,然后再将伪代码程序转换为C++程序。
图2.3的流程图演示了单项选择if结构。这个流程图包含流程图中最重要的菱形框、也称判断框,表示要进行判断。判断框包含一个表达式(如条件),可取true或false值。判断框产生两条流程,一条指向表达式为true时的走向,一条指向表达式为false时的走向。第1章曾介绍过,可以根据包含关系或相等运算待的条件作出判断。
实际上,可以针对任何表达式作出判断,如果表达式求值为0,则当作false,如果表达式求值非0,则当作true。C++草案标准提供bool数据类型,表示true和false。关键字true和false表示bool数据类型的值。
注意,if结构也是单入/单出结构。稍后将会介绍,其余控制结构的流程图(除了小圆框和流程之外)也只能包含表示所要操作的矩形框和表示所要判断的菱形框。这是我们强调的操作/判断编程模型(action/decision model of progamming)。
可以想像有七个框,各包含七种控制结构中的一种控制结构,这些控制结构是空的,矩形框和菱形框中什么也没有。程序员的任务就是根据算法需要用堆栈和嵌套两种方法组合这几种控制结构,然后在这些框中填入算法所要的操作和判断,从而生成程序。下面介绍编写操作和判断的各种方式。