分支结构(选择结构)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分支结构(选择结构)
布尔运算(逻辑运算)
要判断“ A>B”是否成立,其结果不是一个具体的数值,而是“真”或“假”,即“是”或“否”的问题。这类问题在我们日常生活中是很多的,诸如这类判断的问题,其结果都是只有两个:真或假,这就是我们所说的布尔运算(逻辑运算)。
∙布尔常量和布尔变量
布尔型的常量或变量的值只有两个: TRUE(真)和 FALSE(假)。要把一个变量定义成布尔类型,用的数据类型是: BOOLEAN。例如程序:
var a,b:boolean;
begin
a:=true;
b:=false;
……
end.
∙布尔表达式
布尔表达式有以下两种操作:
∙关系运算符: =; <>; >; <; >=; <=,是用来进行关系操作(对比)运算的符号,其结果为 BOOLEAN型。如: 2=3,其结果为 FALSE。 *注意:这里的“ =”与赋值
符号“: =”是完全不同的,其作用和结果均不同。
∙逻辑运算符: AND(逻辑和); OR(逻辑或); NOT(逻辑非)。是用来进行逻辑值的
逻辑运算的。如:( 2=3) AND ( 4<>3),值为 FALSE。
布尔表达式的运算顺序是:()à函数à NOT à *,/.DIV,MOD,AND,+,-,OR
à >,<,>=,<=,<>,= 。
布尔表达式中的逻辑运算如下表所示: a和 b 均为布尔型表达式或常 /变量 .
由上可以看出:
∙用 AND运算时,左右两个值同为 TRUE时,运算结果才为 TRUE,即两个条件同时满足,结果才为 TRUE。这就是我们平常所说的“和”。
∙用 OR运算时,左右两个值只需有一个为 TRUE,运算结果就为 TRUE,即两个条件满足其中一个,结果就为 TRUE。这就是我们平常所说的“或”。
∙用 NOT运算时,只是把其后的逻辑值取反,即“非”。
∙例: [例 4、 1]
程序运行结果是:
false
true
true
由上可以看出:逻辑运算中的关系运算均用括号“()”括起来。关系运算 /逻辑运算的结果也是一个值( BOOLEAN型),所有布尔运算也是表达式,可以赋给一个变量,也可以直接用输出语句输出。打印输出时,屏幕上就显示“ false”或“ true”。
条件 ( IF ) 语句
条件语句是用一个布尔表达式的值来决定程序的走向。即程序提供一个分支,由布尔表达式的值来决定程序究竞运行哪个分支。即程序已经不是顺序结构了,而是提供了一个分支结构。每次只可能运行其中的一个分支。如下图所示:
条件语句有两种格式:
1、 if <布尔表达式 > then <语句 >;
2、 if <布尔表达式 > then <语句 1> else <语句 2>;
格式 1的作用是:如果布尔表达式值为 TRUE(即该条件满足),则运行语句,否则不运行任何语句。
格式 2的作用是:如果布尔表达式值为 TRUE(即该条件满足),由运行语句 1,否则(即布尔值为 FALSE,亦即条件不满足)就运行语句 2。注意:只有条件语句结束时才有分号。
注意:如果条件语句中的分支语句不止一句,可用“ begin …… end;”来框住,加以区别。如:以下两个程序都为从键盘输入 1个整数,打印出它的算术平方根。 [例 4、 2]:
条件语句的嵌套:条件语句是可以嵌套的,例如:
if a>0 then if a>1 then …… else …… else … .;
上述语句看起来无法理解,但如果我们把它改写为以下形式时,就一目了然了:
if a>0 then begin
if a>1 then begin
……
end
else begin
……
end
else begin
……
end;
也就是说,第二个 IF语句只是第一个 IF语句中的一部分,即嵌入的一个 IF语句。
例:输入一个年份,判断它是否闰年。我们知道,每四年中有一年是闰年,即有 366天,而其余三年是平年,只有 365天,而按照规定: 1、如果哪一年的年份能被 4整除,则该年一般为闰年; 2、这样,每 100年又会少一天,所以又规定如果该年能被 4整除,又能被 100整除,则认为该年不是闰年,而是平年; 3、这样,每 400年又会多出一天,所以又规定,如果哪一年能被 400整除,则该年又是闰年。
由上可知: 1980, 1996, 1984年均为闰年, 1900年为平年,而 2000年为闰年。
程序如下: [例 4、 3]
Program q43;
Var y:integer;
Begin
Readln(y);
if (y mod 4=0) then begin
if (y mod 100=0) then begin
if (y mod 400=0) then begin
writeln('run');
end else begin
writeln('ping');
end;
end else begin
writeln('run');
end;
end else begin
writeln('ping');
end;
end.
多分支语句
IF语句只能使程序有两个分支,当遇到需要有两个以上分支时, IF语句就很不适用了,这时我们可以用 CASE语句,它能使程序有很多个分支。其效果如下图: