121
制御構造 構造化定理ですべてを書こう

制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

制御構造構造化定理ですべてを書こう

Page 2: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

あらゆる処理の正体は• 順次 • 分岐 • 繰り返し

⇛ これらの組み合わせ。

Page 3: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

あらゆる処理の正体は

構造化定理

Page 4: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

あらゆる処理の正体は• 順次

文1

文2⬇

順番に文を実行する。

Page 5: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

あらゆる処理の正体は• 分岐

Yes

No

条件によって違う文

Page 6: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

あらゆる処理の正体は• 繰り返し

条件が満たされるまで 同じ文を繰り返す

Page 7: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

分岐もし、明日晴れたら 洗濯して買い物行こう。 でも、明日が雨なら 部屋でDVD見よう。

Page 8: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

分岐もし、明日晴れたら 洗濯して買い物行こう。 でも、明日が雨なら 部屋でDVD見よう。

条件

条件

Page 9: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

分岐もし、明日晴れたら 洗濯して散歩に行こう。 でも、明日が雨なら 部屋でDVD見よう。

条件

条件

Page 10: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

分岐フローチャート

Page 11: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

if文if(条件){ 条件がなりたつときの処理 }else{ そうじゃなかったときの処理 }

Page 12: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

if文

Page 13: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

if文

