Perl初歩の初歩

プログラミング言語Perlの初心者のためのわかりやすい解説ブログ(を目指しています)

while 終わるまで何度でも

2009-06-10 15:32:50 | 命令を覚えよう

while (ホワイル) は、「~の間ずっと」という意味の英語です。

$x = 0;
$goukei = 0;
while ($goukei < 100) {
  $x++;
  $goukei += $x;
}
print $x;

上の例では、$goukei が 100未満の間ずっと { } の間を繰り返します。

まず、$x と $goukei を ともに 0 にしておきます。
次に、while の後ろの ( ) の部分の条件があてはまるかどうかを調べます。

$goukei は 0 で 100未満ですので条件があてはまるので、{ } の中に入ります。
$x++; は $x に 1 を足すという式。$x = $x + 1; を簡略化したもの。
$goukei += $x; は $goukei に $x を足した数を $goukei に入れるという式。$goukei = $goukei + $x; を簡略化したものです。

{ } の中を1回実行すると、$x は 1 になり、$goukei も 1 になります。

ここで、最初の条件のところに戻って、$goukei < 100 があてはまるかどうかを調べます。

$goukei は 1 で 100未満ですので条件があてはまるので、{ } の中に入ります。
$x++; で $x に 1 を足して 2 になります。
$goukei += $x; で $goukei に 2 を足して 3 になります。

ここで、最初の条件に戻って…

と繰り返すことになります。
この場合は、1 + 2 + 3 + … と足していって、100以上になるのは何を足した直後かがわかります。ちなみに答えは 14 です。

最後に $goukei が 105 となって、100未満ではなくなったときに、{ } の部分を無視して、先に進めるようになるわけです。


※ 注意してください!
while は うまくやらないと、いつまで経っても終わらないプログラムになってしまうという危険性があります。
条件がずっとあてはまっている場合、プログラムが終了しなくなり、いわゆる暴走している状態になるのです。

筆者も何度かやらかしてしまいました。

自分のWindowsパソコンでPerlが暴走してしまった場合には、あわてずに キーボードの [Ctrl] と [Shift] を押しながら [Esc] を押して「タスクマネージャー」を起動して、プロセスの中にある「perl.exe」を選択して、「プロセスの終了」ボタンをクリックすればOKです。

レンタルサーバーなどでは暴走させてはいけませんが、万が一の場合に備えて、多くのサーバーでは「30秒以上実行し続けているプログラムは強制的に終了させる」というような措置がとられているようです。



コメントを投稿