PowerPoint プレゼンテーション - Multi Media Club

変数を一度にたくさん宣言するよ!
これがどこで生かせるか、わかるかな?
第6章 配列
1



反復処理をやるもう一つの方法 for 文
for 文の中に for 文を書くことで2重ループを作
れる
2重ループは for-for、for-while、while-while、
while-for でもできる
第6章 配列
2

配列とは
宣言、初期化の仕方
繰り返しを使った上手い初期化の仕方

2次元配列とは
宣言、初期化の仕方
第6章 配列
3

変数の後ろに『[5]』などをつけ、宣言をするこ
とで、同じ大きさの変数を複数一気に宣言する
ことができる
int num[5];

例:

こうしてできた変数の集まりを 配列 という

配列でできる変数の個数は『[]』内の数値分と
同じ!
第6章 配列
4
num[0]
num[1]
num[2]
num[3]
num[4]
さっきの『 int num[5]; 』だと、
変数『num[0]~[4]』が作られる

一つひとつが立派な変数だから、
ちゃんと数値の代入や、初期化(
最初の値を決めること)ができる


↑ 0 から始まる
のに注意
数値の代入はこんな感じにやるよ↓
num[0] = 1;
num[1] = 2;
第6章 配列
5

配列の初期化はちょっとややこしい
int num[5] = { 1, 2, 345, 67, 890};
『,』で区切ってね

これで→と同じことができた
num[0]
num[1]
num[2]
num[3]
num[4]
=
=
=
=
=
1;
2;
345;
67;
890;
ただ『{}』内の数値は配列の
個数より多くてはエラーが出る
し、この方法は宣言と同時でないとできない仕
様なんだ

だからただの代入で初期化することも多い
第6章 配列
6

説明が長くなっちゃったけど、ひとまず下のプ
ログラムを実行してみよう
#inlude <stdio.h>
void main(){
int num[4] = { 1, 9, 3, 6 };
int a;
a = num[0] * num[2];
printf(“%d\n”, a );
num[0] = num[1] + a ;
printf(“%d\n”, num[0] + num[3]);
}
第6章 配列
7

実行結果はこんな感じ
また『[]』内の数値を変数に置き換えることも
できるよ
int num[10]
int i = 7;
これで『num[7] = 3;』
 例:

と同じことになった
num[i] = 3;
第6章 配列
8

実は変数は宣言すると、PC内のメモリ上に領域
を確保するようになっている
変数として、これだけ使わせてください、という感じ
普通の変数では、宣言の度に領域の場所がバラ
バラだったけど、配列はつながって確保するよ
うになっているよ
つながってるのが重要!!

只の宣言
配列
第6章 配列
9
以下のように、入力した数値を出力(表示)する
プログラムを書いてみよう
 繰り返し for 文を使い、上手いこと記述を少な
くできるかな?

ヒント:
printf(“num[%d}”, i );
第6章 配列
10
#include <stdio.h>
void main(){
int num[4];
for(int i = 0; i < 4; i++){
printf(“num[%d] > ”, i );
scanf("%d", &num[i] );
}
printf("num[0] + num[2] = %d\n", num[0]+num[2]);
printf("num[3] - num[1] = %d\n", num[3]-num[1]);
}

このように繰り返しを利用し、配列の初期化を
することはよくあるから覚えて損無し!
第6章 配列
11



さっきやった配列はタテにつながっていたけど、
それをヨコにもつなげることができる
これを2次元配列といい、それに対応して、普
通の配列を1次元配列ということもある
書き方はこんな感じ
次頁図で説明
int num[4][3];

左の『[]』がタテ軸、右がヨコ軸にあたるよ
第6章 配列
12

視覚的にわかりやすくすると、こんな感じ
1次元配列

2次元配列
勿論これら一つひとつが変数だから、代入・初
期化ができるし、必要になるよ
第6章 配列
13

代入は

初期化は int a[2][2] = { {1, 23}, {456, 7} };

num[0][2] = 5;
それぞれ下のように数値が格納されているので
チェックしてね
第6章 配列
14

以下と同じような実行結果になるよう行列(数
学C)の和計算を行うプログラムを作ってみよ
う
ちなみに『%d』の代わ
りに『%3d』を使うを
間が3スペース分空かせて
数字を表示できる

第6章 配列
15
あまりに
長いので、
2ページ使
います

#include <stdio.h>
void main(){
int a[2][2];
int b[2][2];
int i,j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("a[%d][%d] > ",i,j);
scanf("%d",&a[i][j]);
}
}
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("b[%d][%d] > ",i,j);
scanf("%d",&b[i][j]);
}
}
第6章 配列
16
私は文系で行列
計算なんて習って
ないので、簡単な
ことしか知りません。
あしからず
}
printf("a + b:\n");
for(i=0;i<2;i++){
for(j=0;j<2;j++)
printf("%3d",a[i][j] + b[i][j]);
}
printf("\n");
それぞれの for 文がどこまで続いているのか、
printf 内でどんな処理をしているのかに注目!
 行列のあのカタチと、この味気ないコード(記
述)がうまく頭で合わさるといいですね

第6章 配列
17

『int 型』以外の変数のこと
int num = 3;
データ型、double 型(など)の登場!!
第6章 配列
18

テンプレ
第6章 配列
19