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