ミスティーネットPerl・CGI講座 パール・CGIレッスン MISTY-NETレンタルサーバー・PERLプログラミング講座 CGI&PERL究極のレシピ

管理運営:有限会社ミスティーネット

| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問合せ | ミスティーネット | リンク集 |
Perl言語リファレンス

ミスティーネットPerl・CGI講座/基本編
ミスティーネットPerl・CGI講座/基本編
始めに 始めに
変数について 変数について
処理の制御1 処理の制御1
処理の制御2 処理の制御2
配列の処理 配列の処理
ハッシュの処理 ハッシュの処理
数値の扱い 数値の扱い
文字の扱い 文字の扱い
時間の処理 時間の処理
サブルーチン サブルーチン
ファイルの処理 ファイルの処理
ディレクトリの処理 ディレクトリ処理
CGIについて CGIについて
漢字の処理 漢字の処理
    (文字コード)
Cookie の処理 Cookie の処理
正規表現1 正規表現1
正規表現2 正規表現2
演算子について 演算子について
ライブラリ ライブラリ
デバッグ デバック
環境変数について 環境変数
ミスティーネットPerl・CGI講座/基本編

ミスティーネットPerl・CGI講座/応用編
ミスティーネットPerl・CGI講座/応用編
カウンターを作ってみよう カウンターを
     作ってみよう!
ミニゲームを作ってみよう ミニゲームを
     作ってみよう!
ミスティーネットPerl・CGI講座/応用編

ミスティーネットPerl・CGI講座/WEB講座一覧
ミスティーネット
HTML講座 HTML講座
スタイルシート講座 スタイルシート講座
JavaScript講座 JavaScript講座
UNIXコマンド講座 UNIXコマンド講座

ミスティーネット
ラブラブメールでツーショット

人気サイトランキング

人気サイトランキング

8daysランキング

  HOME >> 処理の制御2
  1. 繰り返し処理の種類
  2. ある条件のときに繰り返し処理を行なう (while)
  3. ある条件になるまで繰り返し処理を行なう (until)
  4. 決まった回数の繰り返し処理を行なう (for)
  5. 無限ループについて
■ 繰り返し処理の種類
繰り返し(ループ)処理の方法は大きく分けて3つあります。
1.特定の条件を満たす場合(真の場合)、または条件を満たすまでループ処理を行なう。
  (while 文や until文)

2.特定の回数だけループ処理を行なう。
  (for 文)

3.リストや配列の各項目に対してループを行なう。
  (foreach 文)
行ないたい処理の内容によって、使い分けると良いでしょう。
(foreach 構文に関しては、次章の 「配列の処理」 でご紹介します。)



■ while を使った繰り返し処理
while」 では、特定の条件が満たされた場合のみの繰り返し処理を行なうことが出来ます。
while」 を使った繰り返し処理の書式は下記のようになります。
while (条件式) { 処理内容 }
「while」 文でも、「if」 文と同様に真偽値を使った条件式を用いることが出来ます。

[繰り返し処理のイメージ]



下記のプログラムでは、「exit」 と入力するまでプログラムが終了せずにメッセージ「こんにちは!」 を表示しつづけます。

print "文字を入力してね => ";

while ( $input = <STDIN> ) {
    chomp $input;
    if ($input ne 'exit') {
        print "文字を入力してね => ";
    }
    else {
        last;
    }
}







最初に表示されるメッセージ文。

入力された値を変数に代入。
入力値の改行文字を切り取る。
入力値が 「exit」 でない場合は
メッセージを再度表示する。

入力値が 「exit」 の場合は、
ループを抜ける。
「ne」 は、「〜と等しくない場合」 の意味です。
「last」 ではループの終了を行ないます。→ 処理の制御構文




■ until を使った繰り返し処理
until」 では、ある条件が満たされるまで繰り返し処理を行ないます。
until」 の書式は下記のようになります。
until (条件式) { 処理内容 }
「while」 の項でご紹介したプログラムは、「until」 を使うことでよりシンプルなソースになります。

print "文字を入力してね => ";

until ( <STDIN> eq "exit\n" ) {
    print "文字を入力してね => ";
}


最初に表示されるメッセージ文

入力値が 「exit」 となるまで
メッセージを表示し続けます。
「eq」 は 「〜と等しい場合」 の意味です。 → 文字列演算子について

* ここでは、入力された文字と 「\n (改行文字)」 付きの 「exit」 をマッチさせています。
文字を入力した後には必ず 「ENTER」キーを押す為、データとして改行文字もいっしょに送られてきます。
そのため、「exit\n」 となっています。




■ 決まった回数の繰り返し処理を行なう(for を使った繰り返し処理)
for」 は、決まった回数の繰り返し処理をする場合に便利です。
「for 文」 の書式は下記のようになります。
for (初期値 ; 条件式 ; 増減式) { 処理内容 }
「for」 構文ではループ変数を設定し、その変数の増減によってループ回数を決定します。
下記のプログラムでは1〜5までの数字を「for」 構文を使って表示させています。

for ( $i=1; $i<=5; $i++) {
    print $i;
}

【表示結果】
1
2
3
4
5
ここでは、ループ変数 $i の初期値を1と設定し、$i の値が5になるまで処理を繰り返しています。
「$i++」 は、「$i = $i + 1」 と同義です。1回処理を行なうごとに、$i に1たして次のループに移行します。




■ 無限ループについて
ループ処理において下記のような場合には、条件式の部分が常に「真」 となり、ループが終了しない(無限ループ) の状態となります。
CGIの設置場所に、レンタルサーバーなどの共用サーバーを使っている場合には、サーバーのメモリやCPUを占有するなどかなりの負担をかけてしまいます。
特に、「while」 構文を使った際に、終了の条件を設定していないとループが終了しない場合がよくあります。
ループ処理を行なう場合には、終了の条件に注意してプログラムを作成しましょう。

[while での無限ループの例]
while ( 1 ) {
    print "こんにちは!";
}
「こんにちは!」 が延々と表示されつづけます。
あいさつは1回でよろしい!


[for での無限ループの例1]
for ( ; ; ) {
    print "こんにちは!";
}
カッコ内の条件式の部分が常に真となる為、終了しません。

[for での無限ループの例2]
for ( $i=0; $i<0; $i++ ) {
    print $i;
}
このプログラムでは、初期値を0に設定してループごとに1足していっているのですが
終了の条件が 「0未満になった場合」 となっています。
0から1づつ足していってるので、「0未満」 となるはずもなく、0からの数字が延々と表示され続けます。




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


| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問い合わせ | ミスティーネット |
(C)Copyright 2002 ミスティーネット Inc. All Right Reserved.