PC Technique logo

小学校高学年から中学生を対象にした、無料公開中のC言語の入門講座です。

【11時間目】プログラムをスマートに ループのwhile文

前回までで、プログラムにおいて欠かせない「if文」についてみてきました。では次に、これまたプログラムにおいて欠かせないもの、「ループ」について見ていきたいと思います。

プログラムに欠かせない「ループ」とは

ループとは、日本語で「繰り返し」のことです。つまり、同じ処理をひたすら繰り返す処理のことを言います。

例えば、縄跳びを思い浮かべてください。縄を回し始めたら、「タイミングをはかって」「ジャンプし」「縄をこして」「着地」「次のジャンプに備えて」「タイミングを図って」「ジャンプし」「縄をこして」「着地」「次のジャンプに備えて」…と、同じ動作を繰り返しますよね。これがまさにループです。

では、C言語でループはどのように扱うのでしょうか。C言語でループをするためのキーワードは2つあります。1つは「while」(ホワイル)文。2つめは「for」(フォー)文です。まずは簡単なwhile文から見ていきたいと思います。

一番シンプルなwhile文

while文の構文は簡単で、while(条件式){...}という形です。

while(1)ループ

とにかく、ループの感覚に慣れてもらうために、一番短いループ文を紹介しましょう。それがwhile(1){...}です。次のコードを打ち、実行してみます。

#include <stdio.h>

int main(void){

	while(1){
		printf("Hello, C world!!\n");
	}

	return 0;
}

実行するとこのようになります。

画面にずらーっと「Hello, C world」が出てきました。永遠と「Hello, C world」が繰り返されて続いています。このように繰り返し繰り返し同じ処理をするのを「ループ」と言います。そして今回のように、終わることなくひたすらループするものを「無限ループ」と言います。時に、わざとではなくバグで無限ループにおちいることがあります。

ループを続ける条件

しかし、永遠とループしていても仕方がないですね。何かの条件を満たしているときのみ、ループを続ける必要があります。その条件とは、例えば「10回繰り返す間」や、「ユーザーから1が入力されている間」などです。while文のかっこのなかに、条件式として記述します。ここで注意するべきなのは、ここの条件が成り立つ(trueである)時のみループを続けるということです。

【実践】10回「Hello」を表示するプログラム

では、ここで具体的にループの使い方を見てみましょう。今回は画面に10回、「○回目のHelloです」と表示させるプログラムを作ってみたいと思います。

#include <stdio.h>

int main(void){
	int i = 1;
	while(i <= 10){
		printf("%d回目のHelloです\n", i);
		i = i + 1;
	}
}

回数をカウントしていくために、int型の変数iを用意しています。そして初期化で、iの中身を1にしています。そのあと、while文で「iが10以下の時に」ループを続けるとしてあります。つまりiが11になった時にループを終わります。そのループの中で、printf文と、iを1増やす処理をしています。実行してみましょう。

このように表示されました。しっかりと10回ループできていることが分かりますね。

ループ用の変数はよくiを使用します。また、今回のプログラムではわかりやすさを重視して、初期値を1に、そして10以下の間ループするとしましたが、これから先は「0スタート」に慣れていく必要があります。初期値を0にして、10未満の間ループする、という書き方がよく出てきます。これは、後々勉強する「配列」を扱うときに便利だからです。

この時間のまとめ

同じ処理を繰り返し行うことを「ループ」という

C言語でループするには、while文とfor文を使う

while(条件式){ ... }の書式で使い、条件式が成り立つときにループを続ける

次はfor文

次回は、このwhile文をさらに便利(時と場合による)にしたfor文というものを勉強します。特に今回のプログラムのような、決まった回数だけループする、といった処理は、for文を使うときれいにかけます。