プログラミングA
第5回 場合に応じた処理、繰り返し
2017年5月15日 東邦大学 金岡 晃
前回の復習(1)
このプログラムを前回の復習(2)
このプログラムを前回の復習
• 演算子
– 代入演算子、インクリメント、シフト演算子
• 型変換
こういうプログラムを作りたい
“おめでとう!これで100点越えの プレゼントを獲得!” というメッセージを出力 5教科のテスト 各科目の点数の合計が 100点以上 100点未満 “残念!100点越えのプレゼントまであと**点!” というメッセージを出力 条件に応じたプログラム “5教科の点数の合計が100点以上か”条件
“5教科の点数の合計が100点以上か” true or false で答えられる 条件 式のうち、true あるいは false で答えられるもの • 関係演算子や論理演算子をつかって記述される • 条件は、式として評価され、trueまたはfalseの値 (boolean型)を返す 記号 名前 > より大きい >= 以上 < 未満 <= 以下 == 等価 != 非等価 関係 演算子 sum>=100関係演算子とboolean
このプログラムを条件に従ったプログラミング
“おめでとう!これで100点越えの プレゼントを獲得!” というメッセージを出力 5教科のテスト 各科目の点数の合計が 100点以上 100点未満 “残念!100点越えのプレゼントまであと**点!” というメッセージを出力 条件は書くことができた。では、条件に従って動作を変更させるには?? if if~else switch 特殊な文があるif (条件){ 文1; 文2; … } if (条件) 文;
条件に従ったプログラミング(1)
:if文
もし~だったら、**しよう if文 “条件”がtrueだったら”文”を実行 if(sum>=100) System.out.println(“おめでとう!これで100点越えのプレゼン トを獲得!”); 複数の文を実行条件に従ったプログラミング(2)
:if~else
もし~だったら、**しよう。 ~じゃなかったら、○○しよう if (条件) 文1; else 文2; if~else文 “条件”がtrueだったら”文1”を実行、 falseだったら”文2”を実行 if(sum>=100) System.out.println(“おめでとう!これで100点越えのプレゼ ントを獲得!”); else System.out.println(“残念!100点越えのプレゼントまであ と”+(100-sum)+”点!”);if~elseの例題
このプログラムを100点未満で 90点以上
条件に従ったプログラミング(2)
:if~else
もし~だったら、**しよう。 もし~じゃなくて△△だったら、○○しよう、 それでも違うんだったら××しよう if(sum>=100) System.out.println(“おめでとう!これで100点越えのプレゼント を獲得!”); else if (sum>=90) System.out.println(“おしい!100点越えのプレゼントまであ と”+(100-sum)+”点!”); else System.out.println(“がんばれ!100点越えのプレゼントまであ と”+(100-sum)+”点!”);条件に従ったプログラミング(2)
:switch文
• こういったプログラムを作りたい – もし入力されたのがAだったら、Xという作業を – もし入力されたのがBだったら、Yという作業を – もし入力されたのがCだったら、Zという作業を – もしどれでもなかったら、Wという作業を • If~elseの組み合わせでもできるが… switch(式){ case 値1: 文1; break; case 値2: 文2; break; default: 文3; break; switch文switch文
switch(式){ case 値1: 文1; break; case 値2: 文2; break; default: 文3; break; } switch文 “式”の値が“値1”だった とき、“文1”を実行。 “値2”だったときは、“文 2”を実行。 どれでもないとき (default)は、“文3”を実 行。 注意 switch()の中の式は、条件式だけではなく通常の式が使える break : 制御文(if文や、switch文)を途中で終了させる命令switchの例題
このプログラムを論理演算子
記号 名前 ! 論理否定(単項) && 論理積 || 論理和 “または”、”かつ”、の話。 複数の条件をまとめて評価するときや、条件の否定(~でないとき)をすると きに使う 条件が2つある場合どうしよう? たとえば「大学近辺の」「ランチの時間帯にやっている」という飲食 店を探すとき if ~ else を2回使えばできるが、 いっぺんにまとめてできないか? 論理 演算子論理演算子のイメージ
&& (AND) || (OR) ! (NOT) A B A B A論理演算子の例題
このプログラムをこういうプログラムを作りたい
120人いる情報科学科全員のプログラミングAの 合計点と平均点を求めたい できないことはない。合計を入れておく変数を作り、 120回「次の人の点数を入れてください」と書く。 120回おんなじことをプログラムに書かない といけない??for文
for (初期化の式; 繰り返すかどうか調べる式; 変化のための式) 文; for文 繰り返すか どうか調べる 式 初期化 文 変化のための式 true false for文の 構造ループ内で変数を使う
初期化の式 : int i=1 繰り返すかどうか調べる式 : i <= 5 変化のための式 : i++ ループの変数を 文に使うこともできるループ内で変数を使う
繰り返すか どうか調べる 式 初期化 文 変化のための式 true int i=1 i<=5 “繰り返しています”の出力 i++for文の例題
25
このプログラムを
while文
while(条件){ 文; … } while文 条件がtrueの間 繰り返す 条件 true 文 while文の 構造 false 文の中で 条件に入るものを 変化させないと 無限ループになる 恐れがあるdo~while文
do{ 文; … } while(条件); while文 最初に文を実行し、 条件がtrueの間繰り返す 条件 文 true do~while文の 構造 falsebreakとcontinue
• 制御文(if, switch, for, while)を途中ですっ飛ばして次に行く
– 次?
ループを外れる ループに戻る
break;