それでは、問題6のプログラムを考えてみましょう。
問題6は2の0乗から15乗までの数値、すなわち1、2、4、8……と2倍していき32768(215)まで繰り返し表示するものです。
そのフローチャートを以下に示します。
繰り返しのプログラムは、基本的に前判定ループで考えます。
1、2、4、8……と繰り返し2倍されていく数をnとします。nの初期値は1で、次からループで2倍されていきます。制御式は「nが32768以下である間、繰り返して処理を実行する」のように継続条件で考えます。
それでは、このフローチャートを基にプログラムを書いてみましょう。
while文の構文規則は、次のようになっています。
while ( 式 ) 文
while文は、式が0と等しくない間、文を実行します。
ここで文を複合文とすると、while文は、
while ( 式 ) { 文…… }
と記述できます。
問題6のプログラムをwhile文で記述すると、
n = 1; while (n <= 32768) { printf("%d\n", n); n *= 2; }
となります。
一方、for文の構文規則は次のようになっています。
for ( 式(1) ; 式(2) ; 式(3) ) 文
式(1)は初期化を指定し、式(2)は制御式で、式(2)が0と等しくない間、文を実行します。式(3)は繰り返しの後に実行されます。
for文はwhile文を使って、
式(1) ; while ( 式(2) ) { 文 式(3) ; }
と書くこともできます。
また、問題6のプログラムをfor文で記述すると、
for (n = 1; n <= 32768; n *= 2) printf("%d\n", n);
のように、たった1行で表せます。
Copyright © ITmedia, Inc. All Rights Reserved.