第7回配列 - 北里大学sugisaki/old/2017/... · 2017. 10. 30. · 今日やること 2...
TRANSCRIPT
情報科学B
第7回 配列
1情報科学B 第7回 配列
今日やること
2情報科学B 第7回 配列
同じ形の箱をたくさん用意したい場合に
はどうしたらよいか?情報科学B
Info2/3・・・
Example7_1.java
info7
←今日のフォルダー作成
プログラムの1行目に以下を入れること// vm12345 杉崎 えり子
3
配列(1次元)
例えば、クラスにいる5人の学生のテスト結果を変数に
保存し、平均点を求めたい。
情報科学B 第7回 配列配列
1個ずつ同じ箱を用意するのは面倒なので、こんな感じの箱の塊を用意できないか?
test1 test2 test3 test5
名前はtest ・・・・・
80 60 22 75・・・・・
80 60 22 75
プログラムに1個ずつ宣言するのは面倒
↑大きな箱が小分けされている。
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]など)が存在する場所の住所が入っている
配列変数への代入①
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];
空の配列ができたので次は値を代入したい
↓アパートみたいなもの
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;
7
配列変数への代入①
実行結果
int test[ ] = {80, 60, 22, 50, 75};でもOK
情報科学B 第7回 配列
7
実行結果のように表示させる(自分で考える)
Example7_1.java
配列変数
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
変数の中身をコピーつまり、アドレスがコピーされる
つまり、同じ配列要素を指し示すことになる
普通の変数配列変数への代入②
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 {
10
練習1
① dataという名前のint型1次元配列に、23、41、55、
18、26が入力されている。最大値を表示させるプ
ログラムを作成しなさい。
② キーボードから3人分の英語のテスト結果を入力
し、その平均値を表示させなさい。
情報科学B 第7回 配列
Example7_2.java
実行結果例
Example7_3.java
読み込まれた値は配列に代入
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号室」みたいなもの
12
2次元配列
情報科学B 第7回 配列
実行結果
国語
英語
7_4
実行結果のように表示させる(自分で考える)
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
14
配列の長さ配列の長さを使って入力したデータを表示させる
情報科学B 第7回 配列
実行結果
Ans_Example7_4.java
Example7_4.javaを修正
2 5
7_4{
15
ファイルからのデータ読み込みデータをプログラムに書くのではなく、ファイルから読
み込ませたい
情報科学B 第7回 配列
① 新規作成でdata.txtを作成し、縦に好きな数字5個
入力する。
② 次ページのように、 Example7_1.javaを
修正してExample7_1_w_dataを作る。 data.txt
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
赤字追記部分
実行結果
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
・最高点、最低点を出す・『最高点でない』かつ『最低点でない』とき足し算
18
練習2
③ 大きさが9行9列で整数型の2次元配列kukuの各要素
に九九を計算してその値を格納した後、表示させなさ
い。
④ ある競技で5人の審判がつけた0から10までの点数を
配列へ入力して、最高点と最低点を除いた残りの点
数の平均値を求めてそれを表示しなさい。kadai7_4.java
kadai7_3.java
情報科学B 第7回 配列
実行結果例