プログラミング A
第
6
回 配列2013年6月3日 東邦大学 金岡 晃
前回の復習(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型の変数 を⽤意した
(インデックス)添え字
0
番から始まり、ポイント
配列への値の代⼊
通常の変数と同様に
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
に変化はないarrayA
をarrayB
にコピーしてからarrayA
を変更するとarrayB
も変化する配列の応⽤(1):配列の⻑さを求める
配列変数名
.length
配列の⻑さ後で変更が容易 何が便利?
配列の応⽤(1)
作成・実⾏する必要はありません。
Sample6_4
と⼀部分しか 変わりません配列の応⽤(1)
こうしておけば
配列のサイズ(要素数)を いくつにして変更しても この
for
⽂の部分を変更する 必要がなくなる配列の応⽤(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×5の表(あるいは⾏列)
2⾏⽬、3列⽬の要素は46です score[1][2] = 46;
来週から
• 演習を中⼼とした講義
• これまでの内容を駆使してプログラムを作成
– ポイントを事前に解説
今⽇の課題
1. キーボードから 10 ⼈分のテストの点数を⼊⼒させ、その 10 ⼈の点数 と偏差値を出⼒するプログラムを作成してください
2. 4x4 の形の配列 A の内容を、同じく 4x4 の形の配列 B に、下図のように 90 度回転するようにして移せ
番の⼈の偏差値
10
50
1 1
1 2 3 4
5 6 7 8
9 10 11 12
13 9 5 1
14 10 6 2
15 11 7 3
平均 標準偏差