for文
繰り返し処理は様々な用途で使用されますが、指定した回数だけ繰り返したり、数値をある値からある値まで順に変化させたりする利用方法をよく使います。
例えば10回繰り返し処理を行う場合、while文を使えば次のように記述できます。
my $count; $count = 0; while ($count < 10){ # 何かの処理 $count ++; }
もちろんこの記述方法でも問題ありませんが、指定した回数だけ繰り返すような場合にはfor文を使うと便利です。for文の書式は次のようになっています。
for (初期化; 条件式; インクリメント){ 実行する処理1; 実行する処理2; }
「初期化」の箇所にはfor文が実行される時に一度実行される処理を記述し、条件式には繰り返しを継続するかどうかの条件を記述、そしてインクリメントには1回繰り返しが行われた時に実行される処理を記述します。
for文では色々な記述方法が行われますが、よく使われる記述として条件判別用の変数を1つ用意し、初期化で変数の値を初期化し、条件式では変数に対する条件式を記述し、インクリメントでは変数に格納された値をどのように変化させるのかを記述します。
例えば10回繰り返し処理を行う場合、for文を使えば次のように記述できます。
my $count; for ($count = 0; $count < 10; $count++){ print "count = $count ¥n"; }
for文で記述できることは基本的にwhile文で記述することが可能ですが、if文では初期化や条件式、そして繰り返しの度にどのように値を変化させるのかを1行で表すことができます。指定した回数だけ繰り返すような処理を記述するにはfor文を使うことで簡潔にまた明確に記述することが出来ます。
なお今までの例では初期化で使用している変数の宣言をfor文の前で行っていますが、初期化の箇所で宣言も合わせて行うことが出来ます。
for (my $count = 0; $count < 10; $count++){ print "count = $count ¥n"; }
ただし、この場合はfor文の中で変数「$count」を使用することは出来ますが、for文が終了した後で変数「$count」を参照することはできません。変数の宣言位置と有効範囲については別のページで詳しく確認します。
サンプルプログラム
では簡単なプログラムで確認して見ます。
use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; for (my $count = 0; $count < 5; $count++){ print "count = $count ¥n"; }
上記を「test3-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。
( Written by Tatsuo Ikura )