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

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


ソーラー「やったね。


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


#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型の配列宣言


int str[5];


で生成された


int型の配列変数

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=sum+str[0];


という命令が


コンピュータにあたえられるので


変数sumに格納される値は


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



次に


sum+=str[1];


がおこなわれると


         🌞いま🌞


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


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


変数sumに代入しなさい


という命令


sum=sum+str[1];


という命令


がコンピュータにあたえられるので


変数sumに格納される値は


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


次に


sum+=str[2];


がおこなわれると


         🌞いま🌞


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


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


変数sumに代入しなさい


という命令


sum=sum+str[2];


がコンピュータにあたえられるので


変数sumに格納される値は


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


次に


sum+=str[3];


がおこなわれると


         🌞いま🌞


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


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


変数sumに代入しなさい


という命令


sum=sum+str[3];


がコンピュータにあたえられるので


変数sumに格納される値は


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


次に


sum+=str[4];


がおこなわれると


         🌞いま🌞


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


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


変数sumに代入しなさい


という命令


sum=sum+str[4];


がコンピュータにあたえられるので


変数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]=1;

により


sum=0+str[0];

sum=0+1;

sum=1;

となり

sumに格納されている値は

1となります。


次に

sum=sum+str[1];

が実行されると

str[1]=2;

により

sum=sum+str[1];

sum=1+str[1];

sum=1+2;

sum=3;

となり


sumに格納されている値は


3となります。


次に

sum=sum+str[2];

が実行されると

str[2]=3;

により

sum=sum+str[2];

sum=3+str[2];

sum=3+3;

sum=6;

となり


sumに格納されている値は


6となります。


次に

sum=sum+str[3];

が実行されると

str[3]=4;

により

sum=sum+str[3];

sum=6+str[3];

sum=6+4;

sum=10;

となり


sumに格納されている値は


10となります。


次に

sum=sum+str[4];

が実行されると

str[4]=5;

により

sum=sum+str[4];

sum=10+str[4];

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で共有
  • はてなブックマークでブックマーク

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る