プログラミング A
第
5
回 場合に応じた処理、繰り返し2013年5月27日 東邦大学 金岡 晃
前回の復習(1)
このプログラムを作成し実⾏してください前回の復習(2)
このプログラムを作成し実⾏してください前回の復習(3)
このプログラムを作成し実⾏してください前回の復習
• 演算⼦
– 代⼊演算⼦、インクリメント、シフト演算⼦
• 型変換
場合に応じた処理
こういうプログラムを作りたい
“
おめでとう!これで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
⽂のfor
構造⽂の 構造ループ内で変数を使う
初期化の式 :
int i=1
繰り返すかどうか調べる式 :i <= 5
変化のための式 :i++
ループの変数を
⽂に使うこともできる
ループ内で変数を使う
繰り返すか どうか調べる
式 初期化
⽂
変化のための式
true
false
int i=1
i<=5 “
繰り返しています”
の出⼒
i++
for ⽂の例題
while ⽂
while(
条件){
⽂
;
… } while
⽂条件が
true
の間 繰り返す条件
true
⽂while
⽂のwhile
構造⽂の 構造false
条件に⼊るものを⽂の中で 変化させないと 無限ループになる
恐れがある
do 〜 while ⽂
do{
⽂;
…
} while(
条件);
while
⽂最初に文を実行し、
条件が
true
の間繰り返す条件
⽂
true do~while
⽂のdo~while
構造⽂の 構造false
break と continue
• 制御⽂( if, switch, for, while )を途中ですっ⾶ばして次に⾏く
– 次?
ループを外れる ループに戻る
break;
continue;
continue の例⽂
今⽇の課題
1. 1〜20までの偶数を出⼒するプログラムを作成してください – ただし、for⽂とif⽂を利⽤すること
2. キーボードからテストの点数を⼊⼒させ、その合計点と平均点を出⼒するコードを 記述してください
– ただし、0が⼊⼒されたら⼊⼒が終了するものとし、何⼈(何科⽬)分の⼊⼒で も可能なように⼯夫してください
3. <チャレンジ問題>
キーボードから⼊⼒された数字が素数であるかどうかを判定する、素数判定プログ ラムを作ってみよう
– 素数:1とその数以外では割り切れない数 – (これはできなくても構いません)
• 提出先
– [email protected]‐u.ac.jp
• 件名
– プログラミングA:第5回
• 注意
– かならず、メールで提出してから帰ってください。また提出前に、エラーが出た 画⾯を、私かTAに⾒せて確認を受けてから帰ってください。
– ソースコード(javaファイル)を添付してください