第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2...

18
情報科学 B 7 配列 1 情報科学B 7配列

Upload: others

Post on 09-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

情報科学B

第7回 配列

1情報科学B 第7回 配列

Page 2: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

今日やること

2情報科学B 第7回 配列

同じ形の箱をたくさん用意したい場合に

はどうしたらよいか?情報科学B

Info2/3・・・

Example7_1.java

info7

←今日のフォルダー作成

プログラムの1行目に以下を入れること// vm12345 杉崎 えり子

Page 3: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

3

配列(1次元)

例えば、クラスにいる5人の学生のテスト結果を変数に

保存し、平均点を求めたい。

情報科学B 第7回 配列配列

1個ずつ同じ箱を用意するのは面倒なので、こんな感じの箱の塊を用意できないか?

test1 test2 test3 test5

名前はtest ・・・・・

80 60 22 75・・・・・

80 60 22 75

プログラムに1個ずつ宣言するのは面倒

↑大きな箱が小分けされている。

Page 4: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

4

配列の宣言

配列要素の確保

int test[ ];

test = new int[5];

test

test

int test[ ]で配列の宣言

test=new int[5]で配列要素の確保

test[0] test[1] test[2]test[3]test[4]先頭の目印

今までの宣言の例:int x;double a;

など←「testは配列」と宣言

←実際にtestの箱を5個確保する

先頭アドレス

←testの箱の中には配列要素(test[0]など)が存在する場所の住所が入っている

配列変数への代入①

Page 5: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

5

配列変数への代入①

test

test[0] test[1] test[2] test[3] test[4]

←配列要素の先頭アドレスが保管されている

先頭アドレス(「アパートの番地と1号室」みたいなもの)

int test[ ] = new int [5];または、

int[ ] test = new int [5];と書いてもOK

int test[ ];test = new int[5];

空の配列ができたので次は値を代入したい

↓アパートみたいなもの

Page 6: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

6

配列変数への代入①

先頭アドレス

test

test[0] test[1] test[2] test[3] test[4]

←配列要素の先頭アドレスが保管されている

80 60 22 50 75

test[0]=80;test[1]=60;test[2]=22;test[3]=50;test[4]=75;

Page 7: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

7

配列変数への代入①

実行結果

int test[ ] = {80, 60, 22, 50, 75};でもOK

情報科学B 第7回 配列

7

実行結果のように表示させる(自分で考える)

Example7_1.java

Page 8: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

配列変数

8

test

test[0] test[1] test[2] test[3] test[4]

80 60 22 50 75

int x, y=5;x=y;

変数の中身をコピー

x

5y

5

int test[ ]={80, 60, 22, 50, 75};int test2[ ]test2=test;

test2

変数の中身をコピーつまり、アドレスがコピーされる

つまり、同じ配列要素を指し示すことになる

普通の変数配列変数への代入②

Page 9: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

9

配列変数への代入②

情報科学B 第7回 配列

実行結果

test2は配列変数だけ用意配列変数test2にtest1を代入

test

test2

80 60 22 50 75

test[0] test[1] test[2]test[3]test[4]

先頭の目印をコピー

先頭アドレス

7_1 {

Page 10: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

10

練習1

① dataという名前のint型1次元配列に、23、41、55、

18、26が入力されている。最大値を表示させるプ

ログラムを作成しなさい。

② キーボードから3人分の英語のテスト結果を入力

し、その平均値を表示させなさい。

情報科学B 第7回 配列

Example7_2.java

実行結果例

Example7_3.java

読み込まれた値は配列に代入

Page 11: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

11

2次元配列

情報科学B 第7回 配列

test[0]test[0][0] test[0][1] test[0][2] test[0][3] test[0][4]

test[1]

test[1][0] test[1][1] test[1][2] test[1][3] test[1][4]

testint test[ ][ ];test = new int[2][5];またはint test[ ][ ] = new int[2][5];またはint[ ][ ] test = new int[2][5];

先頭アドレス

←アパート(1F)みたいなもの

↓アパート(2F)みたいなもの

「アパートの番地と1F」みたいなもの

「1Fの1号室」みたいなもの

「2Fの1号室」みたいなもの

Page 12: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

12

2次元配列

情報科学B 第7回 配列

実行結果

国語

英語

7_4

実行結果のように表示させる(自分で考える)

Page 13: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

test[0]

13情報科学B 第7回 配列

test.length➡長さは2

test[0].length ➡長さは5

test[1][0] test[1][1] test[1][2] test[1][3] test[01 [4]

test[1]

test[0][0] test[0][1] test[0][2] test[0][3] test[0][4]

test

配列の長さ

2

5

test.length

test[0].length

Page 14: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

14

配列の長さ配列の長さを使って入力したデータを表示させる

情報科学B 第7回 配列

実行結果

Ans_Example7_4.java

Example7_4.javaを修正

2 5

7_4{

Page 15: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

15

ファイルからのデータ読み込みデータをプログラムに書くのではなく、ファイルから読

み込ませたい

情報科学B 第7回 配列

① 新規作成でdata.txtを作成し、縦に好きな数字5個

入力する。

② 次ページのように、 Example7_1.javaを

修正してExample7_1_w_dataを作る。 data.txt

Page 16: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

16

ファイルからのデータ読み込み

情報科学B 第7回 配列

import java.io.*;

public class Example7_1_w_data {public static void main(String[] args) {

try {BufferedReader br =new BufferedReader(new FileReader("data.txt"));

String str;

int test[];test = new int[5];

for(int i=0; i<test.length; i++) {str=br.readLine();test[i]=Integer.parseInt(str);

}

for(int i=0; i<5; i++) {System.out.println("test["+i+"]=" + test[i]);

}

br.close();}

catch(IOException e) {System.out.println("Error");

}}

}

Ans_Example7_1_w_data.java

赤字追記部分

実行結果

Page 17: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

17

練習2

① 2次元配列a[5,5]の対角線上の要素すべて1とし、

他の要素はすべて0にするプログラムをfor文を

使って作成しなさい。

② 配列aに数値10、13、17、4、23を初期値設定し、

これらの合計と平均を求めなさい。

情報科学B 第7回 配列

Kadai7_1.java←提出課題

kadai7_2.java

次回授業前までにアップロードを完成させておくこと

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1i==jのとき1を代入

i

j

Page 18: 第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2 情報科学B 第7回配列 じ形の箱をたくさん用意したい場合に はどうしたらよいか?

・最高点、最低点を出す・『最高点でない』かつ『最低点でない』とき足し算

18

練習2

③ 大きさが9行9列で整数型の2次元配列kukuの各要素

に九九を計算してその値を格納した後、表示させなさ

い。

④ ある競技で5人の審判がつけた0から10までの点数を

配列へ入力して、最高点と最低点を除いた残りの点

数の平均値を求めてそれを表示しなさい。kadai7_4.java

kadai7_3.java

情報科学B 第7回 配列

実行結果例