麻辣家族討論版版's Archiver

小誌 發表於 2010-5-10 18:17

(ASP教學第8篇) 重複執行的迴圈敘述

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


[color=Green][b][size=4]計次執行的For-Next敘述[/size][/b][/color]
當我們知道迴圈必須執行的次數時,For-Next敘述就是最好的迴圈敘述,要使用For-Next敘述就必須使用一個控制變數來決定For-Next敘述要執行的次數,其格式如下:
For-Next迴圈敘述區塊格式[code]For  計次變數:=初值  To  終值
      要重複執行的敘述區塊
Next[/code]由上列格式中可得知,For-Next敘述可以幫我們建立一個迴圈,我們只要決定上下限就可以決定迴圈重複的次數,例如:[code]For  X=1  To  10  
            Y=Y+X
Next[/code]在上例中,最重要的一個地方就是變數X,它在迴圈中是扮演一個計數器的角色,而計數範圍從1到10,所以在『For…Next』中的敘述區塊將會被執行10次,因此我們可對For-Next敘述分析如下。
[list=1]
[*]第一次執行迴圈時,變數X被指定為起始值。
[*]執行迴圈前,變數X都會先進行是否超過終止值的檢驗,若超過,則結束迴圈,否則就繼續執行迴圈內的敘述。
[*]執行過迴圈後,變數X的值將會加上步進值(1)。
[/list]
For-Next敘述其實還有一個步進值的設定,如果我們沒有特別指定步進值的大小,那步進值的大小就預設為(1),也就是說迴圈變會會在執行過迴圈後自動加(1)。
For-Next迴圈敘述區塊格式[code]For  計次變數=初值  To  終值 Step 步進值
      要重複執行的敘述區塊
Next[/code]例如:[code]For  X=1  To  10  Step  2
            Y=Y+X
Next[/code]請問您:上例For-Next迴圈敘述結束後,變數Y等於多少?絕對不是55喔!
在我們這個例子中變數X被指定為起始值1,也就說變數X一開始是1,可是每執行一次迴圈後變數X並不是加1喔!而是加2,所以Y=1+3+5+7+9,答案應該是25。

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

<html>
<head>
<title>ex407</title>
</head>
<body bgcolor="#ffffff">
<form>
<table border="1">
<tr>
<td>請輸入N值</td>
<td><input type="text" size="15" name="num"></td>
</tr>
<tr>   
<td colspan=2><input type=submit value="確定"></td>
</tr>
</tr>
<tr>   
<td colspan=2>1乘到N答案是:<font color="red"><%= ans %></font></td>
</tr>
</table>
</form>
</body>   
</html>[/code]首先我們將變數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

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

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

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供