for文と加算代入演算子を用いた数値の総和をもとめるプログラムを考察してみましょう🌞




#include <stdio.h>


int main(void){


int sum=0;

int a;

for(a=1;a<=3;a++){

sum+=a;

}

printf("%d\n",sum);

return 0;

}


プログラムの実行結果


6


ソーラー「このプログラムはfor文の中に


sum+=a;


加算代入演算子が用いられた命令文が


記述されているよね。


for(a=1;a<=3;a++){

sum+=a;

}


ここの部分がちょっと理解しにくいかな。


そこで


この部分を

わかりやすく


変形してみるとプログラムは


次のようになります。


#include <stdio.h>


int main(void){


int sum=0;

int a;

a=1;

sum+=a;

a=2;

sum+=a;

a=3;

sum+=a;


printf("%d\n",sum);

return 0;

}


プログラムの実行結果

6


ソーラー「こうなるかな


どうかな。 大分簡単になったかな」


アレサ「うふ


for(a=1;a<=3;a++){

sum+=a;

}


a=1;

sum+=a;

a=2;

sum+=a;

a=3;

sum+=a;

におきかわったのですね。」



ソーラー「


for(a=1;a<=3;a++){

sum+=a;

}


aの値に応じて

3回

sum+=a;

が繰り返されるんだけど


どのように繰り返されるかというと


まず


for(a=1;a<=3;a++)の

初期化式a=1;

より

a=1のときから


つまり

a=1;

が実行された状態で

sum+=a;

が実行されます。


sum+=1;

が実行されるのですね


次に

a++により

a=1から2に増加して

a=2のときの

つまり

a=2;

が実行された状態で


sum+=a;

が実行されます。


sum+=2;

が実行されるのですね



次に

a++により

a=2から3に増加して

a=3のときの

つまり

a=3;

が実行された状態で


sum+=a;

が実行されます


sum+=3;

が実行されるのですね



つまり

int a;

a=1;

sum+=a;

a=2;

sum+=a;

a=3;

sum+=a;


すなわち

sum+=1;

sum+=2;

sum+=3;

が実行されることになります。



ですので


int sum=0;

int a;

for(a=1;a<=3;a++){

sum+=a;

}

int sum=0;

int a;

a=1;

sum+=a;

a=2;

sum+=a;

a=3;

sum+=a;

に置き換えるということができたわけなんだね。」


アレサ「そのような仕組みになっているのですね」


ソーラー「それでは


変更されたプログラムをみていこうかな」


#include <stdio.h>


int main(void){


int sum=0;

int a;

a=1;

sum+=a;

a=2;

sum+=a;

a=3;

sum+=a;


printf("%d\n",sum);

return 0;

}


プログラムの実行結果

6


ソーラー「まず


int sum=0;

int a;

a=1;

sum+=a;

a=2;

sum+=a;

a=3;

sum+=a;


int sum=0;

int a;

a=1;


により


int型の変数sumには0



int型の変数aには1


が格納されることになります


次に


最初の

sum+=a;

が実行されるんだけど


sum+=a;


は  いま🌞🌞


変数sumに格納されている数値0に

変数aが格納している数値1を加えたものを

変数sumに格納せよ


という命令文なので


変数sumに格納される数値は1


になるんだね。


その次の命令文


a=2;

により


aの値が2のときの

sum+=a;

が実行されるんだけど


sum+=a;


は  いま🌞🌞


変数sumに格納されている数値1に

変数aが格納している数値2を加えたものを

変数sumに格納せよ


という命令文なので


変数sumに格納される数値は

3

になるんだ。


そして


その次の命令文


a=3;

により


aの値が3のときの

sum+=a;

が実行されるんだけど


sum+=a;


は  いま🌞🌞


変数sumに格納されている数値3に

変数aが格納している数値3を加えたものを

変数sumに格納せよ


という命令文なので


変数sumに格納される数値は6


になるというわけなんだ\(^o^)/」


アレサ「


そして


最後に


printf("%d\n",sum);


が実行され


プログラムの実行結果


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


表示されたというわけなのですね」



😊


このプログラムでは


最初


sumに0が代入されており


sumに


1

2

3



足しあわされています


これは


0+1+2+3



総和を求めるプログラムになっています(*´▽`*)










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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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