switch文について学んでみよう。

てんC「if文につづいてはswitch文さんの登場です。」


ソーラー「きたきた~~~


switch 文だよ。


このswitch 文は まるでスイッチを押すように


自分の好きな命令文を選んで実行させることができるんだよ(^^)


どのようにswitch 文が記述されるか?


早速


次のプログラムをみてみよう。


switch 文は


この次のプログラムをプロトモデル(元型)として


いろいろ変形して記述することができるんだ。


#include <iostream>


using namespace std;


int main() {


int a=1;


switch (a){


case 1:

cout<<"おはようございます\n";

break;


case 2:

cout<<"こんにちは\n";

break;


case 3:

cout<<"こんばんは\n";

break;


default:


cout<<"24時間営業です\n";

break;

}


return 0;

}


コンパイル結果


おはようございます


ソーラー「このプログラムでは


int a=1;


により


変数aが生成され1によって初期化されています


そうなると


switch (a)のaに1が代入されることになります


switch (a)の変数aに代入される値を1とすることで


cout<<"おはようございます\n";


の命令文を選んで実行させることができます


その結果


コマンドプロンプト画面に


おはようございます


が表示されています」



マックス 「switch 文か・・・なんか整った感じのプログラムだな。」


ソーラー


「このswitch 文のプログラムはいじりがいがあるんだ。


ミニ4駆と同じで


自分流にカスタマイズできるからね。


まあ、まずはみるところは


恒例の


このswitch 文のプログラムでもやはり一番最後は


return 0;


}


となってるね。


お次は


case 1:


case 2:


case 3:


default:


の記述において;(セミコロン)でなく:(コロン)


となっているところがポイントかな。


ここがまちがえやすい・・・?


どうかな?


そんなことはない(^^)・・・?


break;


については すぐに意味をみていくよ。


この


switch文のプログラムは


int a;


で作製された変数aに


1

2

3


いずれかの数値データを格納すると



switch(a)の変数aに代入された数値データ


1


2


3


に対応して


case 1:


case 2:


case 3:



後に続く


いずれかの命令文が実行される


という仕組みになっているんだ(^^)/


とっても便利~~~


だから


このswitch文をつかえば


いくつか命令文を用意しておいて


まるでスイッチを押すように


実行したい命令文だけを実行することができるんだよ。



この今のswitch文プログラムを例にすると


case 1:と番号をつけられた命令文を実行したければ


switch(1)と


switch(a)の()の中の


変数aに1を格納するだけでピンポイントに


case 1:


と番号をつけられた命令文が実行できるんだよおおおおおぉぉぉぉぉ~~んんん


では


case 2:


と番号をつけられた命令文を実行したいときは・・・


次のプログラムのように


int aに a=2を代入すると


switch(a)



switch(2)


となり→」


#include <iostream>


using namespace std;


int main() {


int a=2;


switch(a){


case 1:


cout<<"おはようございます\n";


break;


case 2:


cout<<"こんにちは\n";


break;


case 3:


cout<<"こんばんは\n";


break;


default:


cout<<"24時間営業です\n";


break;


}


return 0;

}


ソーラー「→


case 2:


のあとにつづく命令文が実行され


コンパイル結果は


こんにちは


となります。」


マックス 「こんのぉ~


default:


ってなにかいの~~」



ソーラー 「この


default:


というのは


このプログラムを例に取ると


int aのaに代入された数値データが


case 1:


case 2:


case 3:


に対応する


1,2,3のいずれの数値データでもない場合


default:の次に記述された命令文を実行する


というシステムになっているんだ。


だから


int a=5;とした次のプログラム→」


#include <iostream>


using namespace std;


int main() {


int a=5;


switch (a){


case 1:

cout<<"おはようございます\n";

break;


case 2:

cout<<"こんにちは\n";

break;


case 3:

cout<<"こんばんは\n";

break;


default:

cout<<"24時間営業です\n";

break;


}


return 0;

}



ソーラー「→


では


switch(5)


となるので


case 1:


case 2:


case 3:


に対応する命令文は実行されないので


default:

につづく命令文


printf("24時間営業です\n");


が実行され


コンパイル結果は


24時間営業です


となるんだね。」


マックス 「なるほどぉ~ if else文の elseみたいだなぁ


ソーラーよ。」


ソーラー


「そ~うぅなんでぇえ~~~すぅぅ。


さあ、それではっ


お次は このプログラムの中のbreak文


break;


についてみていこう。


break;


の仕組みがよくわかる方法があるんだ


次のプログラムのように→」


#include <stdio.h>


int main(void){


int a=1;


switch (a){


case 1:

cout<<"おはようございます\n";


case 2:

cout<<"こんにちは\n";


case 3:

cout<<"こんばんは\n";


default:

cout<<"24時間営業です\n";


}


return 0;

}



ソーラー「→



break;



を全部とりのぞいたらどうなるかな?」




マックス 「なはは switch文は


なかなか カスタマイズし甲斐があるじゃないか」


ソーラー


「int a=1;


と変数aを1で初期化すると


switch (1)


となり


最初の


case 1:

cout<<"おはようございます\n";


が実行されるよね。


マックス 「まあ、普通かな?」




ソーラー


「ところが


break;


がないと


次の命令文


case 2:

cout<<"こんにちは\n";


さらにその次の命令文


case 3:

cout<<"こんばんは\n";


さらにその次の命令文


default:

cout<<"24時間営業です\n";


まで


一気に全部実行されちゃうんだよ。


ですので


今のプログラムの


ビルド実行結果は


おはようございます

こんにちは

こんばんは

24時間営業です


となります。


int a=2;



変数aに2 を格納する


プログラムに変更すれば→」


#include <iostream>


using namespace std;


int main() {


int a=2;


switch (a){


case 1:

cout<<"おはようございます\n";


case 2:

cout<<"こんにちは\n";


case 3:

cout<<"こんばんは\n";


default:

cout<<"24時間営業です\n";


}


return 0;

}


ソーラー「→


最初の命令文


case 1:

cout<<"おはようございます\n");


は実行されず



それ以下の命令文


case 2:

printf("こんにちは\n");


case 3:

printf("こんばんは\n");


default:

printf("24時間営業です\n");


が実行され


ビルド実行結果は


こんにちは

こんばんは

24時間営業です


になるんだよ。」




マックス 「break文


break;


で実行したい命令文だけを


実行させる仕組みとなっているのか・・・」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る