1、选择结构的程序设计(一)引言:在日常生活中,我们经常遇到根据具体情况的不同而去做具体的事,比如:若星期天下雨,我就在家看书,否则我就去踢足球。我们可以画出这个语句的 N-S 图(见图 1):图 1 图 2在我们的程序设计过程中,我们也会经常遇到这种情况,即判断某一个条件是否成立,如果成立做一件事(执行一个/些语句),如果条件不成立就做另一件事(执行另外一个/ 些语句)。比如:若 A 为正数,则打印 A,否则打印-A。我们也可以模仿上个例子画出这件事的 N-S 图(见图 2)。再如:如果 XY,则交换 X,Y 的值,让学生完成。要完成这些程序就要用到 选择结构 。下面先学习一些选择结构的基础知识
2、:一、 布尔(逻辑)常量和变量1、 布尔(逻辑型)常量:真(TRUE)、假(FALSE);也可:CONST T=TRUE ;F=FALSE;2、 布尔变量:变量的类型为布尔型,即存放布尔型数值的变量;定义:VAR A,B:BOOLEAN;A:=ODD( 3);3、 布尔型数据是顺序型数据:FALSE0;TRUE1,可以使用函数 ORD、PRED、SUCC;二、 关系表达式:比较大小1、 关系表达式是由一个关系运算符将两个相容(有序)类型的表达式联结起来的式子。2、 PASCAL 中的运算符有 6 个: 、 =、 =、 ;举例判断真假。3、 数值型数据的比较按其大小、其它类型数据按照其序号大小进
3、行比较。由于实型数据在计算机中是近似存储的,所以比较大小时不能直接比。如:0.666666 等不等于 0.666667 呢?不一定,若要求误差在 0.001 范围内则等,若要求在 0.00000001 范围内则不相等。此时,应改用下列式子判断 X 是否等于 Y:ABS(X-Y)0打印AA B NOT A A AND B A OR BT T F T TT F F F TF T T F TF F T F F四、 关系(逻辑)表达式:用逻辑运算符连接起来的式子设 X 为整数,则1、 表示: 正奇数:(X0) AND (ODD(X))1 到 10 之间的整数:(X=1)AND (X100)OR(X函数
4、NOT*、/、DIV、MOD、AND+、-、OR关系(逻辑)运算符;运算规律:先高级后低级,同级自左向右运算。3、 例子: TRUE AND NOT(15)AND (IJ+5 )OR TRUE FALSE AND FALSE 值为 TRUE。设 X=5(6),求以下表达式的值:(X+5)*ODD(X)+X DIV 2 值为 12(3)。已知 X,Y,Z 均为 1,求值:TRUE AND (X0) AND (Y0) OR (Z 0 THEN WRITELN(A)ELSE WRITELN(-A);改用 ABS 函数做: WRITELN(ABS (A )。若 X=0,则输出 X:语句如下:IF X=
5、0 THEN WRITELN(X);学生练习:若 X0,则求 X 的平方根,否则求 X 的平方。布尔表达式真 假语句 1语句 2(可以 没有)2、 例题:例一:将编写成程序,学生练习自己编。例二:超市购物:假设超市购物不超过 100 元时按九折付款,如超过 100 元,则超过部分按七折收费。编程帮助超市完成这一转化工作。VAR W,X:REAL ;BEGINREADLN(W);IF WB 则交换 A,B 。IF AB THEN T:=B ;B:=A;A :=T ;对吗?上机测试!结论: 在条件成立的情况下应该做一件事(3 条语句),而现在只做了 1 个语句。怎么办?六、 复合语句:BEGIN
6、语句组 END;例三应改为 IF AB THEN BEGINT:=B ;B:=A ;A:=T;END.例题:BeginReadln(x);If x0 then writeln(x);Writeln(x);End. BeginReadln(x);If x0 then beginwriteln(x);Writeln(x);End;End. 区别是什么?例题:BeginIf x=0 then writeln(x);If x=0 then writeln(x)else writeln(-1*x);End.上面两段代码功能上是否相同?(执行过程不一样,第一个需要判断两次,第二个只需要判断一次。功能也不一
7、样,当等于时,前者执行 2 次,后者执行一次)例四:给出三角形的三个边长 A,B,C,求三角形的面积。1、面积公式:S=(A+B+C)/2;AREA=SQRT (S*( S-A)*(S-B)*(S-C )2、构成三角形的条件:A+BC 且 A+CB 且 B+CA3、画出 N-S 流程图:4、程序:例五:从键盘输入两个数,按从小到大输出。例六:从键盘输入 3 个数,按从小到大输出。家庭作业:1、某运输公司的收费公式如下:运费=里程(公里)*货重(吨)*单价(每公里每吨运费),例外按以下方法打折:货重 W W=2 且 W=4 且 W=6距离 S=300 2% 4% 6% 8%距离 SBACBCYYNYNN交换 A,C 的值交换 B,C 的值打印 A,B,CT:=AA:=BB:=T交换 A,B 的值