C言語を使ったマイコン制御プログラムの“イロハ”を解説する本連載。今回は、繰り返し処理に用いられるwhile文とfor文を使い、2の0乗から15乗までの数値を表示するプログラムを作成します。
本連載では、これから組み込みシステムのプログラミングを学びたい人向けに、C言語を使ったマイコン制御プログラムの“イロハ”を解説していきます。
毎回少しずつステップアップしていけるよう、本文の最後で問題を出し、次回その解答と解説を紹介していきます。では早速、前回の問題を振り返ってみましょう。
2の0乗から15乗までの数値を表示するプログラムを作成してください。
問題6は、while文やfor文、すなわち「繰り返し処理」に関する問題です。
それでは解答を発表します!
#include <stdio.h> int main(void) { int n; n = 1; while (n <= 32768) { printf("%d\n", n); n *= 2; } }
この「twice.c」を実行すると、次のような結果になります。
繰り返し(ループ)とは、「ある処理を何度も繰り返し実行する」プログラム構造のことです。一番単純な繰り返しは「無限ループ」と呼ばれるもので、文字通り、ある処理を永遠に繰り返し実行します。
この無限ループは、Windowsなどのアプリケーションでは大変迷惑な存在ですが、OSを持たないマイコンのプログラムでは、main関数の中が無限ループになっており、処理を終えずにいつまでも動き続けるという役割を担います。
無限ループのフローチャートは、以下の通りです。
多くの場合、繰り返しは“制御式”と呼ばれる「条件」を持っています。以下の2つのフローチャートは、ある処理を実行する前に繰り返しを継続するかどうかを判定する「前判定ループ」と、ある処理を実行した後に繰り返しを継続するかどうかを判定する「後判定ループ」の構造を示したものです。
C言語の繰り返し文では、while文とfor文は前判定ループ、do while文は後判定ループとなります。ちなみに、C言語の繰り返し文には、while文、for文、do while文の3つしかありません。
この2つのフローチャートは、どちらも条件を満たすときに処理を実行するようになっています。このような条件を「継続条件」と呼びます。C言語の繰り返し文では、継続条件として制御式を書きます。
Copyright © ITmedia, Inc. All Rights Reserved.