ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2)
前回のレポート課題(1) キーボードから整数を入力し、「偶数」か「奇数」を判定 if ~ else if 文を用いる
前回のレポート課題(2) キーボードから整数を入力し、季節を判定 if ~ else if 文を用い、条件判定に 論理演算子の「OR」である「||」を使う
if文(復習) プログラムの中で、ある条件にしたがって処理の手順を変更したい場合に「if文」を使用することがある 基本的な構成は「もし~なら・・・する」 if文の書式
if文による選択処理(復習) if文の流れは以下のようになる 「式」の部分を評価して、成立する(真)なら文を実行、成立しない(偽)なら文は実行されない
if~else if 文(復習) 「もし~なら○○、それ以外で~なら××、それ以外なら△△」のように、複数の条件によって処理の中身を変えたい場合、if~else if 文を使う(3つ以上の条件を並べることも可能)
if~else if 文の流れ(復習) if(条件式1){ 文1; 文2; } else if(条件式2){ 文3; 文4; 処理 (文1文2の実行) Yes No if(条件式1){ 文1; 文2; } else if(条件式2){ 文3; 文4; else if(条件式3){ 文5; else{ 文6; 条件式2 条件式3 (文3文4の実行) (文5の実行) (文6の実行)
練習 整数を2つ(a, b)入力し、a>b ならaとbの中身を入れ替えるプログラム
練習 入れ替え部分について 直接 b = a とすると b の中身が上書きされてしまうため、いったん別の変数(tmp)に b の値を避難させておき、あとで a = tmp のようにする。 ←一時避難 ←bにaを代入 ←避難していた b の値を a に代入
バブルソート(数値のならべかえ) 整数の入力 並べ替え ・2個ずつ比較 ・大きいものを順に右へ 入力した複数の整数を小さいものから順に並べ替える 整数の入力 並べ替え ・2個ずつ比較 ・大きいものを順に右へ
バブルソートの手順(i = 0) 1つ目と2つ目を比較し、大きいほうを右へ 2つ目と3つ目を比較し、大きいほうを右へ 最終的に「一番大きい数字」が一番右にくる
バブルソートの手順(i = 1) すでに一番右に一番大きい値がきているので、残り(左側4つ)の中で一番大きいものを右へ動かしていく よって比較は x[0] から x[3]まででよい→ j のループは「 j < 4 – i 」まで 最終的に、2番目に大きい数値が右から2番目にくる
バブルソートの手順(つづき) 以上の手順を繰り返していくと、最終的に小さいものから順に並ぶようになる 右4つに順に並んだ時点で並べ替えは終わっているから、i のループは4回ですむ(i < 4)
switch~case文 判定式 1つ目の条件と実行文 2つ目の条件と実行文 条件に一致しない場合の 実行文(default文) if文と同様に条件分岐をおこなう書式としてswitch文がある switch文ではある式または値を評価して「一致したものがあれば」case文で書かれた内容を実行し、break文で脱出する 判定式 1つ目の条件と実行文 2つ目の条件と実行文 条件に一致しない場合の 実行文(default文)
switch ~ case文 switch(条件X){ case a: 文1; break; case b: 文2; default: 文3; } 条件X X=a 文1 X=b 文2 break default 文3
switch~case文の例 整数を入力し、3で割った余りを表示する
switch~case文の例(2) 二択クイズ 条件に合致しない場合にはdefault文が実行される 1,2以外が入力されたら
第10回のレポート 以下のプログラムを作成し、いずれか1つを教員までメールで送ってください (1)バブルソートを用いて、入力した5つの整数を「大きいほうから順に(降順)」並べ替えるプログラム (2)switch~case文を用いて、三択クイズを出題し回答させるプログラム(問題は各自自由に設定してよい) ※余裕のある人は if文で同じプログラムを作成してみよう