処理の繰り返しは処理分岐と共に、プログラムを作成するときに何度も用いる重要な記述です。
繰り返し(ループ)処理をうまく使えば、効率的な処理、すっきりしたプログラムを作成することができます。
ループ処理でのポイントは、終了条件を正しく設定することです。この部分を間違えると無限ループに陥ってしまいます。
ここでは、「 For Next 」「 Do Until 」「While Wend」を使用して、処理を繰り返すサンプルについて解説します。
仕組みとしては、処理を繰り返して、条件が満たされたら繰り返しを終了して次の処理に進むというものです。 Do Untilは、データベースからデータを取り出すときに最後のデータまで表示するという処理でよく使われます。
For Next
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <%@ Language=VBScript %> <html> <head> <titile>繰り返し</title> </head> <body> <% For i = 0 to 10 Response.Write i Next %> <% For i = 0 to 10 Step -1 Response.Write i Next </body> </html> |
上記スクリプトでは、0から10を表示しその後、10から0までを表示しています。Stepの値でどれくらいの間隔で変数を変化させるか指定できます。
Do Until
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <%@ Language=VBScript %> <html> <head> <titile>繰り返し</title> </head> <body> <% i = 1 Do Until i > 5 Response.write "<font size=""" & i & """>だんだん文字が大きくなります。</font>" i = i + 1 Loop %> </body> </html> |
文字列を繰り返し表示して、フォントを大きくしています。この構文を使うときは無限ループにならないように気をつけてください。サンプルでは変数iが5より大きくなるまで処理を繰り返していますが、
「i = i + 1」の文を記述して変数iをカウントアップしないと、永久に処理が続いてしまいます。
While Wend
1 2 3 4 5 6 7 8 | <%@ Language=VBScript %> <% cntI = 0 While cntI<=5 Response.Write cntI & "<br />" cntI = cntI +1 Wend %> |
処理を繰り返すときにきをつけなければならないことは、繰り返し処理をきっちりと終了させることです。 繰り返しの終了条件がいつまでも満たされないと、いつまでも処理がループしてしまい、無限ループになってしまいます。 もしもメール送信プログラムを無限ループさせてしまうと、とんでもないことになってしまいます。
無限ループの原因はいくつかあると思いますが、ループの終了を判定するカウンタがうまく指定されていないことがあげられます。 たとえば処理Aを5回繰り返すときに、カウンタ「i」が5になったかどうかを判定に使うとします。 このときに「i=5」のようにカウンタは5かという判定をすると危険です。 もし何らかの事情でiが6以上になってしまった場合は、i=5 は満たされずに無限ループになってしまいます。 このような場合は、「>=」や「<=」のような比較をして、iが5以上の場合に終了といった条件を指定した方がよいでしょう。