今回の目的
switch 文を理解し、if, switch 文の相互変換ができるようにすることが目的です。
switch 文とは
前回やった if 文と同様、分岐を実現するための構造です。
switch 文を使うと、ある特定の if 文を、より効率的に (早く) 動作させることができます。
C言語では、if 文を使えば、すべての条件分岐を実現することができます。
そのため、switch 文でかけるものは、すべて if 文でも記述できます。
switch 文の例
次のような if 文があったとします。
if(a == 0){
printf("zero\n");
}
else if(a == 1){
printf("one\n");
}
else if(a == 2){
printf("two\n");
}
else {
printf("other\n");
}
この if 文は、次のような switch 文に置き換えができます。
switch(a){
case 0:
printf("zero\n");
break;
case 1:
printf("one\n");
break;
case 2:
printf("two\n");
break;
default:
printf("other\n");
}
switch 文に置き換えができる if 文の条件は以下のとおりです。
- 同じ変数に対し == で比較している
- 複数の条件をでない (&& とかを使っていない)
条件を満たしたときに、switch 文に置き換えると次のようなメリットがあります。
- 高速に動作する
- 比較する値 (上の例では a) の書き換えが簡単
- ミスが少なくなる (== を = と書いたり、条件を間違えたりすることが無い)
一方、次のようなデメリットがあります。
- 記述が長くなる
if 文を使用するか、switch 文を使用するかは、個人の好みによるものが大きいです。
無理して switch 文を使用する必要はありません。
しかし、C言語やJavaをはじめとした多くの言語で利用できることから分かる通り、
場所を選んで使えば便利なものです。
最低限、人の書いたソースコードを読める程度には理解しましょう。
switch 文の形式
switch 文は次のような形式をしています。
switch(比較する値){
case 値1:
値1の場合の処理;
break;
case 値2:
値2の場合の処理;
break;
default:
どの値でもない場合の処理;
}
break はこの switch 文を抜けろという意味です。
これを書かない場合、下に続く文が全て実行されてしまいます。
default に関しては、必要がない場合は記述しなくても問題ありません。
課題
課題1
標準入力から整数を1つ読み込み、数値に応じて
- 0 の場合は F
- 1 の場合は C
- 2 の場合は B
- 3 の場合は A
- 4 の場合は AA
と表示しなさい。
if 文は使用しないこと。
課題2
条件分岐 ifの課題1を、switch 文を使って書き直しなさい。