マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第3章 for文(繰り返し処理)

第10話 第9話の等比数列の和についてトレースを行う!

int 等比数列の和() {
  // 2 + 6 + 18 + 54 + 162 + 486 + 1458 + 4374 を計算する関数

  int 和 = 0;//和を整数型変数として定義して0に初期化

  for (int i = 0; i < 8; i += 1) {

    和 = 和 + 2 * pow(3, i);

  }

  return(和);

}

この部分を第8話同様にトレースしてみましょう。



さぁ、探検・冒険の始まりだ!

1 × 2 × ・・・ × 15 = 2004310016

1 + 2 + ・・・ + 10000 = 50005000

2 + 5 + ・・・ + 32 = 187

2 + 6 + 18 + 54 + 162 + 486 + 1458 + 4374 = 6560

以下 = + 2 * pow(3, i);の動きを追います。 
  は意味が異なることに注意してください。
  左辺にあるときはそのものを意味し右辺にあるときはそのに入っているを意味しまた。  
  0 
i = 0 のとき はint 和 = 0; から 0 です。i = 0 に注意すると 
  = 0 + 2 * pow(3, 0) = 0 + 2 * (3の0乗) = 0 + 2 * 1 = 2
0
i = 1 のとき  = 2 + 2 * pow(3, 1) = 2 + 2 * (3の1乗) = 2 + 2 * 3 = 8 
0
i = 2 のとき  = 8 + 2 * pow(3, 2) = 8 + 2 * (3の2乗) = 8 + 2 * 9 = 26 
  0 
i = 3 のとき   = 26 + 2 * pow(3, 3) = 26 + 2 * (3の3乗) = 26 + 2 * 27 = 80  
  0 
i = 4 のとき  = 80 + 2 * pow(3, 4) = 80 + 2 * (3の4乗) = 80 + 2 * 81 = 80 + 162 = 242  
  0 
i = 5 のとき  = 242 + 2 * pow(3, 5) = 242 + 2 * (3の5乗) = 242 + 2 * 243 = 242 + 486 = 728
   0
i = 6 のとき  = 728 + 2 * pow(3, 6) = 728 + 2 * (3の6乗) = 728 + 2 * 729 = 728 + 1458 = 2186
  0 
i = 7 のとき  = 2186 + 2 * pow(3, 7) = 2186 + 2 * (3の7乗) = 2186 + 2 * 2187 = 2186 + 4374 = 6560 
   



さぁ、探検・冒険の始まりだ!

1 × 2 × ・・・ × 15 = 2004310016

1 + 2 + ・・・ + 10000 = 50005000

2 + 5 + ・・・ + 32 = 187

2 + 6 + 18 + 54 + 162 + 486 + 1458 + 4374 = 6560

めでたくトレースは一致しました。

これで第3章は終了して、第4章 if文へと進みます。

if文までくると本当にやれることが圧倒的に増えて、

3次魔方陣の生成が射程に入ります。

第3章第9話へ 第4章第1話へ

本講義トップへ