考研计算机基础2.6 if/else选择结构

if选择结构只在条件为true时采取操作,条件为false时则忽略这个操作。利用if/else选择结构则可以在条件为true时和条件为false时采取不同操作。例如,下列伪代码:

if student‘s grade is greater than or equal to 60
   	print "Passed"
	else
	   print "Failed"

在学生成绩大于或等于60时打印“Passed”,否则打印"Failed"。打印之后,都“执行”下一条伪代码语句。注意else的语句体也缩排。

编程技巧 2.3

if/eIse选择结构的两个语句体都缩排。 选择的缩徘规则应当在整个程序中认真贯彻执行。不按统一缩排规则编写的程序很难阅读。 编程技巧 2.4

如果有多层缩排,则每一层应缩排相同的空间量。 上述伪代码if/else结构可以写成如下的C++代码:

if(grade>=60)
	cout<<"Passed";
	else
		cout<<"Failed";

图2.4的流程图很好地演示了if/else结构的控制流程。注意,这个流程图(除了小圆框和流程之外)也只能包含表示所要操作的矩形框和表示所要判断的菱形框。这里我们继续强调操作/判断模型计算,假设框中包含建立C++程序所需的空白双项选择结构。程序员的任务就是根据算法需要用堆栈和嵌套两种方法组合各种控制结构,然后在这些框中填人算法所要的操作和判断,从而生成程序。

C++提供条件运算符(?:),与if/else结构密切相关。条件运算符是C++中惟一的三元运算符(thrnary operator),即取三个操作数的运算符。操作数和条件运算符一起形成条件表达式(conditional

expression)。第一个操作数是条件,第二个操作数是条件为true时整个条件表达式的值.第三个操作数是条件为false时整个条件表达式的值。例如,下列输出语句:

cout<<(grade>=60? "Passed":"Failed");

包含的条件表达式在grade=60取值为true时,求值为字符串“Passed”;在grade>=60取值为false时,求值为字符串"Failed"。这样,带条件表达式的语句实际上与上述if/else语句相同。可以看出,条件运算符的优先级较低,因此上述表达式中的话号是必需的。

条件表达式酌值也可以是要执行的操作。例如.下列条件表达式:

grade >=60? cout<<"Passed":cout<<"Failed";

表示如果grade大于或等于60,则执行cout<<"Passed",否则执行cout<<"Failed"。这与前面的if/else结构也是相似的。条件运算符可以在一些无法使用if/else语句的情况中使用。

嵌套if/else结构(nested if/else

structure)测试多个选择,将一个if/else选择放在另一个if/else选择中。例如,下列伪代码语句在考试成绩大于或等于90分时打印A.在80到89分之间时打印B,在70到79分之间时打印C,在60到69分之间时打印D,否则打印F。

 if studen‘s grade is greater than or equal to 90

        print "A"
    else
        If student‘s grade is greater than or equal to 80
            print "B"
    else
        If student‘s grade is greater than or equal to 70
            print "C"
    else
        If student‘s grade is greater than or equal to 60
            print "D"
    else
        print "F"
 

这个伪代码对应下列C++代码:

   if(grade>=90)
        cout<<"A";
    else
        if(grade>=80)
            cout<<"B";
            else
                if(grade>=70)
                    cout<<"C";
                    else
                        if(grade>=60)
                            cout<<"D";
                            else
                                cout<<"F";

如果考试成绩大于或等于90分,则前4个条件都为true,但只执行第一个测试之后的cout语句。执行这个cout语句之后,跳过外层if/else语句的else部分。许多C++程序员喜欢将上述if结构写成:

 if(grade>=90)
        cout<<"A";
    else if(grade>=80)
        cout<<"B";
    else if(grade>=70)
        cout<<"C";
    else if(grade>=60)
        cout<<"D";
    else
        cout<<"F";

两者形式是等价的。后者更常用,可以避免深层缩排便代码移到右端。深层缩排会使一行的空间太小,不长的行也要断行,从而影响可读性。

编程提示2.1

嵌套if/else结构比一系列单项选择if结构运行速度快得多,因为它能在满足其中一个条件之后即退出。

性能提示2.2

在嵌套if/else结构中,测试条件中true可能性较大的应放在嵌套if/else结构开头.从而使嵌套if/else结构运行更快,比测试不常发生的情况能更早退出。

if选择结构体中只能有一条语句。要在if选择结构体中包括多条语句,就要把这些语句放在花括号({})中。放在花括号中的一组语句称为复合语句(compund statement)。

软件工程视点2.2

复合语句可以放在程序中出现单句语句的任何地方。 下例在if/else结构的else部分包括复合语句:

if(grade>=60)
	cout<<"Passed. ";
	else{
		cout<<"Failed. ";
		cout<<"You must take this course again. ";
	}

如果grade小于60,则程序执行else程序体中的两条语句并打印:

Failed.
You must take this course again.

注意else从句中的两条语句放在花括号中。这些花括号很重要,如果没有这些花括号,则下列语句:

cout<<"You must take this cours again. ";

在if语句else部分之外,不管成绩是否小于60都执行。

常见编程错误2.2

忽略复合语句中的一个或两个花括号可能在程序中生成语法错误或逻辑错误。

编程技巧2.5

总是在if/else结构(和任何控制结构)中放上花括号,可以避免不慎疏忽,特别是后面要在if或else语句中增加语句时。错误(fatal logic error)使程序失败和提前终止,而非致命逻辑错误(nonfatal logic error)则让程序继续执行,只是产生错误结果。

软件工程视点2.3

复合语句可以放在程序中出现单句语句的任何地方,也可以根本不放语句,即放上空语句。空语句就是在正常语句出现的地方放一个分号(;)。

