Pascal - case 语句
您已经观察到 if-then-else 语句使我们能够在程序中实现多个决策。 这也可以通过使用 case 语句以更简单的方式来实现。
语法
case 语句的语法是 −
case (expression) of L1 : S1; L2: S2; ... ... Ln: Sn; end;
其中,L1、L2...是大小写标签或输入值,可以是整数、字符、布尔值或枚举数据项。 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 块)。
流程图
示例
下面的例子说明了这个概念 −
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