您的当前位置:首页正文

第四课 简单的分支结构程序设计

来源:个人技术集锦
第四课 简单的分支结构程序设计

在现实生活中,我们每天都要进行根据实际情况进行选择。例如,原打算明天去公园,但如果明天天气不好,将留在家里看电视。所以人也会根据条件进行行为的选择。计算机也会根据不同情况作出各种逻辑判断,进行一定的选择。在这课与下一课中,我们将会发现,我们是通过选择结构语句来实现程序的逻辑判断功能。 一、PASCAL中的布尔(逻辑)类型

在前面,我们学习了整型(integer)与实型(real)。其中integer型数据取值范围为-32768到32767之间所有整数。而real型数据取值范围为其绝对值在10-38到1038之间的所有实数。它们都是数值型的(即值都为数)。布尔型(Boolean)是一种数据的类型,这种类型只有两种值,即\"真\"与\"假\"。 1、 布尔常量

在Pascal语言中\"真\"用ture表示,\"假\"用False表示。所以布尔类型只有TRUE与FALSE两个常量。

2、 布尔变量(BOOLEAN)

如果我们将某些变量说明成布尔型,那么这些变量就是布尔变量,它们只能用于存放布尔值(ture或false)。 例如,VAR A,B:BOOLEAN; 3、 布尔类型是顺序类型

由于这种类型只有两个常量,Pascal语言中规定ture的序号为1,false的序号为0。若某种类型的常量是有限的,那么这种类型的常量通常都有一个序号,我们称这种类型为顺序类型。如前面我们学过的整型(integer),以及后面要学到的字符型(char)都是顺序类型。

4、 布尔类型的输入与输出 a)输出

VAR A,B:BOOLEAN; BEGIN

A:=TRUE;B:=FALSE; WRITELN(A,B);

END. TRUEFALSE

b)布尔类型变量不能直接用读语句输入

布尔类型变量不能通过读语句给它们提供值。事实上,我们可以通过间接方式对布尔变量进行值的输入。 例如,以下程序是错误的: var a,b,c:Boolean; begin

readln(a,b,c); {错误语句} writeln(a,b,c); end.

二、关系表达式与布尔表达式 1、什么是关系表达式

用小括号、>、<、>=、<=、=、<>将两个算术表达式连接起来的式子就称为关系表达式(比较式)。

如:3+7>8,x+y<10,2*7<=13等都是关系表达式。 2、关系表达式的值

很显然,这几个关系表达式中第一个是正确的,第三个是错误的,而第二个表达式可能是对的,也可能是错的。所以我们很容易发现,这些表达式的值是\"对\"的或\"不对\"的(或者说,是\"真\"的或\"假\"的),即关系表达式的值为布尔值。表示该比较式两端式子的大小关系是否成立。如3+2>6是错的,故它的值为FALSE。同样,45>=32是对的,故该表达式的值为true。

关系表达式用于表示一个命题。如:\"m为偶数\"可表示为:m mod 2=0。\"n为正数\"可表示为:n>0。 3.布尔运算及布尔表达式

为了表示更复杂的命题,Pascal还引入三种逻辑运算符:not、and、or。它们分别相当于数学上的\"非\"、\"且\"和\"或\"的意义。

这三个运算符的运算对象为布尔量,其中not为单目运算,只有一个运算对象,and与or为双目运算,有两个运算对象。它们的运算真值表如下:

a false false true true b false true false true Not a true true false false a and b a or b a xor b false false false false ture true false true true true true false 于是,对于一个关系表达式,或多个关系表达式用布尔运算符连接起来的式子就称为布尔表达式。布尔表达式的值也为布尔值。

如果一个表达式里出现两个或两个以上的运算符, 则必须规定它们的运算次序。pascal规定:

①表达式中相同优先级的运算符,按从左到右顺序计算; ②表达式中不同优先级的运算符,按从高到低顺序计算; ③括号优先级最高,从内到外逐层降低;

对于一个复杂的表达式可能同时包含算术运算、关系运算和逻辑运算以及函数运算。运算的优先顺序为:括号à函数ànotà*、/、div、mod、andà+、-、or、xorà关系运算。

对于复杂的命题,我们可以用布尔表达式来表示。例如,命题:\"m,n都是偶数或都是奇数\"可表示为\"(m mod 2=0)and(n mod 2=0) or (m mod 2=1)and(n mod 2=1)\"。 三、简单的IF语句 1、格式

Ⅰ、IF <布尔表达式>THEN 语句;

Ⅱ、IF <布尔表达式>THEN 语句1 ELSE 语句2; (注意Ⅱ型IF语句中语句1后无\";\"号) 2、功能

Ⅰ、执行IF语句时,先计算<布尔表达式>的值,若为TRUE则执行语句,否则不执行任何操作。

Ⅱ、执行IF语句时,先计算<布尔表达式>的值,若为TRUE则执行语句1,否则执行语句2; 3、示例

1)例4.2输入一个整数a,判断是否为偶数。(是输出\"yes\"否则输出\"no\")。

Program ex4_2; Var a:integer; Begin

Write('a=');readln(a);

If (a mod 2 =0)then writeln('yes') Else writeln('no'); Readln; End.

2)华榕超市里卖电池,每个电池8角钱,若数量超过10个,则可打75折。 Program ex4_3;

Var Num:integer;Price,Total:real; Begin

Write('Num=');readln(Num); Price=0.8;

If Num>10 then Price:=Price*0.75; Total:=Num*Price;

Writeln('Total=',Total:0:2); Readln; End.

3)编写一与电脑猜\"红\"或\"黑\"的游戏。

分析:用1代表红,0代表黑。先由计算机先出答案,然后再由人猜,猜对输出\"YOU WIN\"否则输出\"YOU LOST\"。为了模拟猜\"红\"或\"黑\"的随意性,程序中需要用到随机函数random(n)。

函数是什么呢,例如大家都知道|-2|=2,|58|=58,那么|x|=?。

如果我们用y表示|x|,那么 .这里y=|x|就是一个函数,也就是说函数是一个关于一个或多个自变量(未知量,如上例中的x)的运算结果。

在pascal语言中,系统提供了许多内部函数,其中包括|x|函数,当然它用abs(x)表示。我们如果要求x2-y的绝对值,可以调用内部函数abs(x*x-y)即可求得。Random(n)

也是一个内部函数,调用它能得到0~n-1之间的整数(但它不确定的,或说是随机的)。同时由于函数是一个运算结果,所以函数的调用只能出现在表达式中。 Program ex4_3; Uses crt;

Var Computer,People:integer; Begin Randomize;

Computer:=random(2);

Write('You guess(0-Red 1-Black):');readln(People); If People=Computer then writeln('YOU WIN') Else writeln('YOU LOST'); Readln; End.

作业:.某车站行李托运收费标准是:10公斤或10公斤以下,收费2.5元,超过10公斤的行李,按每超过1公斤增加1.5元进行收费。 试编一程序,输入行李的重量,算出托运费。

因篇幅问题不能全部显示,请点此查看更多更全内容