常见编程错误2.3

在if结构条件后面放上分号会造成单项选择if结构的逻辑错误和双项选择if结构的语法错误(如果if部分包含实际语句体)。

编程技巧2.6

有些程序员喜欢在花括号中输入各个语句之前输入复合语句的开始花括号和结束花括号。这样可以避免丢失一个或两个花括号。

本节介绍了复合语句的符号。复合语句可以包含声明(例如,和main程序体中一样),如果这

,则这个复合语句称为块(block)。块中的声明通常放在块中任何操作语句之前,但也可以和操作语句相混和。第3章将介绍块的用法,在此之前,读者应避免使用块(除了作为main程序体)。

2016考研英语http://www.2016kaoyan.com/
2016考研政治http://www.2016kaoyan.com/

时间: 2024-10-30 04:55:08

考研计算机基础2.6 if/else选择结构的相关文章

考研计算机基础:构造算法与自上而下逐步完善:实例研究2

构造算法与自上而下逐步完善:实例研究2(标记控制重复) 下面将全班平均成绩问题一般化,考虑如下问题: 开发一个计算全班平均成绩的程序,在每次程序运行时处理任意个成绩数. 在第一个全班平均成绩例子中,成绩个数(10)是事先预置的.而本例中,则不知道要输入多少个成绩,程序要处理任意个成绩数.程序怎么确定何时停止输入成绩呢?何时计算和打印全班平均成绩呢? 一种办法是用一个特殊值作为标记值(sentinelvalue),也称信号值(signalvalue).哑值(dummy value)或标志值(fla

考研计算机基础构造算法的实例研究

构造算法:实例研究1(计数器控制重复) 要演示如何开发算法,我们要解决几个全班平均成绩的问题.考虑下列问题: 班里有10个学生参加测验,可以提供考试成绩(0到100的整数值),以确定全班平均成绩. 全班平均成绩等于全班成绩总和除以班里人数.计算机上解决这个问题的算法是辅人每人的成绩,进行平均计算,然后打印结果. 下面用伪代码列出要执行的操作,指定这些操作执行的顺序.我们用计数器控制重复(counter-conttrolled repetition)一次一个地输人每人的成绩.这种方法用计数器(co

考研计算机基础while重复结构

while重复结构 重复结构(repetition strucure)使程序 员可以指定一定条件下可以重复的操作.下列伪代码语句: While there are more items on my shopping list Purchase next item and cross it off my list 描述购物过程中发生的重复.条件"there are more ltems on my shopping list"(购物清单中还有更多项目)可真可假.如果条件为true.则执行

java基础:流程控制(选择结构switch语句)

(1)格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; } 格式解释说明: switch:说明这是switch语句. 表达式:可以是byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是字符串 case:后面的值就是要和表达式进行比较的值 break:表示程序到这里中断,跳出switch语句 default:如果所有的情况都不匹配,就执行这

计算机专业考研if选择结构

if选择结构 选择结构在不同操作之间选择.例如,假设考试成绩60分算及格,则下列伪代码: if student's grade is greater than or equal to 60 print "Passed" else print "Failed" 确定“学生成绩大于或等于60分”是true或false,如果是true,则该生及格,打印“Passed”字样,并顺序“执行”下一个伪代码语句(记住,伪代码不是真正的编程语言).如果条件为false,则忽略打印语

计算机基础课程对编写代码有多大影响

相信很多计算机专业刚步入社会开始编程工作的同学都有一个疑惑,大学四年学的计算机基础课程对编程来说几乎用不上,远远没有C/C++.Java.Java Web.sql有用.我当时也有这样的疑惑,因为大部分程序员刚开始工作的任务仅仅只是在别人搭好的框架下,在合适的地方添加上合适的代码,实现某个功能.在这个阶段有这样的疑惑是可以理解的,因为只是在山脚下看问题,不知庐山真面目.在这个阶段有些有心的同学可能会在编码过程中考虑下性能(方法级别的性能),合理使用集合类,合理采用一些算法,减少循环次数和时间复杂度

Python学习第一天----计算机基础

一.学习计算机基础的目的 再高级的编程语言都是运行在操作系统之上的,而操作系统又是运行在硬件基础之上.所以在开始学习编程之前需要深刻的了解并熟知计算机的基础知识.包括硬件基础及操作系统基础. 二.计算机硬件发展史 计算机的定义:是现代用于高速计算的一种电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能. 发展史: 原型或者说灵感起源于中国 1946年2月14日情人节这天,世界上第一台电子计算机"电子数字积分计算机ENIAC"在美国宾夕法尼亚大学问世. 电子管时代--

计算机基础知识学习

第一周学习 一.知识方面,总得来说,就是学习计算机基础知识. 1.从计算机的发展,应用,组成,网络等方面了解: 2.对计算机操作系统的学习:常用的操作系统,操作系统的功能.分类: 3.办公软件的学习:Word\Excel\ppt,像Word中编号格式.自动生成目录,Excel中条件格式的应用,图表插入,以及各种基础函数的使用: =SUM(Eoo*$E$3,Foo*$F$3,Goo*$G$3)  表示:用E\F\G列的各数与E3\F3\G3相乘后求和,count(if)\a 计数函数, =COUN

计算机基础知识:硬件

目录 一.为什么要学习计算机基础 二.本文目标 三.计算机的发展历史四.计算机硬件介绍4.1CPU处理器4.2存储器 4.3磁盘 4.4磁带          4.5总线         4.6启动计算机 一.为什么要学习计算机基础 计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能.是能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备. 程序自动化:可以将预先编好的程序组纳入计算机内存,在程序控制下,计算