次のコードをHelloPascal4のウィンドウに貼り付けて、プルダウンメニューの操作から実行して見ましょう。
program rei070(input,output);
var tensu:0..10;
begin
readln(tensu);
case tensu of
0..4:writeln('d');
5:writeln('c');
6..7:writeln('b');
8..10:writeln('a')
end
end.
※見慣れない変数の宣言があります。
var tensu:0..10;
この宣言の方法では変数tensuuは部分範囲型と言う型になります。上記の例では0~10の整数の値を取りうる型の変数として宣言しています。
変数名に続けて「:最小値..最大値;」とする事でこのような変数を宣言できます。※
case tensu of
0..4:writeln('d');
5:writeln('c');
6..7:writeln('b');
8..10:writeln('a')
end
ではそれぞれのtensuに格納された値に応じた評価をa,b,c,dで表示しています。
0..4のような:以前の部分をselectorと言います。
複数行に渡る処理が必要な場合は次のようにbegin~end;を使用します。
program rei070a(input,output);
var tensu:0..10;
begin
readln(tensu);
case tensu of
0..4:begin
writeln('d');
writeln('NG')
end;
5:writeln('c');
6..7:writeln('b');
8..10:writeln('a')
end
end.
上記の例ではof以降に列挙したパターンに漏れが無い事が明らか(変数の型を部分範囲型にしているため、case文には0~10以外の値が渡される余地が無い)ですが、実数や入力された文字列をcaseのselectorとして使う場合は漏れが無いように、十分検討してください。
※経験者向けコメント:教育用言語である標準Pascalでは本来はcase文にelseは使えません(実際の処理系では使える物が多いですが・・・)。