Board logo

標題: [教學] (ASP教學第8篇) 重複執行的迴圈敘述 [打印本頁]

作者: 小誌    時間: 2010-5-10 18:17     標題: (ASP教學第8篇) 重複執行的迴圈敘述

重複執行的迴圈敘述
所謂迴圈(Loop)就是能讓某一段的程式能夠重複執行許多次的流程控制敘述,在本章節中,將介紹兩個比較常用來控制程式的迴圈敘述,它們是:For-Next及While-Wend。


計次執行的For-Next敘述
當我們知道迴圈必須執行的次數時,For-Next敘述就是最好的迴圈敘述,要使用For-Next敘述就必須使用一個控制變數來決定For-Next敘述要執行的次數,其格式如下:
For-Next迴圈敘述區塊格式
  1. For  計次變數:=初值  To  終值
  2.       要重複執行的敘述區塊
  3. Next
複製代碼
由上列格式中可得知,For-Next敘述可以幫我們建立一個迴圈,我們只要決定上下限就可以決定迴圈重複的次數,例如:
  1. For  X=1  To  10  
  2.             Y=Y+X
  3. Next
複製代碼
在上例中,最重要的一個地方就是變數X,它在迴圈中是扮演一個計數器的角色,而計數範圍從1到10,所以在『For…Next』中的敘述區塊將會被執行10次,因此我們可對For-Next敘述分析如下。

For-Next敘述其實還有一個步進值的設定,如果我們沒有特別指定步進值的大小,那步進值的大小就預設為(1),也就是說迴圈變會會在執行過迴圈後自動加(1)。
For-Next迴圈敘述區塊格式
  1. For  計次變數=初值  To  終值 Step 步進值
  2.       要重複執行的敘述區塊
  3. Next
複製代碼
例如:
  1. For  X=1  To  10  Step  2
  2.             Y=Y+X
  3. Next
複製代碼
請問您:上例For-Next迴圈敘述結束後,變數Y等於多少?絕對不是55喔!
在我們這個例子中變數X被指定為起始值1,也就說變數X一開始是1,可是每執行一次迴圈後變數X並不是加1喔!而是加2,所以Y=1+3+5+7+9,答案應該是25。

For-Nex敘述不僅可以是遞增迴圈,也可以是遞減增迴圈,其格式如下:
For-Next遞減迴圈敘述區塊格式
  1. For  計次變數=初值  To  終值   Step -步進值
  2.      敘述區塊
  3. Next
複製代碼
也就說遞減迴圈For-Next敘述的起始值必須大於終止值,而判斷是否脫離迴圈的敘述就變成:計次變數值 < 終止值,同時:步進值一定要設定,並且步進值必須是負數!例如:
  1. For  X=10  To  1  Step  -1
  2.             Y=Y+X
  3. Next
複製代碼
實做學習
讓瀏覽者指定N值,然後計算1x2x……x(N-1)xN,並將計算結果顯示於網頁中。
[attach]219[/attach]
  1. <%
  2. num=request("num")
  3. if num<>empty then
  4. ans=1
  5. for i=1 to num
  6.      ans=ans*i
  7. next
  8. end if
  9. %>

  10. <html>
  11. <head>
  12. <title>ex407</title>
  13. </head>
  14. <body bgcolor="#ffffff">
  15. <form>
  16. <table border="1">
  17. <tr>
  18. <td>請輸入N值</td>
  19. <td><input type="text" size="15" name="num"></td>
  20. </tr>
  21. <tr>   
  22. <td colspan=2><input type=submit value="確定"></td>
  23. </tr>
  24. </tr>
  25. <tr>   
  26. <td colspan=2>1乘到N答案是:<font color="red"><%= ans %></font></td>
  27. </tr>
  28. </table>
  29. </form>
  30. </body>   
  31. </html>
複製代碼
首先我們將變數Ans的值設為1,所以「Ans= Ans *1*2x…*N-1*N」等於「Ans= 1*2*……*N-1*N」,因此「Ans= 1*2*……*N-1*N」就等於「Ans= 1」、「Ans= Ans*2」、「Ans= Ans*3」。。。「Ans:= Ans*N」連續運算的結果,所以使用For-Next敘述將是最佳選擇。
作者: 小誌    時間: 2010-5-10 18:22

While-Wend迴圈敘述
當我們知道迴圈必須執行的次數時,For-Next敘述就是最好的迴圈敘述,但是若不知道迴圈必須執行的次數呢,那我們就可以使用While-Wend迴圈敘述,其格式如下:
While-Wend迴圈敘述區塊格式
  1. While  條件式  
  2.        要重複執行的敘述區塊
  3. Wend
複製代碼
While-Wend迴圈敘述是由保留字While開始,在其後是一個條件式,而這個條件式則是一個布林值運算式,如果這個條件式成立(布林值運算結果為True),那麼在While-Wend迴圈敘述裡(敘述區塊)的程式碼就會執行至結尾,然後再判斷條件式,當這個條件式不再成立時,While-Wend迴圈敘述就會停止執行。現在我們來比較一下For-Next與While-Wend敘述:計算1加至10:
For-Next寫法:
  1. For  X=1  To  10  
  2.         Y=Y+X
  3. Next
複製代碼
While-Wend寫法:
  1. X=1
  2. While X <= 10
  3.       Y=Y+X
  4.        X=X+1
  5. Wend
複製代碼
看完這兩個敘述的比較,您是不是發現:同樣的功能,但是While-wend敘述似乎麻煩多了,不過,若不知道迴圈會執行幾次,還是While-Wend敘述比較適合,如下例:

實做學習
請設計一ASP程式,計算6561是3的幾次方,並將答案顯示於網頁中。
[attach]220[/attach]
  1. <html>
  2. <head>
  3. <title>ex410</title>
  4. </head>
  5. <body bgcolor="#ffffff">
  6. <%
  7. test=6561
  8. while test>1
  9.     test=test/3
  10.     ans=ans+1       
  11. wend
  12. response.write "6561是3的" & ans & "次方"
  13. %>
  14. </body>   
  15. </html>
複製代碼
提示
原始碼中的『&』符號是一個資料串接符號,它會將該符號前後的資料連接在一起,例如:”我是”&”book”,則串接後的字串資料就變成:”我是book”。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)