switch 文のプログラムをif else文のプログラムで書き表してみましょう
switch 文のプログラムをif else文のプログラムで書き表してみましょう
ソーラー 「興にのってきたあ~~~
この調子でswitch 文をif else文で書き表してみる.
まずは以下のような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");
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:の後に続く
break;の前までの命令文が実行されます
数値3を打ち込めば
case 3:の後に続く
break;の前までの命令文だけが実行されます)
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の動画を作って再生させ続けるぜぃ」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます