プログラミング
A
第6回 配列
2018年5月21日 東邦大学 金岡 晃
講義
/
演習の進め方と中間試験•
講義/
演習の進め方–
講義→
演習というスタイルで進めます–
内容やみなさんの進捗度合によって柔軟に変更します
–
授業の最後に課題を出すようにします•
課題の提出をもって、出席のカウント とします•
中間試験–
次回、第7
回目(5
月28
日)に実施します–
内容は第1
回目から第6
回目までの内容講義
演習
講義
演習
課題
提出
配列
2 2018/5/21 プログラミングA
こういうプログラムを作りたい
ある教科のテスト
受講者120名の各学生のデータを記憶して、
その合計点と平均点を求めたい
これまで習ったもので実現できないことはない
たとえば
2018/5/21 プログラミングA
4
120個の変数を、それぞれの別の名前で用意する
配列
“120人のそれぞれの学生の
点数を記憶したい” 全部おなじ型
配列
同じ型の値を複数まとめて記憶する
• 配列の宣言 :配列を扱う変数を用意する
• 配列要素の確保 :値を格納するエリア(箱)を用意する
型名[] 配列変数名;
配列変数名 = new 型名[要素数];
配列の書式
配列プログラムの例
2018/5/21 プログラミングA
6
配列の使い方
型名[] 配列変数名;
配列変数名 = new 型名[要素数];
配列の書式
score[0], score[1], score[2], score[3], score[4], score[5], score[6], score[7], score[8], score[9]
という10個のint型の変数 を用意した
添え字
(インデックス)
が付く
0番から始まり、
(要素数-1)番で終わる ポイント
配列への値の代入
2018/5/21 プログラミングA
8
通常の変数と同様に
score[0] = 100;
score[1] = 120;
なぜ配列が便利か?
複数の変数を一括で準備できる
後で変更が容易
添え字を使ってまとめて処理ができる
配列の宣言:他のやり方
2018/5/21 プログラミングA
10
型名[] 配列変数名;
配列変数名 = new 型名[要素数];
配列の書式
この他にも
型名[] 配列変数名 = new 型名[要素数];
配列の初期化
通常の変数と同様、
初期化が必要
別の手段もある
自動的に
配列要素を初期化・確保 score[0] = 10, score[1] = 20, … と
保存される
score[0], score[1], score[2], score[3], score[4]が用意される
配列のコピー
2018/5/21 プログラミングA
12
このプログラムを
作成し実行してください
出力は?
配列のコピー:注意すべき点
2018/5/21 プログラミングA
14
aをbにコピーしてから aを変更しても
bに変化はない
arrayAをarrayBにコピーしてから
arrayAを変更すると
arrayBも変化する
配列の応用(1):配列の長さを求める
配列変数名.length 配列の長さ
後で変更が容易 何が便利?
配列の応用(1)
2018/5/21 プログラミングA
16
作成・実行する 必要はありません。
Sample6_4と一部分しか
変わりません
配列の応用(1)
こうしておけば
配列のサイズ(要素数)を いくつにして変更しても このfor文の部分を変更する 必要がなくなる
配列の応用(2):多次元配列
2018/5/21 プログラミングA
18
多次元配列の書式(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):多次元配列
2018/5/21 プログラミングA
20
2次元配列のイメージ
2×5の表(あるいは行列)
2行目、3列目の要素は46です score[1][2] = 46;
再来週から
•
演習を中心とした講義•
これまでの内容を駆使してプログラムを作成–
ポイントを事前に解説今日の課題(1)
1.
キーボードから10
人分のテストの点数を入力させ、その10
人の点数 と偏差値を出力するプログラムを作成してください22 2018/5/21 プログラミングA
𝑖番の人の偏差値 = 10 𝑥𝑖 − 𝜇𝑥
𝜎𝑥 + 50 𝜇𝑥 = 1
𝑁
𝑖=1 𝑁
𝑥𝑖 𝜎𝑥 = 1
𝑁
𝑖=1 𝑁
𝑥𝑖 − 𝜇𝑥 2
平均 標準偏差
今日の課題(2)
2.
次の仕様に従って、生徒の科目得点から平均点と評価を求め、実行 結果のように画面表示するプログラムを作成してください1.
生徒番号を1
次元配列、科目点数を2
次元配列として、初期値を 与える(初期値は下の表の通り)2.
各人の4
科目の平均点を求める生徒番号 国語 数学 理科 社会 1001 85 74 63 90 1002 78 65 70 62 1003 89 92 88 76 1004 32 48 66 25 1005 92 76 81 93
Java
での平方根(ルート)の使い方double k = 2.0 double l = 0;
// l
にk
の平方根を代入するl = Math.sqrt(k);
2018/5/21 プログラミングA
24
今日の課題