pi-6. Javaプログラミングにおけ
るループ処理と配列・リスト操作
1
金子邦彦
(Java マスター講座:基礎から応用まで)
URL: https://www.kkaneko.jp/pro/pi/index.html
2
物体の落下距離: 9.8 × (時間)
2
÷ 2
時間は 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
⇒ 同じ式の計算を 11 回繰り返し
Java プログラム
実行結果
全体まとめ
• for による繰り返し(ループ)
同じ処理や操作を繰り返す
• 拡張 for 文により,リストなどのコレクションに
ついて,繰り返し処理ができる
3
Java プログラム
実行結果
アウトライン
4
番号
項目
復習
6
-1
配列と繰り返し(ループ)
6
-2
リストと繰り返し(ループ),拡張
for
文
6
-3
マップと繰り返し(ループ),拡張
for
文
各自、資料を読み返したり、課題に取り組んだりも行う
この授業では、Java を用いて基礎を学び、マスターする
オブジェクトとメソッド
• メソッド: オブジェクトに属する操作や処理.
• メソッド呼び出しでは,引数を指定することがある.引数
(ひきすう)は,メソッドに渡す値のこと
hero.attack("fence", 36, 26)
5
hero.moveDown()
hero オブジェクト
moveDown() メソッド
間を「.」で区切っている
Java プログラムの書き方
• 代入:オブジェクト名 + 「=」
+ 式または値またはメソッド呼び出し
• メソッドアクセス:オブジェクト名 + 「.」
+ メソッド名 +「()」 (引数を付けることも)
6
x = 100
a = x + 200
enermy1 = hero.findNearestEnemy()
hero.attack(enemy1)
プログラムの例
その他,属性アクセス,関数呼び出し,制御,「*」,
「+」などの演算子,コマンド,定義など
リスト
• リストは,同じ型の要素の並び
• リストの要素には順序がある.0から始まる
番号(添字)が付いている
• 要素の削除,挿入によりサイズが増減する
7
15 8 6 32 23
20
1
3 4
• マップは,キーと値(バリュー)のペア
の集まり
• 同じ値のキーは2回以上登場しない
マップ (Map)
8
キー
値(バリュー)
1
Red
2
Yellow
3
Blue
Java Tutor の起動
① ウェブブラウザを起動する
② Java Tutor を使いたいので,次の URL を開く
https://pythontutor.com/java.html
③ 「Java」をクリック ⇒ 編集画面が開く
9
Java Tutor でのプログラム実行手順
10
(1)「Visualize Execution」をク
リックして実行画面に切り替える
(2)「Last」をクリック.
(3) 実行結果を確認する.
(4)「Edit this code」をク
リックして編集画面に戻る
Java Tutor 使用上の注意点①
• 実行画面で,次のような赤の表示が出ることがある →
無視してよい
過去の文法ミスに関する確認表示
邪魔なときは「Close」
11
Java Tutor 使用上の注意点②
「please wait ... executing」のとき,10秒ほど待つ.
→ 混雑しているときは, 「Server Busy・・・」
というメッセージが出ることがある.
混雑している.少し(数秒から数十秒)待つと自
動で表示が変わる(変わらない場合には,操作を
もう一度行ってみる)
12
Java Tutor でのステップ実行
ステップ実行により,プログラム実行の流れ
を確認できる
13
6-1. 配列と繰り返し(ループ)
14
配列
データの並びで,0から始まる番号(添
字)が付いている
15
演習
資料:17 ~ 18
【トピックス】
• 配列
16
① Java Tutor のエディタで次のプログラムを入れ
る
17
月の日数についてのデータを作る。サイズ 13 の配列.
※ うるう年のことは考えないことにする
9月について表示させてみて確認も行う.
② 実行し,結果を確認する
18
「Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
「Edit this code」をクリックすると,エディタの画面に戻る
結果の
「30」が表示
されるので確認
繰り返し(ループ)
繰り返し(ループ)では,同じ処理や操作を繰
り返す
19
配列の中身の表示(要素は4個ある)
⇒ 表示を 4 回繰り返し
Java プログラム
実行結果
繰り返しのプログラム例
20
「for(i = 0; i <= 3; i++)」のあとに「{」
配列の組み立て
繰り返し
public class YourClassNameHere {
public static void main(String[] args) {
double x[] = {10, 20, 30, 40};
int i;
for(i = 0; i <= 3; i++) {
System.out.println(x[i]);
}
}
}
字下げを行うことで,
プログラムを読みやすくしている
演習
資料:22 ~ 27
【トピックス】
• 配列
• 繰り返し(ループ)
• for
21
① Java Tutor のエディタで次のプログラムを入れ
る
22
配列の中身の表示(要素は4個ある)
⇒ 表示を 4 回繰り返し
② 実行し,結果を確認する
23
「Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
「Edit this code」をクリックすると,エディタの画面に戻る
結果を確認
③ Java Tutor のエディタで次のプログラムを入れ
る
24
物体の落下.0~10秒まで.1秒ごと
④ 実行し,結果を確認する
25
「Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
「Edit this code」をクリックすると,エディタの画面に戻る
ここをドラッグすると,
表示枠が広がる
⑤ Java Tutor のエディタで次のプログラムを入れ
る
26
配列 x のすべての要素の 1.1 倍を y に格納
⑥ 実行し,結果を確認する
27
「Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
「Edit this code」をクリックすると,エディタの画面に戻る
このプログラムは引き続き使用する.消さずに残しておくこと.
演習
資料:29 ~ 30
【トピックス】
• 配列
• 繰り返し(ループ)
• for
• ステップ実行
28
①「Step 1 of 21」と表示されているので,
全部で,ステップ数は 21 あることが分かる
(ステップ数と,プログラムの行数は違うもの)
29
② ステップ実行したいので,「Next」をクリック
しながら,矢印の動きを確認
※「Next」ボタンを何度か押し,それ以上進めな
くなったら終了
30
見どころ
6行目,7行目が
繰り返される
実行が進むと,
y の中身が更新される
6-2. リストと繰り返し(ループ),
拡張 For 文
31
Java の for 文の種類
• for 文: 変数の値を変化させるもの
• 拡張 for 文: コレクション(リストやマップなど)
の要素をたどるためのもの.
32
i の値: 0 → 1 → 2 → 3 → 4
s の値: “15” → “8” → “6” → “32” → “23”
m は、文字列を要素とする
コレクションオブジェクト
演習
資料:34 ~ 35
【トピックス】
• リスト
• ArrayList
• 拡張 for 文
33
① Java Tutor のエディタで次のプログラムを入れる
34
拡張 for 文を使ってみる
② 実行し,結果を確認する
35
「Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
「Edit this code」をクリックすると,エディタの画面に戻る
リストの生成,要素の挿入,拡張 for文
• リストの生成
• 要素の挿入
• 拡張 for 文
36
m: オブジェクト名
Stringは,
要素のクラス名
m: オブジェクト名,add: メソッド, "15": 挿入したい要素
for(String s: m) {
System.out.println(s);
}
m.add("15");
ArrayList<String> m = new ArrayList<String>();
全体まとめ
• 基本データ型 :整数,浮動小数,文字,boolean
(true/falseを扱う)
• 配列は,データの並びで,0から始まる番号(添
字)が付いている
• 条件分岐
• 繰り返し(ループ)
37
全体まとめ
• for による繰り返し(ループ)
同じ処理や操作を繰り返す
• 拡張 for 文により,リストなどのコレクションに
ついて,繰り返し処理ができる
38
Java プログラム
実行結果
関連ページ
• Java プログラミング入門
GDB online を使用
https://www.kkaneko.jp/pro/ji/index.html
• Java の基本
Java Tutor, GDB online を使用
https://www.kkaneko.jp/pro/pi/index.html
• Java プログラム例
https://www.kkaneko.jp/pro/java/index.html
39
資料中のソースコード 6-1
public class YourClassNameHere {
public static void main(String[] args) {
int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
System.out.println(days[9]);
}
}
40
資料中のソースコード 6-1
public class YourClassNameHere {
public static void main(String[] args) {
double x[] = {10, 20, 30, 40};
int i;
for(i = 0; i <= 3; i++) {
System.out.println(x[i]);
}
}
}
41
資料中のソースコード 6-1
public class YourClassNameHere {
public static void main(String[] args) {
double x[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i;
for(i = 0; i <= 10; i++) {
System.out.println((9.8 / 2) * x[i] * x[i]);
}
}
}
42
資料中のソースコード 6-1
public class YourClassNameHere {
public static void main(String[] args) {
double x[] = {8, 6, 4, 2, 3};
double y[] = {0, 0, 0, 0, 0};
int i;
for(i = 0; i <= 4; i++) {
y[i] = x[i] * 1.1;
}
}
}
43
資料中のソースコード 6-2
import java.util.ArrayList;
public class YourClassNameHere {
public static void main(String[] args) {
ArrayList<String> m = new ArrayList<String>();
m.add("15");
m.add("8");
m.add("6");
m.add("32");
m.add("23");
for(String s: m) {
System.out.println(s);
}
}
}
44