変数を一度にたくさん宣言するよ! これがどこで生かせるか、わかるかな? 第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
© Copyright 2024 ExpyDoc