ループでたし込む時,和を作る変数の初期化
1.forループを使い,ある変数に「たしこむ」時,その変数に0を入れておく必要がある。次のプログラムは,作業前にsum,sum2に0を代入して,準備をしてから作業を行ない,成功した例である。
List 1 成功したテストプログラム |
/*1から10までの単純和と1から10までの平方和*/ |
実行結果 |
初期化前のsum,sum2=0 4201393 初期化後のsum,sum2=0 0 i,sum,sum2=1 1 1 i,sum,sum2=2 3 5 i,sum,sum2=3 6 14 i,sum,sum2=4 10 30 i,sum,sum2=5 15 55 i,sum,sum2=6 21 91 i,sum,sum2=7 28 140 i,sum,sum2=8 36 204 i,sum,sum2=9 45 285 i,sum,sum2=10 55 385 1から10までの単純和と平方和=55 385 |
2.次のプログラムは,作業前にsum,sum2に0を代入せずに,作業を行ない,失敗した例である。
sumは正しく動作しているが,これは偶然である。sum2は最初から4201520が格納されており,sum2の集計に失敗している。
値を代入する前の変数に0が入っていることを期待して作成されたプログラムは動作が保証されない。
List 2 失敗したテストプログラム |
/*1から10までの単純和と1から10までの平方和*/ |
実行結果 |
作業前のsum,sum2=0 4201520 i,sum,sum2=1 1 4201521 i,sum,sum2=2 3 4201525 i,sum,sum2=3 6 4201534 i,sum,sum2=4 10 4201550 i,sum,sum2=5 15 4201575 i,sum,sum2=6 21 4201611 i,sum,sum2=7 28 4201660 i,sum,sum2=8 36 4201724 i,sum,sum2=9 45 4201805 i,sum,sum2=10 55 4201905 1から10までの単純和と平方和=55 4201905 |