for文制御


forによるループ

whileとuntilを前回では学習しました
しかし、それ以外にもforステートメントという代表的なループ制御が存在します

forはwhileやuntilとは違い、最初にカウンター変数や条件式、カウント数をまとめて宣言します

for (カウンタ変数 = 初期値 ; 条件式 ; 繰り返すことのカウント数) {
statements;
}

という書式になります
whileやuntilではループ内でやっていたカウント処理を宣言時にできるので、ソースはまとまりやすいです
とくに無限ループである必要がない場合は、forでループを作ったほうがすっきりするかもしれません
	print "繰り返す回数を入力してください\n";
	$count = <STDIN>;
	chomp($count);

	for ($re = 0 ; $re <= $count ; $re++) {
		print "$re回目です\r";
		}
やはりこの場合も、カウンターの初期値が0なので5を入力しても 0から数えて実質6回繰り返す ことを忘れないで下さい
for ($re = 0 ; $re <= $count ; $re++) { に注目してみましょう

$re = 0 はカウンターとなる変数です。ここでカウンター変数を初期化しています
$re <= $countでは、$reが$countより小さい間、ループするということになります(つまり条件式が真のあいだ)
$re++はステップ数です、1度ループするたびにここが実行されます

以下のプログラムを作って研究してください
	print "繰り返す回数を入力してください\n";
	$count_max = <STDIN>;

	print "カウンターの初期値を指定してください\n";
	$count_def = <STDIN>;

	print "ステップで加算する値を入力してください\n";
	$step = <STDIN>;

	chomp($count_max , $count_def , $step);

	for ($re = $count_def ; $re <= $count_max ; $re += $step) {
		print "$re回目です\r";
		$count_step++;
		}

	print "\n終了しました\n合計で$count_step回繰り返しました";
ただし、このプログラムではエラー処理をしていないので理屈上おかしい数(負の数など)を代入すると暴走します
たとえば、繰り返す回数が10回で、カウンターの初期値が11であれば無限ループになり終われなくなります
また、$setpに負の数を代入するなどしても同じ現象が起こります


for ($count ; expr ; step) { statements }

ループの宣言、及び初期化を行ないます
$countにはカウンターとして使う変数を初期化します。これは一度だけ実行されます

exprには条件式を指定します。これが真の場合のみステートメントが繰り返されます

stepには繰り返すことにカウンターに加算する数を指定します。一般的にはインクリメントなどを使います



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