C プログラミング (C Programming)

[2017/10/5, H.Aman]
[← 演習のページへ戻る]

サンプルプログラム 3 の内容

整数 n を読み込み,1 から n までの合計値を表示する.
 1:   #include <stdio.h>
 2:  	
 3:   int main(void){
 4: 	 int n, sum, k;
 5:
 6:      printf("整数を一つ入力してください:");
 7:      scanf("%d", &n);
 8:
 9:      sum = 0;
10:      k = 1;
11:      while ( k <= n ){
12:         sum += k;
13:         k++;
14:      }         
15:
16:      printf("1 から %d までの合計は %d です\n", n, sum);
17:
18:      return 0;
19:   }

11-14 行目:while ( k <= n ){ ... }

 9:      sum = 0;
10:      k = 1;
11:      while ( k <= n ){
12:         sum += k;
13:         k++;
14:      }         
15:

サンプルプログラム 3 では,これまでの do - while と似ていますが異なる while 文というものが登場しています.

while 文も do - while と同じく,指定された条件が成立している間は処理を繰り返すというものです.
   while ( 条件 ){

        条件成立している限り,繰り返し実行したい内容   

   }

両者の違いは,どのタイミングで条件をチェックするかにあります:
  • do - while 文:まずは処理を 1 回実行してみてその後に条件をチェックする.
    条件が成立していれば,改めて処理を実行し,その後に改めて条件をチェックするという手順を繰り返す.
  • while 文:いきなり処理を実行するのではなく,先に条件をチェックする
    条件が成立していれば,処理を実行し,その後に改めて条件をチェックするという手順を繰り返す.

今回は,1 から n までの整数を全部足そうとしています.
そこで,k という変数の値を 1 から n まで順に(つまり,1, 2, 3, 4, ...., n-1, n という順に)変化させていき,それらを合計していこうとしています.
この 1 から n まで順に変化させるというところを while 文による繰り返し構造で作り出しています.

k が n 以下(k <= n)ならば繰り返しが続くことになるので,条件部は k <= n と書いてあります.

10, 13 行目:k = 1; k++;

 9:      sum = 0;
10:      k = 1;
11:      while ( k <= n ){
12:         sum += k;
13:         k++;  
14:      }
15:

k の値は 10 行目で 1 に初期化しておき,
while 文の繰り返しでは k++; とk の値をインクリメント(+1 すること)を行っています.

講義で説明したように,この k++; という部分は
13:            k = k + 1;
と書いても構いませんが,k++; という書き方の方がよく使われます.

9, 12 行目:sum = 0; sum += k;

 9:      sum = 0;
10:      k = 1;
11:      while ( k <= n ){
12:         sum += k;  
13:         k++;
14:      }
15:

合計を求める部分については,サンプルプログラム 2 と同様です.

9 行目で(合計を記録するための)変数 sum を 0 に初期化しておき,
sum += k; というかたちで k の値を sum に足していきます.

こちらも講義で説明したように,sum += k; という部分は
12:            sum = sum + k;
と書いても構いませんが,sum += k; という書き方の方がよく使われます.