Post on 15-Apr-2017
C 言語入門~ 条件分岐について ~
( switch case )
2本日の目標
• 条件分岐( switch )について覚える
• if 文と switch 文を使い分けられる
switch は if の親戚
4if と switch の違い
#include <stdio.h> int main(void) { int user; scanf("%d", &user);
if (user == 0) { printf(" グーです。 \n"); } else if (user == 1) { printf(" チョキです。 \n"); } else if (user == 2) { printf(" パーです。 \n"); } else { printf(" 無効です。 \n"); }
return 0; }
#include <stdio.h> int main(void) { int user; scanf("%d", &user);
switch (user) { case 0: printf(" グーです。 \n"); break; case 1: printf(“ グーです。 \n"); break; case 2: printf(" グーです。 \n"); break; default: printf(" 無効です。 \n"); break; } return 0; }
if 文 を使った場合 switch 文 を使った場合
default は else と同義
5
#include <stdio.h> int main(void) { int res;
printf(" 整数を入力してください。 \n"); scanf("%d", &res);
switch (res) { case 1: printf("1 が入力されました。 \n"); break; case 2: printf("2 が入力されました。 \n"); break; default: printf("1 か 2 を入力してください。 \n"); break; }
return 0; }
switch 文 を使う
「やさしい C 」 p.134
入力するプログラム( Sample5.c )
break は必ず書く
6
#include <stdio.h> int main(void) { int res;
printf(" 整数を入力してください。 \n"); scanf("%d", &res);
switch (res) { case 1: printf("1 が入力されました。 \n"); case 2: printf("2 が入力されました。 \n"); default: printf("1 か 2 を入力してください。 \n"); }
return 0; }
break を書かないと…
「やさしい C 」 p.136
入力するプログラム( Sample5.c )
「 2 」を入力したときに、「2が入力されました。」
「 1 か 2 を入力してください。」と表示されてしまう
あえて break を書かないこともあるが、
バグを混入させる危険性があるので必ず break を書くこと
if 文 と switch 文 の使い分け
8switch 文 が使えるとき
• 条件が「 x == 1 」「 x == 2 」のように、
“ある変数(式)”と同じかどうか調べると
き
9switch 文 が使えないとき
• 「 x == 1 」「 y == 2 」のように、比較
対象の ”変数(式)” が一定でないとき
• 「 x < 1 」のように、不等号による比較
のとき
• 「 x < 1 && y < 1 」のように、複数条件
あるとき
10switch 文 を使った方が良いとき
前提:先のスライドの条件
• ある変数とたくさんの値を比較する場合
• if - else if が三つ以上続く場合
演習問題
12演習問題①( switch 文を使う)
• 単位の変換を行う(ファイル名: ex09-01.c )
– 距離と単位を入力し、すべての距離を mm に換算して出力してください。
– 入力される距離の単位は• k … キロメートル• m … メートル• c … センチメートル
• 入力例– 1– k
• 出力例– 1000000 mm
13演習問題② ( switch 文を使う)
• 逆ポーランド記法の計算機をつくる(ファイル名: ex09-02.c )
–ふたつの値と演算子 (+, -, *, /) を入力し、
計算結果を表示する
–ヒント:値は整数型、演算子は文字型例:
入力「 1 」「 2 」「 + 」 → 1 + 2 → 出力「 3 」
入力「 10 」「 20 」「 * 」 → 10 * 20 → 出力「 200 」
14演習問題③ ( switch 文を使う)
• じゃんけんゲームをつくる(ファイル名: ex09-03.c )
– 0: グー、 1: チョキ、 2: パー
–勝敗を表示する(勝ち or 負け or あいこ)
#include <stdio.h> #include <stdlib.h> #include <time.h>
int main(void){ int me; // 自分 ( 入力する ) int cpu; // コンピュータ
srand(time(NULL)); cpu = rand() % 3;
// ここに処理を書く return 0; }