信息学奥赛第四讲:选择结构程序设计

来源:百度文库 编辑:神马文学网 时间:2024/04/30 03:25:06

信息学奥赛第四讲:选择结构程序设计

4.1  IF 语句

     IF语句是由一个布尔表达式和两个供选择的操作序列组成。运行时根据布尔表达式求值结果,选取其中之一的操作序列执行。有两种形式的IF语句:

    类型一: if <布尔表达式> then <语句>;

     类型二: if <布尔表达式> then <语句1>

       else <语句2>;

  当布尔表达式的值为真,则执行then后面的语句,值为假时有两种情况:要么什么也不做,要么执行else后面的语句。注意else前面没有分号 ,因为分号是两个语句之间的分隔符,而else并非语句。如果在该处添了分号,则在编译的时候就会认为if 语句到此结束,而把else当作另一句的开头,输出出错信息。

例:根据学生的成绩给予相应的等 级 ,对应关系如下:

  90——100 A

  80——89  B

  60——79  C 

  60以下    D

Program Score;

Var

S:real;

Ch:char;

Begin

   Writeln( ‘ Please input Score: ’ );

   Readln(s);

   If (s>90) and (s<100) then ch:= ’ A ’ ;

   If (s>80) and (s<89) then ch:= ’ B ’ ;

   If (s>60) and (s<79) then ch:= ’ C ’ ;

   If s<60 then ch:= ’ D ’ ;

   Writeln(s, ’—‘ ,ch);

   Readln;

End;

  在Pascal语言if语句中被构造的语句只能是一条语句,当条件选择某个分支的计算要用多个语句描述时,就必须把该分支用begin和 end括来,写成复合语句。在用if语句连续嵌套时,如果你插入适量的复合语句,有利于程序的阅读和理解。 

例:当x>0时候,计算x*x,并且输出x和x*x,

 program lianxie3;

  var x,x1:real;

 begin

 readln('x=',x);

 if x>= 0  then 

  begin

   x1:=x*x;

   writeln('x*x=',x1);

   writeln('x=',x);

  end;

 end.

   当if 语句嵌套时,Pascal约定else总是和最近的一个if配对。 

4.2 case语句

  case语句是由一个表达式和众多可选择的操作序列组成。运行时,根据表达式的求值结果,在众多的分支中选取一个分支执行。其形式为:

    case 表达式 of

     常量1:语句1;

     常量2:语句2;

     ……

     常量n:语句n;

     else 语句 n+1 {可选项}

    end;

  表达式只能是顺序类型(除了实型以外的简单类型),其值必须是唯一确定并且和 常量类型相同。case语句执行和表达式值相匹配的case常数所指向的那条语句,如果没有相匹配的值,则执行else部分(如果有的话)或者什么也不做。在else前面的语句末尾有分号,这是和if语句不同的。

例:根据学生的成绩给予相应的等 级 ,对应关系如下:

  90——100 A

  80——89  B

  60——79  C 

  60以下    D

 program chengji;

  var s:real;ch:char;

 begin

  write(' Please  input the score: ');

  readln(s);

  if(s>=0)and(s<=100)then

   case s div 10 of

    10,9:ch:=' A ';

    8:ch:='B';

    7,6:='C';

    else ch:='D';

   end;

  writeln(s,'--',ch);

 end. 

练习:某幼儿园只收2至6岁的小孩,2~3岁入小班,4岁入中班,5~6岁入大班。编写程序输入姓名和年龄,判断小孩入哪个班?并按"姓名年龄 班级"的格式输出。