Pascal入門‎ > ‎

070_条件分岐-case

次のコードを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は使えません(実際の処理系では使える物が多いですが・・・)。