【問題6】while文とfor文――繰り返し処理を理解しよう完全マスター! 組み込みC言語プログラミング(7)(2/3 ページ)

» 2014年07月18日 11時00分 公開
[横田一弘 埼玉県立新座総合技術高等学校 教諭,MONOist]

while文とfor文

 それでは、問題6のプログラムを考えてみましょう。

 問題6は2の0乗から15乗までの数値、すなわち1、2、4、8……と2倍していき32768(215)まで繰り返し表示するものです。

 そのフローチャートを以下に示します。


問題6のフローチャート 問題6のフローチャート

 繰り返しのプログラムは、基本的に前判定ループで考えます。

 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.