第四课基本语句(二)§4.1IF语句If语句是一种分支结构,当条件成立时,执行A,否则执行B。1.IF-THEN形式IF<条件>THEN<语句>当IF后面的条件为真时,执行THEN后面的语句;当条件为假时,不执行THEN后面的语句,而顺序执行下一条语句。THEN后面的语句若多于一条,必须使用复合语句处理(用begin和end括起)。【例】:输入a,b,c三个数,打印出最大者。按Ctrl+F9,执行后:Pleaseenterthreenumber:457856{输入后按回车}按Alt+F5查看输出:Themaxnumis:78.000流程图表示:N-S图表示:ABA条件B是否是否条件programfindmax;vara,b,c,max:real;beginwrite(‘Pleaseenterthreenumber:’);readln(a,b,c);ifa>bthenmax:=a{设a为最大}elsemax:=b;ifc>maxthenmax:=c;{比较之后保留最大数}max:10:3是表示在10格的区域内靠右输出max的值,并保留3位小数点x、y、result是实型变量;2.IF-THEN-ELSE形式IF<条件>THEN<语句1>ELSE<语句2>当条件为真时,执行THEN后面的语句1;当条件为假时,执行ELSE后面的语句2。【例】输入一个实数,若是负数输出x<0,若为正数输出x>0,否则输出x=0。programsample;varx:real;beginwrite(‘x=’);readln(x);ifx<0thenwriteln(‘x<0’)elseifx>0thenwriteln(‘x>0’)elsewrite(‘x=0’);end.显然IF-THEN语句是IF-THEN-ELSE语句的特殊情况。在这个例题中,还出现了IF-THEN-ELSE嵌套语句,在这种情况下,ELSE到底与哪一个THEN配对呢?Pascal语言中规定ELSE总是与最接近的一个还没配对的THEN配对。因此,当使用时与这个规定有冲突的话,可以用begin和end括起来。★常见错误:1.在THEN和ELSE之间多加了一个分号,例如把语句:ifx>5theny:=3*x+5elsey:=2*x+3;错写成:ifx>5theny:=3*x+5;elsey:=2*x+3;因为加了分号以后,IF语句已经结束,而ELSE又不能作为另一个语句的开头,造成语法错误。2.另一个常见错误是在THEN或ELSE包括几个语句时,未加begin与end构成复合语句的形式,例如把语句ifx>0thenbeginy:=sqrt(1+x*x);z:=sin(2*x);end;它们的效果是不同的。前者当x>0时,要执行两个语句,计算y和z;当x≤0时,什么都不执行。后者当x>0时,执行计算y的语句;当x≤0时,不执行计算y的语句,当是无论x为何值,均要执行计算z的语句。§4.2CASE语句这种语句是一种派生的多分支结构,适用于不同情况不同处理的多择一的情况CASE<表达式>OF<情况标号1>:<语句1>;<情况标号2>:<语句2>;┇┇<情况标号n-1>:<语句n-1>;[ELSE<语句n>];{[]括起来表示可选项}END;其流程图如图所示:N-S图表示:表达式情况标号1情况标号2情况标号3……else下一条语句语句n-1表达式=情况标号语句1语句2语句n标号1标号2标号n-1elsetrue……错写成:ifx>0theny:=sqrt(1+x*x);z:=sin(2*x);语句1语句2语句3……语句n其中表达式的值必须是整型、字符型、布尔型及后面将介绍的枚举型和子界型,它的类型必须与情况标号的类型一致。情况标号表是一串用逗号隔开的常量。当表达式的值等于某个情况标号时,就执行该情况标号后面所对应的语句;若表达式的值不等于任何一个情况标号,就执行ELSE语句,若没有ELSE语句就执行CASE语句的下一条语句。★常见错误:1、情况标号写成逻辑判断式:casexofx<10:……x>20:…………2、缺了与case对应的end;【例】读下面的程序,试着理解程序。programcalculator;varx,y,result:real;oper:char;beginwrite(‘Inputx,y,oper:’);readln(x,y);write(‘Input+or–or*or/:’);readln(oper);caseoperof‘+’:result:=x+y;‘-’:result:=x-y;‘*’:result:=x*y;读入一个字符+、-、*、/根据oper的不同,对x和y进行不同的运算oper是字符型变量这是一个能对2个数进行加减乘除运算的程序,先输入2个数x和y,再输入一个运算符号,程序将根据输入运算符的不同,对x和y进行相应的运算,最后输出运算结果。按Ctrl+F9,执行后:Inputx,y,oper:153{输入后按回车}Input+or–or*or/:+{输入后按回车}按Alt+F5查看输出:15.00+3.00=18.00再按一次Ctrl+F9,执行后:Inputx,y,oper:153{输入后按回车}Input+or–...