プログラミング
A
第6回 配列
2016年5月23日 東邦大学 金岡 晃
講義
/
演習の進め方と中間試験•
講義/
演習の進め方–
講義→
演習というスタイルで進めます–
内容やみなさんの進捗度合によって柔軟に変更します
–
授業の最後に課題を出すようにします•
課題の提出をもって、出席のカウント とします•
中間試験–
第8
回目(5
月30
日6
月13
日)に実施します
•
なお、6
月6
日は金岡グループは休講で す(ほかのグループは講義・演習があ ります)–
内容は第1
回目から第7
回目までの内容講義
演習
講義
演習
課題
前回の復習(1)
2 2016/5/23 プログラミングA
このプログラムは
作成・実行しなくても良いです。
前回の復習(2) このプログラムは
作成し実行してください
前回の復習(3)
4 2016/5/23 プログラミングA
このプログラムは
作成し実行してください
前回の復習
•
条件–
関係演算子、論理演算子•
条件に従ったプログラミング– if, else
– switch
•
繰り返し– for
– while, do
~while
– break, continue
配列
6 2016/5/23 プログラミングA
こういうプログラムを作りたい
ある教科のテスト
受講者120名の各学生のデータを記憶して、
その合計点と平均点を求めたい
これまで習ったもので実現できないことはない
たとえば
2016/5/23 プログラミングA
8
120個の変数を、それぞれの別の名前で用意する
配列
“120人のそれぞれの学生の
点数を記憶したい” 全部おなじ型
配列
同じ型の値を複数まとめて記憶する
• 配列の宣言 :配列を扱う変数を用意する
• 配列要素の確保 :値を格納するエリア(箱)を用意する
型名[] 配列変数名;
配列変数名 = new 型名[要素数];
配列の書式
配列プログラムの例
2016/5/23 プログラミングA
10
配列の使い方
型名[] 配列変数名;
配列変数名 = new 型名[要素数];
配列の書式
score[0], score[1], score[2], score[3], score[4], score[5], score[6], score[7], score[8], score[9]
という10個のint型の変数 を用意した
添え字
(インデックス) 0番から始まり、
ポイント
配列への値の代入
2016/5/23 プログラミングA
12
通常の変数と同様に
score[0] = 100;
score[1] = 120;
なぜ配列が便利か?
複数の変数を一括で準備できる
後で変更が容易
添え字を使ってまとめて処理ができる
配列の宣言:他のやり方
2016/5/23 プログラミングA
14
型名[] 配列変数名;
配列変数名 = new 型名[要素数];
配列の書式
この他にも
型名[] 配列変数名 = new 型名[要素数];
配列の初期化
通常の変数と同様、
初期化が必要
別の手段もある
自動的に
配列要素を初期化・確保 score[0] = 10, score[1] = 20, … と
score[0], score[1], score[2], score[3], score[4]が用意される
配列のコピー
2016/5/23 プログラミングA
16
このプログラムを
作成し実行してください
出力は?
配列のコピー:注意すべき点
2016/5/23 プログラミングA
18
aをbにコピーしてから aを変更しても
bに変化はない
arrayAをarrayBにコピーしてから arrayAを変更すると
arrayBも変化する
配列の応用(1):配列の長さを求める
配列変数名.length 配列の長さ
後で変更が容易 何が便利?
配列の応用(1)
2016/5/23 プログラミングA
20
作成・実行する 必要はありません。
Sample6_4と一部分しか 変わりません
配列の応用(1)
こうしておけば
配列のサイズ(要素数)を いくつにして変更しても このfor文の部分を変更する 必要がなくなる
配列の応用(2):多次元配列
2016/5/23 プログラミングA
22
多次元配列の書式(2次元の場合)
型名[][] 配列変数名;
配列変数名 = new 型名[要素数] [要素数];
score[0][0] = 100;
score[0][1] = 120;
score[0][2] = 130;
score[1][0] = 140;
…
代入
初期化
int[][] score = { {100,120,130}, {140, 150, 160} };
int[][] score;
score = new int[2][3];
配列の応用(2)
0 1 2 3 4
0 53 58 76 68 43
1 43 51 46 61 31
配列の応用(2):多次元配列
2016/5/23 プログラミングA
24
2次元配列のイメージ
2×5の表(あるいは行列)
2行目、3列目の要素は46です score[1][2] = 46;
来週から
•
演習を中心とした講義•
これまでの内容を駆使してプログラムを作成–
ポイントを事前に解説今日の課題
1.
キーボードから10
人分のテストの点数を入力させ、その10
人の点数 と偏差値を出力するプログラムを作成してください2. 4x4
の形の2
次元配列A
の内容を準備し、同じく4x4
の形の2
次元配列B
に、下図のように90
度回転するようにして移すプログラムを作れ26 2016/5/23 プログラミングA
𝑖番の人の偏差値 = 10 𝑥𝑖 − 𝜇𝑥
𝜎𝑥 + 50
𝜇𝑥 = 1 𝑁 𝑖=1
𝑁
𝑥𝑖 𝜎𝑥 = 1
𝑁 𝑖=1 𝑁
𝑥𝑖 − 𝜇𝑥 2
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
平均 標準偏差
Java
での平方根(ルート)の使い方double k = 2.0 double l = 0;
// l
にk
の平方根を代入するl = Math.sqrt(k);
今日の課題
•
提出先– [email protected]
•
件名–
プログラミングA
:第6
回•
注意–
かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTA
に見せて確認を受けてから帰ってくださ い。–
ソースコード(java
ファイル)を添付してください2016/5/23 プログラミングA
28