Macintosh (OS 10.15 Catalina)でC言語をプログラミングする方法を解説していきます。
この記事の対象者
前回はwhile ループ(do-while)について解説しました。今回は switch文について解説していきます。これで最終回なので頑張っていきましょう!
前回の記事はこちら↓
switch
if文と似ていて、条件分岐の時に使う命令文です。(任天堂のゲーム機ではないです笑)
書き方は以下の通りです。
switch(条件){
case 判定値:
処理;
break;
default:
処理;
}
条件の箇所は、True / False が返るような式を書いて if と同様に使うことも可能ですが、switch の場合は、この条件の箇所には返却値が複数パターン(3つ以上)あるような式を書くことがほとんどです。
返却値が複数といきなり言われても難しいと思うので、例を示します。
例1(返却値が True / False のパターン)
この場合、"number"がゼロか否かでしかないので、ゼロの場合は True、それ以外の場合は False となります。
例2(返却値が複数パターンある)
この場合、"number"を4で割った時の余りが返却値として扱われるので、パターンとしては、0、1、2、3の4パターンあります。
switch は上の例2のような場合に用いられ、式の返却値に応じて処理を分岐していきます。
実際の使われ方のイメージとしては、例えばとあるWebサイトでユーザーがページの背景色を好きな色に変更できる場合に、その背景色に応じた文字色を自動でセットする時に switch が使えます。
背景色が黒の時には文字色を白、背景色が白の場合には文字色を黒、背景色が水色の場合には文字色を濃い青にする、などの条件分岐です。
OR条件も設定可能
case には break が必須のように記載していましたが、1つの case に対して1つの break が必ずしも必要という訳ではありません。この break を記載しない場合は次の case に書かれた処理を実行する動きになります。
具体的なコードを例にして説明します。
処理1;
case 2:
処理2;
break;
case 2 に該当した場合は処理2を行って break して switch の処理を終了します。ここまでは大丈夫だと思います。
case 1 に該当した場合、処理1を行い、break がないので次に処理が書かれている case 2 の中の処理2を実行します。そして break があるので、ここで switch を終了します。
つまり、switch の条件式の返却値が 1 or 2 の場合に処理2を行う、ということが共通してます。処理1の箇所の記述は必須ではないので、以下のように 1 or 2 の場合に処理2を行う命令文としての記載も可能なんです。
case 2:
処理2;
break;
課題
swtich を用いた簡単なコードを作成してみました。
int main(void)
{
int number;
printf("1-3のうち好きな数字を入力してください:");
scanf("%d",&number);
printf("入力された数は英語で、");
switch(number)
{
case 1:
printf("one");
break;
case 2:
printf("two");
break;
case 3:
printf("three");
break;
default:
printf("辞書に登録されていないので英訳できません。\r\n");
}
printf("です。\r\n");
return 0;
}
このコードでは、1〜3が入力された場合の処理としては、出力内容は日本語的に違和感のないものになっていますが、それ以外の値(例えば4など)が入力されると、「入力された数は英語で、辞書に登録されていないので英訳できません。です。」という出力になります。日本語としてよくわからないですよね。
そこで、今までのレッスン内容を駆使してコードを修正し、日本語として内容がおかしくないような処理にしてみてください。ただし、既に書かれている switch は削除せず、そのまま残してください(switch の中にコードを追加するのは大丈夫です)。
全てのレッスンを読んでいただいた方なら簡単に出来てしまうはずです!!