E-mail and Network

プログラミング入門
• 小テスト (5分ほど)
• 小テストの解答
• 今回の講義内容:
2次元配列
プログラミング入門(第8回)
補講のお知らせ
• 12月に補講を以下の様に致します
– 12月13日 3限 第9回
– 12月22日 2限 第11回
プログラミング入門(第8回)
来週の水曜日
プログラミング入門
•
•
•
•
•
•
•
•
•
•
•
•
•
1
2
3
4
5
6
7
8
9
10
11
12
13
授業概要
プログラムの作成から実行まで (教科書 1.1~1.6, 2.1)
変数と標準入出力 (教科書 3.1~3.2,2.2,2.4,6.4)
演算子 (教科書 4.1~4.9)
制御文,条件判断と分岐 (教科書 5.1~5.2,5.6~5.7)
繰り返し処理 (教科書 5.3~5.5,5.8)
配列と文字列 (教科書 3.3~3.4)
2次元配列 (教科書 3.3)
関数Ⅰ (教科書 7.1~7.3)
関数Ⅱ (教科書 7.4)
構造体 (教科書 9.1)
ファイルの入出力 (教科書 12.1~12.3)
プログラミング評価
プログラミング入門(第8回)
Program language C
• 2 dimension array
今回の学習の目標
•2次元配列とは
•1次元配列と2次元配列との違い
•2次元配列の使い方について
•繰り返しと2次元配列
プログラミング入門(第8回)
1次元配列と2次元配列
1次元配列
[0]
[1]
2次元配列
[0] [1] [2]
[0] [1] [2]
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
[2][0] [2][1] [2][2]
[2]
[0] [1] [2]
1次元配列を複数集めたイメージ
行を表す
プログラミング入門(第8回)
2次元配列の定義
• 2次元配列の定義
• int data [3][3];
ここは行
を指定
ここは列
を指定
行の数値が
変化する
列の数値が
変化する
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
[2][0] [2][1] [2][2]
3×3の各要素が int 型の
配列を定義している
プログラミング入門(第8回)
p.195
行列と配列
• 行列と2次元配列
配列の大きさ
int data [3][3]
3×3行列
a11 a12 a13
a21 a22 a23
a31 a32 a33
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
[2][0] [2][1] [2][2]
要素
要素
注意:配列の大きさの宣言の数と要素の最大の値は異なる!
プログラミング入門(第8回)
2次元配列
Memory address
• 2次元配列
short data
[3][3] ;
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
[2][0] [2][1] [2][2]
それぞれが short 型の変数
short 型 : 16 bit = 2 byte
[0][0]
[0][1]
[0][2]
[1][0]
[1][1]
[1][2]
[2][0]
[2][1]
[2][2]
2次元配列は連続した領域に作られる
プログラミング入門(第8回)
00000 番地
00001 番地
00002 番地
00003 番地
00004 番地
00005 番地
00006 番地
00007 番地
00008 番地
00009 番地
00010 番地
配列要素の指定
•
•
•
•
•
•
data[0][0]
data[10][10]
data[i][j]
data[i+1][j]
data[i][j+1]
data[i+1][j+1]
配列要素の指定には整数が扱える
プログラミング入門(第8回)
float や double型の
変数は使えない
p.196
配列の初期化
記憶クラス データ型 配列名[要素数][要素数] = {
{定数,定数,・・・・・・・,定数},
{定数,定数,・・・・・・・,定数},
......
{定数,定数,・・・・・・・,定数} } ;
int data [3][3] = {
{10, 20, 30},
{40, 50, 60},
{70, 80, 90}
};
プログラミング入門(第8回)
1 次元配列と同
じように考える
配列へのデータの入出力
5x5 の 2 次元配列を宣言.
それぞれの配列に n * m を
計算し入れる.
5x5 の配列に入っている値を
画面に表示する.
ソースファイル名
prog8a.c
[0,0][0,1][0,2][0,3][0,4]
[1,0][1,1][1,2][1,3][1,4]
[2,0][2,1][2,2][2,3][2,4]
[3,0][3,1][3,2][3,3][3,4]
[4,0][4,1][4,2][4,3][4,4]
プログラミング入門(第8回)
結果
0, 0 ->
:
1, 2 ->
:
2, 2 ->
2, 3 ->
:
0
2
4
6
配列へのデータの入出力(例)
5×5の配列を宣言
int i,j ;
変数名は data
int data[5][5] ;
縦方向
for ( i=0 ; i<5 ; i++ ) {
for (j=0 ; j<5 ; j++ ) { 横方向
data [i][j] = i*j ;
}
}
for ( i=0; i<5 ; i++) {
for (j=0; j<5; j++ ) {
printf(“ %d, %d -> %d\n”, i, j,
data[i][j] ) ;
}
}
[0,0][0,1][0,2][0,3][0,4]
[1,0][1,1][1,2][1,3][1,4]
[2,0][2,1][2,2][2,3][2,4]
[3,0][3,1][3,2][3,3][3,4]
[4,0][4,1][4,2][4,3][4,4]
表示部
プログラミング入門(第8回)
結果
0, 0 ->
:
1, 2 ->
:
2, 2 ->
2, 3 ->
:
0
2
4
6
Program language C
• 2 dimension array
今回の学習の目標
•2次元配列とは
•1次元配列と2次元配列との違い
•2次元配列の使い方について
•繰り返しと2次元配列
プログラミング入門(第8回)
課題
• 3×3の2次元配列を用意する
• キーボードから任意の実数を9個入力し,
順番に配列にいれる.([0][0]->[0][1]>[0][2]->....)
• その入力データから3×3の配列の縦と横
のそれぞれの平均(実数でよい)を求め,
画面に表示する.
• 入力データ
– 1.1 1.2 1.3 1.4 1.5 ・・・・
• それぞれの確認データ毎に画面に出力し
た結果とソースファイルをwebrepに登録す
ること
プログラム名 prog8b.c 画面出力 prog8b.txt
• 期限 来週の水曜日まで
プログラミング入門(第8回)
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
[2][0] [2][1] [2][2]
それぞれの平均