配列に格納された数値の総和をもとめるプログラムを実行してみましょう

加算代入演算子+=をつかって配列に格納されている数値の合計を求めてみましょう。

ソーラー「やったね。

配列に数値を格納することができるようになったね。」


#include<stdio.h>


int main(void){


int str[5];

str[0]=1;

str[1]=2;

str[2]=3;

str[3]=4;

str[4]=5;


return 0;

}



アレサ「

このプログラムにおいて


配列宣言

int str[5];

で生成された

配列変数

str[0]

str[1]

str[2]

str[3]

str[4]

には

str[0]=1;

str[1]=2;

str[2]=3;

str[3]=4;

str[4]=5;

により

1

2

3

4

5

が格納されています。


この

数値

1

2

3

4

5

の総和を表示するプログラムを


作製してみましょう。


#include<stdio.h>


int main(void){


int str[5];

str[0]=1;

str[1]=2;

str[2]=3;

str[3]=4;

str[4]=5;


int sum=0;

sum=str[0]+str[1]+str[2]+str[3]+str[4];


printf("配列に格納された数値の合計は%dです\n",sum);


return 0;

}


コンパイル結果


配列に格納された数値の合計は15です


次は

数値

1

2

3

4

5

の総和を表示するプログラムを


加算代入演算子+=をつかって


作製してみましょう。」


#include<stdio.h>


int main(void){

int str[5];

str[0]=1;

str[1]=2;

str[2]=3;

str[3]=4;

str[4]=5;


int sum=0;

sum+=str[0];

sum+=str[1];

sum+=str[2];

sum+=str[3];

sum+=str[4];


printf("配列に格納された数値の合計は%dです\n",sum);

return 0;

}


コンパイル結果


配列に格納された数値の合計は15です


ソーラー「

ここで

int sum=0;

sum+=str[0];

sum+=str[1];

sum+=str[2];

sum+=str[3];

sum+=str[4];

はどのような働きをしているのかな?」


アレサ

「+=は代入演算子で


sum+=str[0];

          🌞いま🌞


変数sumが格納している数値に


配列変数str[0]が格納している数値を足したものを


変数sumに代入しなさい


という命令をコンピュータに与えます。


ですので

まず

int sum=0;


が行われると


変数sumに数値0が代入されます。


そして


sum+=str[0];


がおこなわれると


          🌞いま🌞  



変数sumが格納している数値0に


配列変数str[0]が格納している数値1を足したものを


変数sumに代入しなさい


という命令がコンピュータにあたえられるので


変数sumに格納される値は


0+str[0]=0+1=1となります。


次に


sum+=str[1];


がおこなわれると


         🌞いま🌞


変数sumが格納している数値1に


配列変数str[1]が格納している数値2を足したものを


変数sumに代入しなさい


という命令がコンピュータにあたえられるので


変数sumに格納される値は


1+str[1]=1+2=3となります。


次に


sum+=str[2];


がおこなわれると


         🌞いま🌞


変数sumが格納している数値3に


配列変数str[2]が格納している数値3を足したものを


変数sumに代入しなさい


という命令がコンピュータにあたえられるので


変数sumに格納される値は


3+str[2]=3+3=6となります。


次に


sum+=str[3];


がおこなわれると


         🌞いま🌞


変数sumが格納している数値6に


配列変数str[3]が格納している数値4を足したものを


変数sumに代入しなさい


という命令がコンピュータにあたえられるので


変数sumに格納される値は


6+str[3]=6+4=10となります。


次に


sum+=str[4];


がおこなわれると


         🌞いま🌞


変数sumが格納している数値10に


配列変数str[4]が格納している数値5を足したものを


変数sumに代入しなさい


という命令がコンピュータにあたえられるので


変数sumに格納される値は


10+str[4]=10+5=15となります。


よって


printf("配列に格納された数値の合計は%dです\n",sum);


が実行されると


