No.13 条件分岐(3)
今回は、C言語の条件分岐(switch文)について解説します。
前回の記事をまだ見ていない方は、下記のリンクからぜひ見てください。
前回の記事を見てからこの記事を見ると理解しやすいです。↓
また、わからない点があればぜひコメントお願いします。
わかりやすいように更新させていただきます。
switch文とは
switch文は、複数の条件に基づいて異なるプログラムを実行するときに使います。
しかし、No.11で解説した if文でいいのではと考える方もいるはずです。
switch文は if文とは違い、条件分岐が多数必要なときに適しています。
switch文の書き方
ここからは、switch文の書き方について解説していきます。
switch文は下記のように書きます。↓
switch (条件分岐が必要な変数や式){
case 任意の値1:
条件分岐が必要な変数や式が任意の値1と一致した場合に実行するプログラム
case 任意の値2:
条件分岐が必要な変数や式が任意の値2と一致した場合に実行するプログラム
}
case が含まれた行の行末には : を書く必要があります。
また、if文と同様 { 、} が含まれる行には ; を付ける必要はありません。
breakについて
switch文では、case の任意の値が一致しプログラムを実行した後にも他の case と比較し続けます。
そのため、switch文が終わるのに時間がかかります。
そこで break を使います。
break を書くことで switch文を終了できます。↓
switch (条件分岐が必要な変数や式){
case 任意の値1:
条件分岐が必要な変数や式が任意の値1と一致した場合に実行するプログラム
break //ここで switch文を抜けます
case 任意の値2:
条件分岐が必要な変数や式が任意の値2と一致した場合に実行するプログラム
break //ここで switch文を抜けます
}
defaultについて
switch文のどの case とも一致しなかった場合の処理を書くのに default を使います。↓
switch (条件分岐が必要な変数や式){
case 任意の値1:
条件分岐が必要な変数や式が任意の値1と一致した場合に実行するプログラム
break //ここで switch文を抜けます
case 任意の値2:
条件分岐が必要な変数や式が任意の値2と一致した場合に実行するプログラム
break //ここで switch文を抜けます
default :
どの case にも一致しない場合に実行するプログラム
break //ここで switch文を抜けます
}
switch文の例
#include <stdio.h>
int main() {
int day = 3; // 条件分岐が必要な変数を設定
switch (day) {
case 0:
printf("日曜日\n");
break;
case 1:
printf("月曜日\n");
break;
case 2:
printf("火曜日\n");
break;
case 3:
printf("水曜日\n");
break;
case 4:
printf("木曜日\n");
break;
case 5:
printf("金曜日\n");
break;
case 6:
printf("土曜日\n");
break;
default:
printf("無効な日付です\n");
break;
}
return 0;
}
このプログラムでは、day変数の値に応じて対応する曜日を表示します。
例えば、dayが3の場合、「水曜日」と表示されます。
複数のcaseで同じ処理を実行する
switch文では複数の case で同じ処理を実行できます。
複数の caseで同じ処理を実行するには、それぞれのcaseを順に記述し、最後の case に対応する処理を記述します。↓
#include <stdio.h>
int main() {
int day = 5;
switch (day) {
case 0:
case 6:
printf("週末です。\n");
break;
case 1:
case 2:
case 3:
case 4:
case 5:
printf("平日です。\n");
break;
default:
printf("無効な日付です。\n");
break;
}
return 0;
}
このプログラムは、変数dayの値に基づいて「週末」または「平日」と表示するものです。
問題
月の番号(1から12の間)をあらかじめ定義して、その月がどの季節に属するかを表示するプログラムを作成してください。
回答例
#include <stdio.h>
int main() {
int month = 5; // ここで月の番号を任意に設定
switch (month) {
case 12:
case 1:
case 2:
printf("冬です。\n");
break;
case 3:
case 4:
case 5:
printf("春です。\n");
break;
case 6:
case 7:
case 8:
printf("夏です。\n");
break;
case 9:
case 10:
case 11:
printf("秋です。\n");
break;
default:
printf("無効な月です。\n");
break;
}
return 0;
}
説明:
事前に定義された値: 変数 month に任意の月の番号を設定します。この例では、5を設定しています。
switch文 : monthの値に基づいて条件分岐を行います。
case : 各季節に属する月をまとめて判定し、対応する季節を表示します。
default : 無効な月の番号が設定されている場合にエラーメッセージを表示します。