Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
基本Javaプログラミング演習
第05回
担当:植村
2
今日の講義内容
・CHAPTER 7
条件分岐
繰り返し処理
CHAPTER 7 条件分岐
4
if 文
ある条件が成り立つか否かで処理を分岐する
if (条件){ (条件が成立つときの処理A) }
条件が 成立?
処理A
no
yes
条件には ( a >= 80 ) のように関係演算子を用いて条件が成り立つか否か(TRUE/FALSE)を判別する
P101
5
if~else 文
ある条件が成り立つか否かで処理を分岐する
if (条件){ (条件が成立つときの処理A) } else{ (それ以外のときの処理B) }
条件が 成立?
処理B 処理A
no
yes
条件には ( a >= 80 ) のように関係演算子を用いて条件が成り立つか否か(TRUE/FALSE)を判別する
P101
6
if~else 文
ある条件が成り立つか否かで処理を分岐する
int a=75; if (a>=60){ System.out.println(“合”); } else{ System.out.println(“否”); }
条件が 成立?
処理B 処理A
no
yes
条件には ( a >= 80 ) のように関係演算子を用いて条件が成り立つか否か(TRUE/FALSE)を判別する
P101
7
関係演算子
演算の種類 演算子 演算の例 例の意味
等しい == a == 10 aの値が10
等しくない != a != 10 aの値が10ではない
より小さい < a < b aの値がbより小さい
より大きい > a > b aの値がbより大きい
以下 <= a <= 5 aの値は5以下
以上 >= a >= 5 aの値は5以上
8
論理演算子
演算の種類 演算子 演算の例 例の意味
否定
(ではない) ! !(a==10)
「aの値が10である」が成り立つときfalse、成り立たないときtrue
論理積
(かつ) && (a>=5)&&(a<=10) aの値が5以上かつ10以下
論理和
(または) || (a==5)||(a==10) aの値が5または10
if( score>=60 && score<70){ System.out.println(“可”); }
9
if~else if 文
ある条件が成り立つか否かで処理を分岐する
if (条件1){ (条件1が成立つときの処理A) } else if (条件2){ (条件2が成立つときの処理B) } else{ (それ以外のときの処理) }
条件1が 成立?
処理B 処理A
no
yes
条件2が 成立?
no
処理C
yes
P105
10
スイッチ
処理B 処理A
ケース1
switch(式){ case 値1: (処理A); break; case 値2: (処理B); break; case 値3: (処理C); break; default: (処理D); break; }
処理C
ケース2 ケース3
処理D
その他
条件分岐 switch ~case文
条件ごとに処理を振り分ける
P114
11
public class Month{ public static void main(String[] args){
int m; m = Integer.PerseInt(args[0]); System.out.print( m + "月は“ );
switch(m){ case 1: System.out.println("睦月です");
break;
case 2: System.out.println("如月です");
break;
case 3: System.out.println("弥生です");
break;
Month.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12
case 12: System.out.println(“師走です");
break;
default: System.out.println("1~12月ではありません");
} } }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Month.java
CHAPTER 7 繰り返し処理
14
for 文
• 条件を満たす間繰り返し処理を行う
for(初期化式;条件;増減式){ (処理) }
条件が 成立?
処理
no
yes
初期化式
増減式
while 文はまた後日。
初期化式: 繰り返しに入る直前に実行する文
条件、増減式: 繰り返し1回ごとに判定・実行する文
15
for 文
• 条件を満たす間繰り返し処理を行う
for( i=0; i<100; i++ ){ (処理) }
条件が 成立?
処理
no
yes
初期化式
増減式
初期化式: 繰り返しに入る直前に実行する文
条件、増減式: 繰り返し1回ごとに判定・実行する文
while 文はまた後日。
16
If文 P102 IfSample2.java P106 IfSample3.java
switch文 P115 SwitchSample.java
for文 P129 ForSample2.java
17
演習課題
現在1月1日 の日曜日です 1日後は月曜日です 2日後は火曜日です 3日後は水曜日です 4日後は木曜日です 5日後は金曜日です : 100日後は火曜日です
1 2 アホ 4 : アホ アホ 14 : 29 アホ アホ アホ :
表示例
18
演習課題
① 現在が1月1日が日曜日だとして、「 ○日後は△曜日です」という出力で1日後~100日後まで羅列して表示させるプログラムを作成せよ
② 1から100までの数を羅列して表示しなさい。ただし、3のつく数と3の倍数の場合は「アホ」と表示させること。
③ 2つ数値を引数とし、その2つの数の最小公倍数を求めるプログラム LCM.java を作成せよ。(きちんとできたら点数+α)
15, 21 の最小公倍数は105にきちんとなるか?
④ 行・列の2つの値を引数として渡すと、以下のような模様を描画するプログラムを作成しなさい
○× ○× ○× ○× ○× ○× ○× ○× ○× ○ × ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○ × ○× ○× ○× ○× ○× ○× ○× ○× ○×
19
演習課題
① 現在が1月1日が日曜日だとして、「 ○日後は△曜日です」という出力で1日後~100日後まで羅列して表示させるプログラムを作成せよ
1) 1~100日後まで羅列する→ for文のカウンターの値を使う
2) 月曜日=1 火曜日=2 …というように曜日を数値を対応させる
3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? →「n日後」の n を7で割った余りに着目する→0~6の繰り返し
※変なところで改行されたくない場合は
System.out.print() 文を使ってください
20
演習課題
② 1から100までの数を羅列して表示しなさい。ただし、3のつく数と3の倍数の場合は「アホ」と表示させること。
1)1~100まで羅列する→ for文のカウンターの値を使う
2) 3の倍数、一の位が3、十の位が3 のときの3つの条件
3)剰余算ばかり使っていて割り算の存在を忘れていないか?
EX) 何桁の数字でもできるようなアルゴリズムにしなさい
21
演習課題
2つ数値を引数とし、その2つの数の最小公倍数を求めるプログラム LCM.java を作成せよ。
・for文、if文で作成可能
・計算効率とか考えずに力技でOK
・36と28の最小公倍数は252
・上記の場合、(36*a)%28=0 となる a を探せばよい