コマンドプロンプト画面に


15

が表示されます。」


ソーラー「そうだったね 加算代入演算子のポイントは


         🌞いま🌞


変数が格納している数値に


何かの数値を足したものを


変数に代入しなさい


ということだったね。」


アレサ「すこしだけ別の角度から


今の加算代入演算子+=をもちいた


プログラムを考察してみましょう。



sum+=str[0];

sum=sum+str[0];

を意味するのでしたね。


ですので


int sum=0;

sum+=str[0];

sum+=str[1];

sum+=str[2];

sum+=str[3];

sum+=str[4];

int sum=0;

sum=sum+str[0];

sum=sum+str[1];

sum=sum+str[2];

sum=sum+str[3];

sum=sum+str[4];

等しくなります。


まずは

int sum=0;

sum=sum+str[0];

が実行されるのですが

str[0]=0;

により


sum=0+str[0];

sum=0+0;

sum=0;

となり

sumに格納されている値は

0となります。


次に

sum=sum+str[1];

が実行されると

str[1]=1;

により

sum=sum+str[1];

sum=0+str[1];

sum=0+1;

sum=1;

となり


sumに格納されている値は


1となります。


次に

sum=sum+str[2];

が実行されると

str[2]=2;

により

sum=sum+str[2];

sum=1+str[2];

sum=1+2;

sum=3;

となり


sumに格納されている値は


3となります。


次に

sum=sum+str[3];

が実行されると

str[3]=3;

により

sum=sum+str[2];

sum=3+str[2];

sum=3+3;

sum=6;

となり


sumに格納されている値は


6となります。


次に

sum=sum+str[4];

が実行されると

str[4]=4;

により

sum=sum+str[4];

sum=6+str[4];

sum=6+4;

sum=10;

となり


sumに格納されている値は


10となります。


次に

sum=sum+str[5];

が実行されると

str[5]=5;

により

sum=sum+str[5];

sum=10+str[5];

sum=10+5;

sum=15;

となり


sumに格納されている値は


15となります。


よって


printf("配列に格納された数値の合計は%dです\n",sum);


が実行されると


コンパイル結果は


配列に格納された数値の合計は15です


となります。


次は

このプログラムの


sum+=str[0];

sum+=str[1];

sum+=str[2];

sum+=str[3];

sum+=str[4];

の部分を

for文を使って


簡略化して記述してみましょう。


#include<stdio.h>


int main(void){


int i=0;

int sum=0;

int str[]={1,2,3,4,5};

for(i=0;i<5;i++){

sum+=str[i];

}


printf("配列に格納された数値の合計は%dです\n",sum);


return 0;

}


コンパイル結果


配列に格納された数値の合計は15です


ソーラーさん


いかがでしたか?」


ソーラー「


sum+=str[0];

sum+=str[1];

sum+=str[2];

sum+=str[3];

sum+=str[4];

と記述すると

難しそうに見えるけど

sum=sum+str[0];

sum=sum+str[1];

sum=sum+str[2];

sum=sum+str[3];

sum=sum+str[4];

の簡略化表現なんだね。


つまり

👇今のプログラムは


#include<stdio.h>


int main(void){

int str[5];

str[0]=1;

str[1]=2;

str[2]=3;

str[3]=4;

str[4]=5;


int sum=0;

sum+=str[0];

sum+=str[1];

sum+=str[2];

sum+=str[3];

sum+=str[4];


printf("配列に格納された数値の合計は%dです\n",sum);

return 0;

}


#include<stdio.h>


int main(void){

int str[5];

str[0]=1;

str[1]=2;

str[2]=3;

str[3]=4;

str[4]=5;

int sum=0;

sum=sum+str[0];

sum=sum+str[1];

sum=sum+str[2];

sum=sum+str[3];

sum=sum+str[4];


printf("配列に格納された数値の合計は%dです\n",sum);

return 0;

}

に等しいんだね。」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます