19
第6第 第第第第第第第第第第第第第!? 第第第 ~~ 変変変 変変変変変変変変変変変変 一! 変変変変変変変変変変変 変変変変変変 、? 変6変 変変 1

第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

  • Upload
    chance

  • View
    49

  • Download
    2

Embed Size (px)

DESCRIPTION

第 6 章 この 辺りからややこしくなる!? ~ 配列 ~. 変数を一度にたくさん宣言するよ! これ がどこで生かせるか、わかるかな?. 前回やったこと. 反復処理を やるもう一つの方法 for 文 for 文の中に for 文を書くことで 2 重ループ を作れる 2 重ループは for-for 、 for-while 、 while-while 、 while-for でもできる. 今日 の予定. 配列とは 宣言 、初期化の仕方 繰り返しを使った上手い初期化の仕方 2 次元配列とは 宣言、初期化の仕方. 配列とは (1). - PowerPoint PPT Presentation

Citation preview

Page 1: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

第 6 章この辺りからややこしくなる!?

~配列~変数を一度にたくさん宣言するよ!

これがどこで生かせるか、わかるかな?

第 6  章 配列 1

Page 2: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

第 6  章 配列 2

前回やったこと

反復処理をやるもう一つの方法 for  文

for  文の中に for  文を書くことで 2 重ループを作れる

2 重ループは for-for 、 for-while 、 while-while 、 while-for  でもできる

Page 3: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

配列とは宣言、初期化の仕方

繰り返しを使った上手い初期化の仕方

2 次元配列とは宣言、初期化の仕方

第 6  章 配列 3

今日の予定

Page 4: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

変数の後ろに『 [5] 』などをつけ、宣言をすることで、同じ大きさの変数を複数一気に宣言することができる

例:

こうしてできた変数の集まりを 配列 という

配列でできる変数の個数は『 [] 』内の数値分と同じ!

第 6  章 配列 4

配列とは (1)

int num[5];

Page 5: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

さっきの『 int num[5];  』だと、 変数『 num[0] ~ [4] 』が作られる

一つひとつが立派な変数だから、 ちゃんと数値の代入や、初期化( 最初の値を決めること)ができる

数値の代入はこんな感じにやるよ↓

第 6  章 配列 5

配列とは (2)num[0]num[1]num[2]num[3]num[4]

↑ 0  から始まる のに注意

num[0] = 1; num[1] = 2;

Page 6: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

配列の初期化はちょっとややこしい

これで→と同じことができた

ただ『 {} 』内の数値は配列の 個数より多くてはエラーが出る し、この方法は宣言と同時でないとできない仕 様なんだ

第 6  章 配列 6

配列とは (3)

   int num[5] = { 1, 2, 345, 67, 890};

num[0] = 1;num[1] = 2;num[2] = 345;num[3] = 67;num[4] = 890;

『 , 』で区切ってね

だからただの代入で初期化することも多い

Page 7: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

説明が長くなっちゃったけど、ひとまず下のプログラムを実行してみよう

第 6  章 配列 7

配列とは (4)

#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]);}

Page 8: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

実行結果はこんな感じ

また『 [] 』内の数値を変数に置き換えることもできるよ

例:

第 6  章 配列 8

配列とは (5)

int num[10]int i = 7; 

num[i] = 3;

これで『 num[7] = 3; 』と同じことになった

Page 9: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

実は変数は宣言すると、 PC 内のメモリ上に領域を確保するようになっている

普通の変数では、宣言の度に領域の場所がバラバラだったけど、配列はつながって確保するようになっているよ

第 6  章 配列 9

配列とは (6)

只の宣言

配列

変数として、これだけ使わせてください、という感じ

つながってるのが重要!!

Page 10: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

以下のように、入力した数値を出力 ( 表示 ) するプログラムを書いてみよう

繰り返し for  文を使い、上手いこと記述を少なくできるかな?

第 6  章 配列 10

練習問題 1

ヒント:printf(“num[%d}”, i );

Page 11: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

このように繰り返しを利用し、配列の初期化をすることはよくあるから覚えて損無し!

第 6  章 配列 11

練習問題 1 回答例

#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]);

}

Page 12: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

さっきやった配列はタテにつながっていたけど、それをヨコにもつなげることができる

これを 2 次元配列といい、それに対応して、普通の配列を 1 次元配列ということもある

書き方はこんな感じ

左の『 [] 』がタテ軸、右がヨコ軸にあたるよ

第 6  章 配列 12

2 次元配列とは (1)

次頁図で説明

int num[4][3];

Page 13: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

視覚的にわかりやすくすると、こんな感じ

勿論これら一つひとつが変数だから、代入・初期化ができるし、必要になるよ

第 6  章 配列 13

2 次元配列とは (2)

1 次元配列 2 次元配列

Page 14: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

代入は

初期化は

それぞれ下のように数値が格納されているのでチェックしてね

第 6  章 配列 14

2 次元配列とは (3)

int a[2][2] = { {1, 23}, {456, 7} };

num[0][2] = 5;

Page 15: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

以下と同じような実行結果になるよう行列(数学 C )の和計算を行うプログラムを作ってみよう

ちなみに『 %d 』の代わ りに『 %3d 』を使うを 間が 3 スペース分空かせて 数字を表示できる

第 6  章 配列 15

練習問題 2

Page 16: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

あまりに 長いので、 2 ページ使 います

第 6  章 配列 16

練習問題 2 回答例その 1#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]);

}}

Page 17: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

それぞれの for  文がどこまで続いているのか、printf  内でどんな処理をしているのかに注目!

行列のあのカタチと、この味気ないコード(記述)がうまく頭で合わさるといいですね

第 6  章 配列 17

練習問題 2 回答例その 2

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");}

}

私は文系で行列計算なんて習ってないので、簡単なことしか知りません。あしからず

Page 18: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

『 int  型』以外の変数のこと

データ型、 double  型(など)の登場!!

第 6  章 配列 18

次回予告

int num = 3;

Page 19: 第 6 章 この 辺りからややこしくなる!? ~ 配列 ~

テンプレ

第 6  章 配列 19

テンプレ