□Perl 講座 初級編 > 繰り返し文

◆For文

For文は、初期化式・条件式・増減式を設定し、その条件を満たしている間繰り返し(ループ)します。どのように記述するかというと、下記のようになります。

構文
for (初期化式; 条件式; 増減式) {
    実行文;
    実行文;
}
初期化式って?
最初って思ってください♪(ぉぃ)繰り返しさせるための管理する変数ループ変数って言うらしいです。私は勝手に作業変数なんて言ってたりします。その初期値または、それを表す式のことを指します。値であっても式で表します。
条件式って?
ループ変数(作業変数)が、どのような状態になるまで繰り返し作業をさせるかの判断基準となる式(値)のことです。
増減式って?
初期化式に設定された式(値)に対してループ変数(作業変数)の中身を増減していくための式です。初期値に一回の繰り返し(ループ)に対して1加える1減らすなどの作業をするのが一般的です。
実際の記述例
for ($i=0; $i<10; ++$i) {
    print "おはよう!!\n";
    print "ございます。\n";
}

上の表現を日本語に訳すとこうなります。

変数iは最初0です!
変数iが10より小さければ{}で囲まれている実行文を実行しなさい!!
おはよう!!と出力しなさい。
ございます。と出力しなさい。
実行が終わったら変数iに1加えなさい。
変数iは今1だから10より小さいです。
おはよう!!と出力しなさい。
ございます。と出力しなさい。
実行が終わったら変数iに1加えなさい。
以降繰り返していきます。(^−^;;(手抜き)

もっと意訳するとこうなります。

おはようございますを、10回繰り返して出力しなさいって事です。

私ががプログラミングする時って結構日本語に訳して考えてたりします。サーバとお喋りしてるみたいでしょ・・・。でも決してぁゃιぃ行動と思わないで下さいね(^−^;;;英会話を習うよりは単語も少ないし、入り込みやすいと思ってたりもします。



◆Foreach文

foreach文は配列などの値のリストを一つずつ取り出して変数に代入し、{}で囲まれている部分を実行・ループさせる命令です。配列の最後の値まで繰り返します。

構文
foreach スカラー変数 (配列またはリスト)  {
    スカラー変数を使った実行文;
}
スカラー変数
配列またはリストから取り出したスカラー値が代入されます。これを使って様々な処理・計算等をさせていきます。
配列またはリスト
これらはスカラー値で形成されたものを扱います。この配列またはリストの全てのスカラー値を取り出すまでループされます。またこの()内でsort(配列名)やreverse(配列名)などの関数を用いて並べ替えや逆順などをさせてから処理・計算させることも可能です。
スカラー変数を使った実行文
取り出したスカラー値を使っていろいろな実行文を記述してください。
実際の記述例
foreach $line (@line) {
    print "$line";
}

日本語に訳すと・・・

配列@lineに入っているスカラー値を$lineに最初から一つずつ取り出し代入していきます。
取り出した$lineを出力しなさい。
次のスカラー値を取り出しなさい。
出力しなさい・・・。

意訳すると・・・

配列に入ってるデータを一つずつ取り出し、終わるまで出力し続けなさいってことです。

また、スカラー変数名を省略して記述することも可能です。その場合、取り出されたスカラー値は$_に代入されますので覚えておくと良いでしょう♪
foreach (@line) {
    print "$_";
}
↑こう言うことね♪(^−^;;



◆while文

while文は条件が満たされている場合(真の場合)に{}で囲まれた部分を繰り返し(ループ)させる命令です。またこれを用いて無限ループも作れます。

構文
while (条件文) {
    実行文;
    実行文;
}
条件文って?
変数どうしや、定数などを比較演算子・論理演算しなどを用いて条件づけしてあげましょう。
実際の記述例
$i = 1;
while ($i<=10) {
    print "ループ$i回目です。";
    $i = $i + 1; # $i = $i++;  と表現もできます。
}

日本語に訳すと・・・

変数$iに1を代入しなさい!
変数$iが10以下なら{}内の実行文を処理しなさい。
出力しなさい。
変数$iに変数$iに1を加えた数を代入しなおしなさい!
変数$iが10以下なら{}内の実行文を処理しなさい。
出力しなさい。
変数$iに変数$iに1を加えた数を代入しなおしなさい!
・・・。

意訳すると・・・

変数$iが10以下ならずっとループしてなさいな!!ってこと( ´Д`)b

無限ループを作りたいときは、条件文のことろを『1』にするのが一般的に好まれてるらしいです(^−^;;(謎)
while (1) {
    実行文;
    実行文;
}

但し無限ループは使い方を間違えるととんでもないことになるのは、誰でも判りますよね?エンドレスのプログラムは不味いです( ´Д`)
そこで、実行文の中にlastと記述して、強制的にループを抜け出させるんです。これは、あとで説明しますが、主に条件分岐if文などと併用して扱われることが一般的です。最初のうちは使わない方が良いかもね♪

□初級編 プログラミングに入る前に