if 文は、
に応じて、プログラムの流れを2つに分岐させるものでした。
プログラムの流れを3つ以上に分けなければならないときは、【基礎課題 4-6】のように、if 文の中にさらに if 文を書かなければなりません。その結果、プログラムの構造が複雑になってしまいました。
そこで、プログラムの流れを3つ以上に分ける場合に使うと便利な、case 文の使い方を説明します。
【基礎課題 4-6】は、case 文を使うと次のように書くことができます。
この命令は、下のような構造になっています。
case 変数名 of 変数の値の範囲 begin 変数の値がその範囲にあるときの処理1; 変数の値がその範囲にあるときの処理2; 変数の値がその範囲にあるときの処理3; ・ ・ ・ end; 変数の値の範囲 begin 変数の値がその範囲にあるときの処理1; 変数の値がその範囲にあるときの処理2; 変数の値がその範囲にあるときの処理3; ・ ・ ・ end; 変数の値の範囲 begin 変数の値がその範囲にあるときの処理1; 変数の値がその範囲にあるときの処理2; 変数の値がその範囲にあるときの処理3; ・ ・ ・ end; ・ ・ ・ end;
case の後にくる変数は、これまでに学んだ型のなかでは、Integer 型のみが許されます。値の「順序」がはっきりした変数でなければならないからです。
範囲を表すには、「6..8」のように、最小の値を先に、最大の値を後に書いて、間にピリオド「.」を2つ書きます。
範囲は上下の値が決まっていなければならないので、例えば「6以上」のような範囲の指定はできません。
変数の値の範囲は、コンピュータの能力の許す限りいくつでも書くことができます。
範囲はきちんと分類して、重複がないようにしなければなりません。
変数の値がある範囲のときの処理する命令が1つしかないときは、if 文の時と同じように、begin と end; を省略することができます。しかし、省略しなくてもエラーがでるわけではないので、残しておく方がよいでしょう。
【基礎課題 4-6】を、case 文を使って作り直してください。
【基礎課題 4-7】を、case 文を使って作り直してください。
case 文には、else を使った特殊な例があります。一番下の「変数の値の範囲」を else と書いて、「今までに指定した範囲以外」という意味を表すことができます。
「診断」ボタンを押したときの処理
case 変数名 of 変数の値の範囲 begin 変数の値がその範囲にあるときの処理1; 変数の値がその範囲にあるときの処理2; ・ ・ end; 変数の値の範囲 begin 変数の値がその範囲にあるときの処理1; 変数の値がその範囲にあるときの処理2; ・ ・ end; 変数の値の範囲 begin 変数の値がその範囲にあるときの処理1; 変数の値がその範囲にあるときの処理2; ・ ・ end; ・ ・ else begin 変数の値が今までのどの範囲にもないときの処理1; 変数の値が今までのどの範囲にもないときの処理2; ・ ・ end; end; (← case 文の終わりを表す)
年齢を入力してからボタンを押すと、次の料金表にしたがって入場料金を表示するプログラムを、else をともなった case 文を利用して作って下さい。
年齢 | 入場料金 |
---|---|
6歳以上12歳以下 | 500円 |
13歳以上65歳以下 | 1000円 |
それ以外(5歳以下または66歳以上) | 無料 |