Pascal 流程控制

  • 决策

    决策结构要求程序员指定一个或多个要由程序评估或测试的条件,以及确定条件为真的情况下要执行的一条或多条语句,以及如果条件被确定为可选的其他执行语句确定为假。以下是大多数编程语言中常见的典型决策结构的一般形式-
    c decision_making
    Pascal编程语言提供以下类型的决策声明。单击以下链接以查看其详细信息。
    声明 描述
    if - then 语句 if-then语句由布尔表达式和一个或多个语句组成。
    If-then-else 语句 if-then语句后可以跟可选的else语句,该语句在布尔表达式为false时执行。
    嵌套 if 语句 您可以在另一个if or else if语句中使用一个if or else if语句。
    case 语句 case语句允许针对值列表对变量进行相等性测试。
    case - else 语句 它类似于if-then-else语句。 在此,case语句后面还有一个else术语。
    嵌套 case 语句 您可以在另一个case语句中使用一个case语句。
    范例 - if - then声明
    condition1
    
    program ifChecking;
    
    var
    { local variable declaration }
       a:integer;
    
    begin
       a:= 10;
       (* check the boolean condition using if statement *)
       
       if( a < 20 ) then
          (* if condition is true then print the following *) 
          writeln('a is less than 20 ' );
       writeln('value of a is : ', a);
    end.
    
    尝试一下
    范例 - if..then..else声明
    condition1
    
    program ifelse_ifelseChecking;
    var
       { local variable definition }
       a : integer;
    
    begin
       a := 100;
       (* check the boolean condition *)
       if (a = 10)  then
          (* if condition is true then print the following *)
          writeln('Value of a is 10' )
       
       else if ( a = 20 ) then
          (* if else if condition is true *)
          writeln('Value of a is 20' )
       
       else if( a = 30 ) then 
          (* if else if condition is true  *)
          writeln('Value of a is 30' )
       
       else
          (* if none of the conditions is true *)
          writeln('None of the values is matching' );
          writeln('Exact value of a is: ', a );
    end.
    
    尝试一下
    范例 - 嵌套if语句
    
    program nested_ifelseChecking;
    var
       { local variable definition }
       a, b : integer;
    
    begin
       a := 100;
       b:= 200;
       
       (* check the boolean condition *)
       if (a = 100) then
          (* if condition is true then check the following *)
          if ( b = 200 ) then
             (* if nested if condition is true  then print the following *)
             writeln('Value of a is 100 and value of b is 200' );
       
       writeln('Exact value of a is: ', a );
       writeln('Exact value of b is: ', b );
    end.
    
    尝试一下
    范例 - case语句
    condition1
    以下规则适用于switch语句
    • case语句中使用的表达式必须具有整数或枚举类型,或者是类类型,其中该类具有到整数或枚举类型的单个转换函数。
    • 一个case语句中可以有任意数量的case语句。每个case后面都跟要比较的值和一个冒号。
    • case的case标签必须与case语句中的表达式具有相同的数据类型,并且必须是常量或字面量。
    • 编译器将计算大小写表达式。如果case标签的值之一与表达式的值匹配,则执行该标签后的语句。之后,程序将在最后end处继续。
    • 如果所有case标签都不匹配表达式值,则执行else或else关键字之后的语句列表。这可以是一个空的语句列表。如果没有其他部分,并且没有大小写常量与表达式值匹配,则程序流程将在end结束之后继续。
    • case语句可以是复合语句(即Begin ... End块)。
    
    program checkCase;
    var
       grade: char;
    begin
       grade := 'A';
    
       case (grade) of
          'A' : writeln('Excellent!' );
          'B', 'C': writeln('Well done' );
          'D' : writeln('You passed' );
          'F' : writeln('Better try again' );
       end;     
       
       writeln('Your grade is  ', grade );
    end.
    
    尝试一下
    
    program checkCase;
    var
       grade: char;
    
    begin
       grade := 'F';
       case (grade) of
          'A' : writeln('Excellent!' );
          'B', 'C': writeln('Well done' );
          'D' : writeln('You passed' );
    
       else
          writeln('You really did not study right!' );
        end;     
       
       writeln('Your grade is  ', grade );
    end.
    
    尝试一下
    范例 - 嵌套的case语句
    
    program checknestedCase;
    var
       a, b: integer;
    begin
       a := 100;
       b := 200;
       
       case (a) of
          100: begin
             writeln('This  is part of outer statement' );
             case (b) of
                200: writeln('This  is part of inner statement' );
                end;
             end; 
          end;
       
       writeln('Exact value of a is : ', a );
       writeln('Exact value of b is : ', b );
    end.
    
    尝试一下