whileとuntil制御


ループ(繰り返し)制御を作る

ある条件が満たされるまで、同じプログラムをぐるぐる繰り返したい場合などがあります
このようなケースはif文では制御できません
そこでループ制御(繰り返し)を作成して、一定のステートメントを繰り返すようなプログラムを作ってみましょう

ループ制御をする命令はいくつかあります
まずは、while によるプログラムを作成してみましょう
whileは条件が満たされている間指定ステートメントを繰り返すというものです

書式はif文同様に while (条件式) { というように書き、条件式が真である間大カッコで囲まれたステートメントを繰り返します
条件式が「偽」になったときにループを抜けて次の命令へ移ります

	print "繰り返す回数を入力してください\n";
	$count = <STDIN>;
	chomp($count);
	$re = 0;

	while ($re <= $count) {
		print "$re回目です\r";
		$re++;
		}
	print "ループを終了しました";
このプログラムでは、入力された値$countが繰り返すたびに1加算される変数$reよりも同じか大きい間繰り返します
ただし、$reは0からカウントされるので100を入れると0から数えて100まで
つまり101回繰り返されるということに気づいてください

さてwhileが「…の間」繰り返し処理されるステートメントならば
「…まで」繰り返すuntilステートメントというのも存在します

基本的な書式はwhileと同じですが、untilステートメントは条件が満たされるまで指定ステートメントを繰り返します
	print "繰り返す回数を入力してください\n";
	$count = <STDIN>;
	chomp($count);
	$re = 0;

	until ($re == $count) {
		print "$re回目です\r";
		$re++;
		}
	print "ループを終了しました";
until ($re == $count) { の部分だけを改良しています
このwhileとuntilで作った上二つのプログラムの結果はまったく同じです
どちらを選ぶかは状況によってプログラマが的確に判断してください

もう一度まとめてみましょう

whileは条件式が真の間繰り返します
untilは条件式が真になるまで繰り返します

おわかりいただけたでしょうか? 実際に何度もプログラムを書いてみれば、理解できると思います



do制御

whileとuntilが理解できたら、今度はdoによる制御も覚えましょう
doステートメントはwhileかuntilとワンセットで用いる便利なステートメントです

whileやuntilステートメントによる繰り返しプログラムは、条件によっては一度も実行されないことがあります
たとえ条件が合っていようがなかろうが、1度は実行してほしいプログラムも考えられます
そのような時にdoステートメントを使います

doはこれまでのwhileやuntilの書式をひっくり返して書きます

do {
	繰り返すステートメント;
} 「while か until」 (条件式);
このようにして、doステートメントの場合は繰り返すステートメントを一度実行してから判定します
	print "繰り返す回数を入力してください\n";
	$count = <STDIN>;
	$re = 0;
	chomp($count);

	do {
		print "$re回目です\r";
		$re++;
	} while ($re <= $count);
このようにプログラムすれば、負の値が代入されても1度はステートメントを実行します
プログラムの用途によって使い分けて下さい


while (expression) { statements }

expressionが真の間statementsを実行します

expressionには条件式を書きます

statementにはexpressionが真である間、くり返してほしいプログラムを書きます

until (expression) { statements }

expressionが真になるまでstatementsを実行します

expressionには条件式を書きます

statementにはexpressionが真になるまで、くり返してほしいプログラムを書きます

do { statements } [ while | until ] (expression)

ステートメントを実行してから式を評価します
expressionには条件式を書きます

statementには指定条件により、くり返してほしいプログラムを書きます



前のページへ戻る次のページへ