21
基本Javaプログラミング演習 05担当:植村

基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

基本Javaプログラミング演習

第05回

担当:植村

Page 2: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

2

今日の講義内容

・CHAPTER 7

条件分岐

繰り返し処理

Page 3: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

CHAPTER 7 条件分岐

Page 4: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

4

if 文

ある条件が成り立つか否かで処理を分岐する

if (条件){ (条件が成立つときの処理A) }

条件が 成立?

処理A

no

yes

条件には ( a >= 80 ) のように関係演算子を用いて条件が成り立つか否か(TRUE/FALSE)を判別する

P101

Page 5: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

5

if~else 文

ある条件が成り立つか否かで処理を分岐する

if (条件){ (条件が成立つときの処理A) } else{ (それ以外のときの処理B) }

条件が 成立?

処理B 処理A

no

yes

条件には ( a >= 80 ) のように関係演算子を用いて条件が成り立つか否か(TRUE/FALSE)を判別する

P101

Page 6: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

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

Page 7: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

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以上

Page 8: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

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(“可”); }

Page 9: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

9

if~else if 文

ある条件が成り立つか否かで処理を分岐する

if (条件1){ (条件1が成立つときの処理A) } else if (条件2){ (条件2が成立つときの処理B) } else{ (それ以外のときの処理) }

条件1が 成立?

処理B 処理A

no

yes

条件2が 成立?

no

処理C

yes

P105

Page 10: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

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

Page 11: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Page 12: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

12

case 12: System.out.println(“師走です");

break;

default: System.out.println("1~12月ではありません");

} } }

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Month.java

Page 13: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

CHAPTER 7 繰り返し処理

Page 14: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

14

for 文

• 条件を満たす間繰り返し処理を行う

for(初期化式;条件;増減式){ (処理) }

条件が 成立?

処理

no

yes

初期化式

増減式

while 文はまた後日。

初期化式: 繰り返しに入る直前に実行する文

条件、増減式: 繰り返し1回ごとに判定・実行する文

Page 15: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

15

for 文

• 条件を満たす間繰り返し処理を行う

for( i=0; i<100; i++ ){ (処理) }

条件が 成立?

処理

no

yes

初期化式

増減式

初期化式: 繰り返しに入る直前に実行する文

条件、増減式: 繰り返し1回ごとに判定・実行する文

while 文はまた後日。

Page 16: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

16

If文 P102 IfSample2.java P106 IfSample3.java

switch文 P115 SwitchSample.java

for文 P129 ForSample2.java

Page 17: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

17

演習課題

現在1月1日 の日曜日です 1日後は月曜日です 2日後は火曜日です 3日後は水曜日です 4日後は木曜日です 5日後は金曜日です : 100日後は火曜日です

1 2 アホ 4 : アホ アホ 14 : 29 アホ アホ アホ :

表示例

Page 18: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

18

演習課題

① 現在が1月1日が日曜日だとして、「 ○日後は△曜日です」という出力で1日後~100日後まで羅列して表示させるプログラムを作成せよ

② 1から100までの数を羅列して表示しなさい。ただし、3のつく数と3の倍数の場合は「アホ」と表示させること。

③ 2つ数値を引数とし、その2つの数の最小公倍数を求めるプログラム LCM.java を作成せよ。(きちんとできたら点数+α)

15, 21 の最小公倍数は105にきちんとなるか?

④ 行・列の2つの値を引数として渡すと、以下のような模様を描画するプログラムを作成しなさい

○× ○× ○× ○× ○× ○× ○× ○× ○× ○ × ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○× ○ × ○× ○× ○× ○× ○× ○× ○× ○× ○×

Page 19: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

19

演習課題

① 現在が1月1日が日曜日だとして、「 ○日後は△曜日です」という出力で1日後~100日後まで羅列して表示させるプログラムを作成せよ

1) 1~100日後まで羅列する→ for文のカウンターの値を使う

2) 月曜日=1 火曜日=2 …というように曜日を数値を対応させる

3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? →「n日後」の n を7で割った余りに着目する→0~6の繰り返し

※変なところで改行されたくない場合は

System.out.print() 文を使ってください

Page 20: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

20

演習課題

② 1から100までの数を羅列して表示しなさい。ただし、3のつく数と3の倍数の場合は「アホ」と表示させること。

1)1~100まで羅列する→ for文のカウンターの値を使う

2) 3の倍数、一の位が3、十の位が3 のときの3つの条件

3)剰余算ばかり使っていて割り算の存在を忘れていないか?

EX) 何桁の数字でもできるようなアルゴリズムにしなさい

Page 21: 基本Javaプログラミング演習 - cis.sojo-u.ac.jpt_uemura/kjpe/14kjpe05.pdf · 3) 数値で条件分岐。ただ、その数値をどうやって導き出すか? ただ、その数値をどうやって導き出すか?

21

演習課題

2つ数値を引数とし、その2つの数の最小公倍数を求めるプログラム LCM.java を作成せよ。

・for文、if文で作成可能

・計算効率とか考えずに力技でOK

・36と28の最小公倍数は252

・上記の場合、(36*a)%28=0 となる a を探せばよい