boolean weather = {true

false

Page 14: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

比較の条件式if(weather==true){ 晴れた時の処理; } else{ 雨のときの処理; }

Page 15: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

比較の条件式if(weather==true){ 晴れた時の処理; } else{ 雨のときの処理; }

Page 16: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

比較のイコール

比較のイコールは == を使う!!

Page 17: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

陥りがちなミスif(weather=true){ 晴れた時の処理; } else{ 雨のときの処理; }

Page 18: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習3-4【プロジェクト名】pra3-4

以下のソースコードを完成させよ。public class Main{ public static void main(String[] args){ boolean weather = true;

} }

weatherがtrueなら、 「洗濯して散歩行こう」と画面表示。 weatherがfalseなら、 「部屋でDVD見よう」と画面表示。

Page 19: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

繰り返しもし誰かがトイレに 入っていたら 「ノック⇛1分待つ」 を繰り返す。

Page 20: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

繰り返し

Page 21: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

while文

while(条件){ 条件がなりたつときの処理 }

Page 22: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

while文

while(条件){ 条件がなりたつときの処理 } ⬆条件が成り立っている間繰り返す

Page 23: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

繰り返し

Page 24: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

繰り返し

boolean doorclose = {true

false

Page 25: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-6 【プロジェクト名】ex3-6

public class Main{ public staric void main(String[] args){

boolean doorClose = true;

while(doorClose==true){ System.out.println(“ノックします。”); System.out.println(“1分待ちます。”);

} }

}

Page 26: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-6 【プロジェクト名】ex3-6

public class Main{ public staric void main(String[] args){

boolean doorClose = true;

while(doorClose==true){ System.out.println(“ノックします。”); System.out.println(“1分待ちます。”);

} }

}

Page 27: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

関係演算子関係演算子 意味

右辺と左辺が等しい

右辺と左辺が等しくない

左辺が右辺より大きい

左辺が右辺より小さい

左辺が右辺以上

左辺が右辺以下

==

!=

>

<

>=

<=

Page 28: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-7a==10

⇛ aが10と等しい x!=0

⇛ xが0でない。 i<=10

⇛ iが10以下である。 j<5

⇛ jが5未満である。

Page 29: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

論理演算子

演算子 意味 例

&& かつ (AND) (x>0)&&(y>0)

|| または (OR) (a<=-1)||(a>=1)

テスト

Page 30: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-7-2

a<-1 または a>1 であり,かつ

b<-2 または b>2

Page 31: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-7-2

((a<-1)||(a>1)) && ((b<-2)||(b>2))

Page 32: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-8ユーザが文字列を入力し、それが「こんにちは」である場合だけ、「こんにちは」と表示するプログラムを作成せよ。

Page 33: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-8public class Main{

public static void main(String[] args){ String str = new java.util.Scanner(System.in).nextLine(); if(str==“こんにちは”){

System.out.println(“こんにちは”); }

} }

Page 34: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-8public class Main{

public staric void main(String[] args){ String str = new java.util.Scanner(system.in).nextLine(); if(str==“こんにちは”){

System.out.println(“こんにちは”); }

} }

こう書きませんでしたか?

Page 35: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

文字列の比較

これは最初に必ず陥るミス。

Page 36: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

文字列の比較

これは最初に必ず陥るミス。しかも、「コンパイルには通るが、  なんか動きがおかしい」という、厄介な感じになる。

Page 37: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

文字列の比較

文字列のs1,s2の比較s1.equals(s2)

鲾鲱鳀

Page 38: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習3-4-2 [プロジェクト名] pra3-4-2

キーボードから数値を入力し, 以下のように表示するプログラムを

作りなさい.• 0から10の間の数 ⇛ 「正解です」 • それ以外の数 ⇛「不正解です」

Page 39: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

回数が決まった繰り返しfor文

n回繰り返しのテンプレテスト

Page 40: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

回数が決まった繰り返しfor文

n回繰り返しのテンプレテスト

Page 41: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

回数が決まった繰り返しfor文

n回繰り返しのテンプレ

for(int i=0; i<n; i++){ 繰り返したい処理 }

テスト

Page 42: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

詳しく見てみる

for(int i=0; i<n; i++){…i : ループカウンタ

iの初期化 ループが 続く条件

ループ カウンタの 更新

Page 43: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

詳しく見てみる

for(int i=0; i<n; i++){…i : ループカウンタ

iの初期化 ループが 続く条件

ループ カウンタの 更新

Page 44: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

詳しく見てみるfor(int i=0; i<n; i++){…

• i=0からスタート → ループ1回目実行 • i=1に更新 →ループ2回目実行 • i=2に更新 →ループ3回目実行

Page 45: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

詳しく見てみるfor(int i=0; i<n; i++){…

• i=0からスタート → ループ1回目実行 • i=1に更新 →ループ2回目実行 • i=2に更新 →ループ3回目実行

...

Page 46: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

詳しく見てみるfor(int i=0; i<n; i++){…

• i=0からスタート → ループ1回目実行 • i=1に更新 →ループ2回目実行 • i=2に更新 →ループ3回目実行

...• i=n-2に更新 → ループn-1回目実行 • i=n-1に更新 → ループn回目実行

Page 47: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

詳しく見てみるfor(int i=0; i<n; i++){…

• i=0からスタート → ループ1回目実行 • i=1に更新 →ループ2回目実行 • i=2に更新 →ループ3回目実行

...• i=n-2に更新 → ループn-1回目実行 • i=n-1に更新 → ループn回目実行 • i=nには更新 → ループ脱出 (i=nは継続条件i<nを満たさないから)

Page 48: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

簡単にいうと

for(int i=0; i<n; i++){…ここからはじまる

Page 49: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

簡単にいうと

for(int i=0; i<n; i++){…ここからはじまる

この間続く

Page 50: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

簡単にいうと

for(int i=0; i<n; i++){…ここからはじまる

この間続く

iの増え方

Page 51: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

簡単にいうと

for(int i=0; i<n; i++){…ここからはじまる

この間続く

iの増え方

Page 52: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-8

“Hello”という単語を 100回表示する プログラムを書きなさい。

Page 53: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-8よくない例(100回コピペ)

System.out.println(“Hello”); System.out.println(“Hello”); System.out.println(“Hello”); System.out.println(“Hello”); ………System.out.println(“Hello”); System.out.println(“Hello”);

Page 54: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-8

for(int i=0; i<100; i++){ System.out.println(“Hello”); }

Page 55: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-8

for(int i=0; i<100; i++){ System.out.println(“Hello”); }

100回繰り返しテンプレート

Page 56: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9

1~100までの 総和を求めるプログラム を書きなさい。

Page 57: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9イメージ

❒sum最初は0

for(i=0; i<100; i++)

Page 58: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9イメージ

❒sum最初は0

Page 59: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9イメージ

❒sum+1

最初は0

i=0

Page 60: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9イメージ

❒sum+1

最初は0

+2

i=0

i=1

Page 61: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9イメージ

❒sum+1

最初は0

+2 +3

i=0

i=1 i=2

Page 62: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9イメージ

❒sum+1

最初は0

+2 +3

i=0

i=1 i=2

Page 63: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9イメージ

❒sum+1

最初は0

+2 +3 +99

i=0

i=1 i=2 i=98

Page 64: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9イメージ

❒sum+1

最初は0

+2 +3 +99+100

i=0

i=1 i=2 i=98

i=99…

Page 65: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9イメージ

❒sum+1

最初は0

+2 +3 +99+100

i=0

i=1 i=2 i=98

i=99…

1+2+3+…+100

Page 66: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9

int sum=0;

Page 67: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-9

for(int i=0; i<100; i++){ sum += i+1; }

int sum=0;

Page 68: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習3-5 [プロジェクト名] pra3-5

10! (10の階乗)を計算する プログラムを書きなさい. (ループを使うこと)10! = 10×9×…×2×1

Page 69: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習3-5 [プロジェクト名] pra3-5

int fact=1; for(int i=0; i<10; i++){fact *= i+1;}

Page 70: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習3-6 [プロジェクト名] pra3-6

個数を表す数値を入力し, その個数だけ*を表示する プログラムを作成せよ.

(例) 5を入力 → *****

Page 71: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習3-6 [プロジェクト名] pra3-6

int n = new java.util.Scanner(System.in).nextInt(); for(int i=0; i<n; i++){System.out.print(“*”);}

Page 72: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習3-6 [プロジェクト名] pra3-6

int n = new java.util.Scanner(System.in).nextInt(); for(int i=0; i<n; i++){System.out.print(“*”);}

n回繰り返しテンプレート

Page 73: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

いろんなforループi : ループカウンタ

• for(int i=0; i<10; i++)• for(int i=1; i<=10; i++)• for(int i=10; i>=1; i- -)

Page 74: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

ネスト(入れ子)

for(int i=0; i<10; i++){ for(int j=0; j<10; j++){ System.out.println(“i=”+i+”,j=”+j);

}}

Page 75: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

ネスト(入れ子)

for(int i=0; i<10; i++){ for(int j=0; j<10; j++){ System.out.println(“i=”+i+”,j=”+j);

}}

forループの中にforループ ⇛ ループのネスト(入れ子)

Page 76: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例3-10

for(int i=0; i<10; i++){ for(int j=0; j<10; j++){ System.out.println(“i=”+i+”,j=”+j);

}}

実行して,iとjの動きを確かめよ.

Page 77: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習3-7 [プロジェクト名] pra3-7

九九の表を出力する プログラムを書いてください。 (forループをネストする) ※レイアウトはこだわろうと思えばこだわれますが、テキトーでいいです。

テスト

Page 78: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

どんどん質問を!! 演習4

Page 79: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

配列同じ型をまとめて扱う便利機能

Page 80: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

とあるコード文字列を5つ入力し、つづけて表示するプログラム。String str1 = new java.util.Scanner(System.in).nextLine();String str2 = new java.util.Scanner(System.in).nextLine();String str3 = new java.util.Scanner(System.in).nextLine();String str4 = new java.util.Scanner(System.in).nextLine();String str5 = new java.util.Scanner(System.in).nextLine();

System.out.println(str1 + str2 + str3 + str4 + str5);

Page 81: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

とあるコード

効率が悪い

Page 82: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

配列同じ型の変数の並び。

❒❒❒❒❒array[0][1][2][3][4]

Page 83: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

配列同じ型の変数の並び。

❒❒❒❒❒array[0][1][2][3][4]

array[0], array[1], array[2], array[3], array[4]

同じ型の変数。

Page 84: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

宣言

int[] score; score = new int[5]

Page 85: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

宣言

int[] score; score = new int[5]

配列変数

int型を5個作って配列変数scoreに代入

Page 86: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

宣言

Page 87: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

同時にもできる

int[] score = new int[5];

Page 88: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習5-1 [プロジェクト] pra5-1

長さ5のint型配列 score 長さ10のdouble型配列 array 長さ3のboolean型配列 results 長さ4のString型配列 names

を宣言してみよ。

Page 89: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習5-1

int[] score = new int[5];double[] array = new double[10];boolean[] results = new boolean[3];String[] names = new String[4];

[プロジェクト] pra5-1

Page 90: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

配列は勝手に初期化配列の各要素は勝手に初期化される。

int, double型などの数値型:0に初期化

boolean型 : falseに初期化

String型:nullに初期化(後述)

Page 91: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

初期化の省略記法

int[] score={20,30,40,50,60};

❒❒❒❒❒score[0][1][2][3][4]20 30 40 50 60

Page 92: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

配列の要素を扱う❒❒❒❒❒score[0][1][2][3][4]20 30 40 50 60

System.out.println(score[3]); score[3] = 10; System.out.println(score[3]);

Page 93: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

配列の要素を扱う❒❒❒❒❒score[0][1][2][3][4]20 30 40 50 60

System.out.println(score[3]); score[3] = 10; System.out.println(score[3]);

Page 94: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

配列の長さ

score.length

❒❒❒❒❒score[0][1][2][3][4]20 30 40 50 60

Page 95: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

配列のメリット

forループと、相性がよい

Page 96: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例5-1

❒❒❒❒❒score[0][1][2][3][4]20 30 40 50 60

全部の要素を画面に表示したい。

Page 97: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例5-1❒❒❒❒❒score[0][1][2][3][4]20 30 40 50 60

System.out.println(score[0]); System.out.println(score[1]); System.out.println(score[2]); System.out.println(score[3]); System.out.println(score[4]);

Page 98: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例5-1❒❒❒❒❒score[0][1][2][3][4]20 30 40 50 60

for(int i=0; i<score.length; i++){ System.out.println(score[i]); }

Page 99: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例5-1

for(int i=0; i<score.length; i++){ System.out.println(score[i]); }

System.out.println(score[0]); System.out.println(score[1]); System.out.println(score[2]); System.out.println(score[3]); System.out.println(score[4]);

Page 100: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例5-2

for(int i=0; i<score.length; i++){ score[i]=1; //全部に1を代入 }

score[0]=1; score[1]=1; score[2]=1; score[3]=1; score[4]=1;

Page 101: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習5-2 [プロジェクト] pra5-2

長さ100のint型配列numを宣言し、 以下のように各要素に値を代入する

プログラムを書きなさい。 num[0]=0, num[1]=1, …, num[99]=99

Page 102: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習5-2

int[] num = new int[100];for(int i=0; i<num.length; i++){num[i]=i; //第i要素にiを代入}

[プロジェクト] pra5-2

Page 103: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

拡張for文❒❒❒❒❒score[0][1][2][3][4]20 30 40 50 60

for(int i=0; i<score.length; i++){ System.out.println(score[i]); }

鲾鲱鳀

Page 104: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

拡張for文❒❒❒❒❒score[0][1][2][3][4]20 30 40 50 60

for(int num : score){ System.out.println(num); }配列の各要素を見るときに 便利なfor文の書き方

鲾鲱鳀

Page 105: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

拡張for文❒❒❒❒❒score[0][1][2][3][4]20 30 40 50 60for(int num : score){

System.out.println(num); }

鲾鲱鳀

Page 106: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

拡張for文❒❒❒❒❒score[0][1][2][3][4]20 30 40 50 60for(int num : score){

System.out.println(num); }

• num = score[0] • num = score[1] • num = score[2] • num = score[3] • num = score[4]

鲾鲱鳀

Page 107: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習5-3 [プロジェクト] pra5-3

int型で長さ5の配列numを {10,20,30,40,50}で初期化し、 各要素を以下のように順に表示する プログラムを作成せよ。拡張for文を用いること。

10 20 30 40 50

Page 108: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習5-3 [プロジェクト] pra5-3

int[] num = {10,20,30,40,50};for(int n : num){System.out.println(n);}

Page 109: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習5-4 [プロジェクト] pra5-4

まずint型配列aを、int[] a={10, 20, 30, 40, 50}; として初期化し、 配列aと同じ要素数を格納できるint型一次元配列bを宣言する。 ループを利用し、配列bの各要素に配列aの要素を 逆順に格納するプログラムを作成せよ。 結果は配列aと配列bの各要素を拡張for文を使って同時に画面表示すること。

aの要素を順に表示します。 10 20 30 40 50 bの要素を順に表示します。 50 40 30 20 10

Page 110: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

練習5-4 [プロジェクト] pra5-4

int[] a = {10,20,30,40,50};int[] b = new int[5];

for(int i=0; i<a.length; i++){b[b.legth-1—i]=a[i];}

System.out.println(“aの要素を表示します”);for(int num : a){System.out.print(a + “ ”);}System.out.println(“bの要素を表示します”);for(int num : b){System.out.print(b + “ ”);}

Page 111: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例5-3 [プロジェクト] ex5-3

次のコードを実行してみよ。何が起こるか?

int[] num = {1,1,1,1,1};

for(int i=1; i<=5; i++){System.out.println(num[i]);}

Page 112: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例5-3 [プロジェクト] ex5-3

❒❒❒❒❒num[0][1][2][3][4]1 1 1 1 1

Page 113: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例5-3 [プロジェクト] ex5-3

❒❒❒❒❒num[0][1][2][3][4]1 1 1 1 1

for(int i=1; i<=5; i++){System.out.println(num[i]);}

Page 114: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例5-3 [プロジェクト] ex5-3

❒❒❒❒❒num[0][1][2][3][4]1 1 1 1 1

for(int i=1; i<=5; i++){System.out.println(num[i]);} num[1]

num[2] num[3] num[4] num[5]

Page 115: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例外

ArrayIndexOutOfBoundsException

Page 116: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

例外

ArrayIndexOutOfBoundsException

配列の外のデータを参照

Page 117: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

舞台裏int[] a = {1,2,3};int[] b;

b=a;b[0]=100;

System.out.println(a[0]);

Page 118: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

舞台裏

Page 119: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

配列変数の正体

配列変数は 先頭の要素の「メモリ番地」 (アドレス)をあらわす。

Page 120: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

舞台裏

Page 121: 制御構造 - Haikara Cityhaikara-city.com/wp-content/uploads/2019/04/array.pdf[プロジェクト] pra5-1 配列は勝手に初期化 配列の各要素は勝手に初期化される。int,

どんどん質問を!! 演習5