switch 文のプログラムをif else文のプログラムで書き表してみましょう 

ソーラー 「興にのってきたあ~~~


この調子でswitch 文をif else文で表してみる.


#pragma warning(disable: 4996)

#include <stdio.h>

int main(void){


int a;


scanf("%d",&a);


switch (a){


case 1:

printf("おはようございます\n");

break;

case 2:

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

break;

case 3:

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

break;

default:

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

break;

}

return 0;

}


このswitch 文を


数値1を代入すると

おはようございます

を表示し

そう(数値1)でなければ

数値2を代入すると

こんにちは

を表示し

そう(数値1、数値2)でなければ

数値3を代入すると

こんばんは

を表示し

そう(数値1、数値2、数値3)でなければ

24時間営業です

を表示する

という流れで


if else文で表現することにすると・・・


#pragma warning(disable: 4996)

#include <stdio.h>

int main(void){


int a;


scanf("%d",&a);


if(a==1) printf("おはようございます\n");

else if(a==2) printf("こんにちは\n");

else if(a==3) printf("こんばんは\n");

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


return 0;

}


となるんだよ。


やったね switch 文をこんなに間単に


if else (if)文に変換できちゃったよ。」


マックス 「やったな ソーラー」


ソーラー 「意外と簡単に変換できたね。


switch 文の一番後ろの

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


if else (if)文の一番後ろの

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


が、どの命令文も実行されないときに


実行されるという対応関係にあるね。


switch 文がピンポイントで命令文を実行するのに対し


if else (if)文は上から順順に命令文を実行してる。


if else (if)文はどこかで else (if)文が実行されると


それ以下の命令文は実行されないんだよね。


今のプログラムでいうと


if(a==1) printf("おはようございます\n"); が実行されると


それ以下の代わりの命令文


else if(a==2) printf("こんにちは\n");


else if(a==3) printf("こんばんは\n");

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



は実行されないんだ。


だから 次のような


switch文のプログラムの場合のように

#pragma warning(disable: 4996)

#include <stdio.h>

int main(void){


int a;

scanf("%d",&a);


switch (a){


case 1:

printf("おはようございます\n");

break;

case 2:

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


case 3:

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

break;

default:

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

break;

}

return 0;

}



case 2:の後ろの


break;が取り除かれているswitch 文のプログラムを


(このswitch 文では


数値2を打ち込めば


case 2:のあとにbreak;がないので


case 2:とcase 3:が実行されます


数値3を打ち込めば


case 3:の後に続く命令文だけが実行されます)


if else文に変換するときには


次のプログラムのように

#pragma warning(disable: 4996)

#include <stdio.h>

int main(void){


int a;

scanf("%d",&a);


if(a==1) printf("おはようございます\n");

else if(a==2) {

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

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

}

else if(a==3) printf("こんばんは\n");

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

return 0;

}


else if(a==2) { }の{ }のなかに


case 2:の後に続く命令文


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


case 3: の後に続く続く命令文


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



ひとつにまとめて記入しないといけないね。


ここらへんが


switch文とif else(if)文の違うところかな


switch文では


選んだcase :の下の break;文をとりのぞくと


その次のcase :に続く命令文も実行されるのに対し


if else(if)文では


else(if)文が実行されると


それ以下につづく代わりのelse命令文は実行されないからね。」


マックス 「すみませ~ん ここは24時間営業ですか?」


ソーラー 「24時間営業ですよ(^^)」


マックス 「この動画をみたいんですが・・・」


ソーラー 


「そ~んなときはこの break;文をとりのぞいたプログラム


#pragma warning(disable: 4996)

#include <stdio.h>

int main(void){


int a;

scanf("%d",&a);


switch (a){


case 1:

printf(" 動画1を再生する\n");

case 2:

printf(" 動画2を再生する\n");

case 3:

printf(" 動画3を再生する\n");

case 4:

printf(" 動画4を再生する\n");

case 5:

printf(" 動画5を再生する\n");

case 6:

printf(" 動画6を再生する\n");

default:

printf(" 動画7を再生する\n");

break;

}

return 0;

}

をうちこんでおけば


マックスが


case 1:

printf(" 動画1を再生する\n");


を選ぶと


自動的に次々と

case 2:

case 3:

case 4:

case 5:

case 6:

default;



につづく命令文が実行されるってわけ。



ビルド実行結果は


動画1を再生する

動画2を再生する

動画3を再生する

動画4を再生する

動画5を再生する

動画6を再生する

動画7を再生する


となるね。


break;


どのcase:


につづく命令文の後にも


記述されていないので


default:


につづく命令文


printf("動画7を再生する\n");


も実行されるのがポイントだね。


コマンドプロンプト画面に表示されているのは


動画1を再生する

動画2を再生する

動画3を再生する

動画4を再生する

動画5を再生する

動画6を再生する

動画7を再生する


の文字だけだけど


動画1を再生する

動画2を再生する

動画3を再生する

動画4を再生する

動画5を再生する

動画6を再生する

動画7を再生する


が実際に動画を再生させるということになっていれば


実際に


動画1を再生する

動画2を再生する

動画3を再生する

動画4を再生する

動画5を再生する

動画6を再生する

動画7を再生する


ということが行われるわけなんだ。


これはYoutubeの動画システムにつかえそうだね。」


マックス


「全話 漁とcatの動画を作って再生させ続けるぜぃ」

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

作者を応援しよう!

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

応援したユーザー

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