プログラミングa - ホーム ·...

26
プログラミングA 6配列 2019年5月20日 東邦大学 金岡 晃

Upload: others

Post on 31-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

プログラミングA第6回 配列

2019年5月20日

東邦大学 金岡 晃

Page 2: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

講義/演習の進め方と中間試験

• 講義/演習の進め方

– 講義→演習というスタイルで進めます

– 内容やみなさんの進捗度合によって柔軟に変更します

– 授業の最後に課題を出すようにします

• 課題の提出をもって、出席のカウントとします

• 中間試験

– 次回、第7回目(5月27日)に実施します

– 内容は第1回目から第6回目までの内容

1

講義

演習

講義

演習

課題

提出

2019/5/20 プログラミングA

Page 3: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列

2 2019/5/20 プログラミングA

Page 4: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

こういうプログラムを作りたい

2019/5/20 プログラミングA3

ある教科のテスト

受講者120名の各学生のデータを記憶して、その合計点と平均点を求めたい

これまで習ったもので実現できないことはない

Page 5: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

たとえば

2019/5/20 プログラミングA4

120個の変数を、それぞれの別の名前で用意する

Page 6: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列

2019/5/20 プログラミングA5

“120人のそれぞれの学生の点数を記憶したい” 全部おなじ型

配列

同じ型の値を複数まとめて記憶する

• 配列の宣言 :配列を扱う変数を用意する• 配列要素の確保 :値を格納するエリア(箱)を用意する

型名[] 配列変数名;配列変数名 = new 型名[要素数];

配列の書式

Page 7: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列プログラムの例

2019/5/20 プログラミングA6

Page 8: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列の使い方

2019/5/20 プログラミングA7

型名[] 配列変数名;配列変数名 = 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)番で終わる

ポイント

Page 9: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列への値の代入

2019/5/20 プログラミングA8

通常の変数と同様に

score[0] = 100;score[1] = 120;

Page 10: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

なぜ配列が便利か?

2019/5/20 プログラミングA9

複数の変数を一括で準備できる

後で変更が容易

添え字を使ってまとめて処理ができる

Page 11: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列の宣言:他のやり方

2019/5/20 プログラミングA10

型名[] 配列変数名;配列変数名 = new 型名[要素数];

配列の書式

この他にも

型名[] 配列変数名 = new 型名[要素数];

Page 12: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列の初期化

2019/5/20 プログラミングA11

通常の変数と同様、初期化が必要

別の手段もある

自動的に配列要素を初期化・確保

score[0] = 10, score[1] = 20, … と保存される

score[0], score[1], score[2], score[3], score[4]が用意される

Page 13: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列のコピー

2019/5/20 プログラミングA12

このプログラムを作成し実行してください

Page 14: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

出力は?

2019/5/20 プログラミングA13

Page 15: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列のコピー:注意すべき点

2019/5/20 プログラミングA14

aをbにコピーしてからaを変更してもbに変化はない

arrayAをarrayBにコピーしてからarrayAを変更するとarrayBも変化する

Page 16: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列の応用(1):配列の長さを求める

2019/5/20 プログラミングA15

配列変数名.length

配列の長さ

後で変更が容易

何が便利?

Page 17: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列の応用(1)

2019/5/20 プログラミングA16

作成・実行する必要はありません。

Sample6_4と一部分しか変わりません

Page 18: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列の応用(1)

2019/5/20 プログラミングA17

こうしておけば配列のサイズ(要素数)をいくつにして変更してもこのfor文の部分を変更する必要がなくなる

Page 19: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列の応用(2):多次元配列

2019/5/20 プログラミングA18

多次元配列の書式(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];

Page 20: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

配列の応用(2)

2019/5/20 プログラミングA19

Page 21: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

0 1 2 3 4

0 53 58 76 68 43

1 43 51 46 61 31

配列の応用(2):多次元配列

2019/5/20 プログラミングA20

2次元配列のイメージ

2×5の表(あるいは行列)

2行目、3列目の要素は46です

score[1][2] = 46;

Page 22: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

再来週から

• 演習を中心とした講義

• これまでの内容を駆使してプログラムを作成

– ポイントを事前に解説

2019/5/20 プログラミングA21

Page 23: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

今日の課題(1)1. キーボードから10人分のテストの点数を入力させ、その10人の点数

と偏差値を出力するプログラムを作成してください

22 2019/5/20 プログラミングA

𝑖番の人の偏差値 =10 𝑥𝑖 − 𝜇𝑥

𝜎𝑥+ 50

𝜇𝑥 =1

𝑁

𝑖=1

𝑁

𝑥𝑖 𝜎𝑥 =1

𝑁

𝑖=1

𝑁

𝑥𝑖 − 𝜇𝑥2平均 標準偏差

Page 24: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

今日の課題(2)

2019/5/20 プログラミングA23

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

Page 25: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

Javaでの平方根(ルート)の使い方

double k = 2.0

double l = 0;

// l に k の平方根を代入する

l = Math.sqrt(k);

2019/5/20 プログラミングA24

Page 26: プログラミングA - ホーム · –かならず、メールで提出してから帰ってください。また提出前 に実行画面を、私かTAに見せて確認を受けてから帰ってくださ

今日の課題

• 提出先

[email protected]

• 件名

– プログラミングA:第6回

• 注意

– かならず、メールで提出してから帰ってください。また提出前に実行画面を、私かTAに見せて確認を受けてから帰ってください。

– ソースコード(javaファイル)を添付してください

2019/5/20 プログラミングA25