case statement
优质
小牛编辑
131浏览
2023-12-01
您已经观察到if-then-else语句使我们能够在程序中实现多个决策。 这也可以使用case语句以更简单的方式实现。
语法 (Syntax)
case语句的语法是 -
case (expression) of
L1 : S1;
L2: S2;
...
...
Ln: Sn;
end;
其中, L1 , L2 ...是大小写标签或输入值,可以是整数,字符,布尔值或枚举数据项。 S1 , S2 ,...是Pascal语句,这些语句中的每一个都可能有一个或多个与之关联的案例标签。 表达式称为case selector或case index 。 案例索引可以采用与案例标签相对应的值。
case语句必须始终具有与之关联的end语句。
以下规则适用于案例陈述 -
case语句中使用的表达式必须具有整数或枚举类型,或者是类类型,其中类具有单个转换函数为整数或枚举类型。
您可以在案例中包含任意数量的案例陈述。 每个案例后跟要与之比较的值和冒号。
案例的案例标签必须与案例陈述中的表达式具有相同的数据类型,并且必须是常量或文字。
编译器将评估case表达式。 如果case标签的值之一与表达式的值匹配,则执行此标签后面的语句。 之后,程序在最终结束后继续。
如果case标签都不匹配表达式值,则执行else或otherwise关键字之后的语句列表。 这可以是一个空的语句列表。 如果没有其他部分存在且没有case常量与表达式值匹配,则程序流程在最终结束后继续。
case语句可以是复合语句(即Begin ... End块)。
流程图 (Flow Diagram)
例子 (Example)
以下示例说明了这一概念 -
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