Pascal - case 语句

您已经观察到 if-then-else 语句使我们能够在程序中实现多个决策。 这也可以通过使用 case 语句以更简单的方式来实现。

语法

case 语句的语法是 −

case (expression) of
   L1 : S1;
   L2: S2;
   ...
   ...
   Ln: Sn;
end;

其中,L1L2...是大小写标签或输入值,可以是整数、字符、布尔值或枚举数据项。 S1, S2, ... 是 Pascal 语句,这些语句中的每一个都可能有一个或多个与其关联的 case 标签。 该表达式称为case 选择器case 索引。 ccase 索引可以采用与 case 标签相对应的值。

case 语句必须始终有一个与其关联的 end 语句。

下列规则适用于 case 语句 −

  • case 语句中使用的表达式必须具有整型或枚举类型,或者属于类类型,其中该类具有到整型或枚举类型的单个转换函数。

  • 一个 case 中可以有任意数量的 case 语句。 每个 case 后面都跟有要比较的值和冒号。

  • case 的 case 标签必须与 case 语句中的表达式具有相同的数据类型,并且必须是常量或文字。

  • 编译器将计算 case 表达式。 如果 case 标签的值之一与表达式的值匹配,则执行该标签后面的语句。之后,程序在最后的 end 之后继续进行。

  • 如果没有一个 case 标签与表达式值匹配,则执行 else 或 other 关键字后面的语句列表。 这可以是一个空的语句列表。 如果不存在 else 部分并且没有 case 常量与表达式值匹配,则程序流程在最终结束后继续。

  • case 语句可以是复合语句(即 Begin ... End 块)。

流程图

Pascal 中的 case 语句

示例

下面的例子说明了这个概念 −

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.

当上面的代码被编译并执行时,会产生以下结果 −

Excellent!
Your grade is A

❮ pascal_decision_making.html