MasteringVFP/2/4/1
出自VFP Wiki
(修訂版本間差異)
SitraCpast (對話 | 貢獻) |
小 (revert) |
||
第1行: | 第1行: | ||
- | + | For-loop,會讓夾在 For 與 next 之間的程式重複執行 n 次. | |
- | For-loop, | + | 舉例來說: |
- | + | ||
<pre> | <pre> | ||
For i=1 to 10 | For i=1 to 10 | ||
第7行: | 第6行: | ||
next | next | ||
</pre> | </pre> | ||
- | + | 就會印出十次 "Hello world" | |
- | + | 另外一個變化形的應用,比如這樣: | |
<pre> | <pre> | ||
For i=1 to 10 step 2 | For i=1 to 10 step 2 | ||
第15行: | 第14行: | ||
next | next | ||
</pre> | </pre> | ||
- | + | 這樣就只會印出五次 "Hello world" 囉. | |
- | + | 如果想在 For-loop 裡面作判斷,符合條件就跳出,那麼你可以適時的加上 if, continue 與 exit. | |
- | + | 如下例: | |
<pre> | <pre> | ||
For i=1 to 10 | For i=1 to 10 | ||
第29行: | 第28行: | ||
next | next | ||
<pre> | <pre> | ||
- | + | 當 i=5 的時候,就會跳出迴圈,如果小於 5 的話,則印出 "Hello world",並繼續這個迴圈. | |
---- | ---- | ||
- | = FOR ... ENDFOR | + | = FOR ... ENDFOR 命令 = |
- | == | + | == 用途 == |
- | : | + | :按指定的次數重複執行一組命令。 |
- | == | + | == 語法 == |
:FOR ''Var'' = ''nInitialValue'' TO ''nFinalValue'' [STEP ''nIncrement''] | :FOR ''Var'' = ''nInitialValue'' TO ''nFinalValue'' [STEP ''nIncrement''] | ||
::''Commands'' | ::''Commands'' | ||
第40行: | 第39行: | ||
::[LOOP] | ::[LOOP] | ||
:ENDFOR | NEXT | :ENDFOR | NEXT | ||
- | == | + | == 參數 == |
=== ''Var'' === | === ''Var'' === | ||
- | * | + | *指定作為計數器的記憶體變數或陣列元素。在 FOR ... ENDFOR 執行之前,此記憶體變數或陣列元素不一定存在。 |
=== ''nInitialValue'' TO ''nFinalValue'' === | === ''nInitialValue'' TO ''nFinalValue'' === | ||
- | *''nInitialValue'' | + | *''nInitialValue'' 是計數器的初始值,而 ''nFinalValue'' 是計數器的終止值。 |
=== STEP ''nIncrement'' === | === STEP ''nIncrement'' === | ||
- | *''nIncrement'' | + | *''nIncrement'' 是計數器遞增或遞減的數量。如果 ''nIncrement'' 為負,則計數器遞減;如果省略 STEP 子句,計數器每次的增量為 1。 |
=== ''Commands'' === | === ''Commands'' === | ||
- | * | + | *指定要執行的 Visual !FoxPro 命令,''Commands'' 可以包含任意數目的命令。 |
=== EXIT === | === EXIT === | ||
- | * | + | *在 FOR ... ENDFOR 循環中,將控制權迅速移轉給緊接在 ENDFOR 的下一個命令。您可以將 EXIT 可以放在 FOR 與 ENDFOR 之間的任何位置。 |
=== LOOP === | === LOOP === | ||
- | * | + | *將控制權直接傳給 FOR 子句,不再執行 LOOP 與 ENDFOR 之間的敘述。計數器正常遞增或遞減,就像執行到 ENDFOR 一樣。LOOP 可以放在 FOR 與 ENDFOR 之間的任何位置。 |
- | == | + | == 附註 == |
- | * | + | *可以用記憶體變數或陣列元素作為計數器,指定 FOR ... ENDFOR 循環中 Visual !FoxPro 命令的執行次數。 |
- | * | + | *在遇到 ENDFOR 或 NEXT 之前,始終執行 FOR 後面的 Visual !FoxPro 命令。執行過程中,每循環一次,計數器 ''Var'' 都會遞增,增量為 ''nIncrement''(如果省略 STEP 子句,則計數器每次的增量為 1),然後把計數器的值與 ''nFinalValue'' 作比較。如果計數器的值小於或等於 ''nFinalValue'',將再次執行 FOR 子句後的命令;如果計數器的值大於 ''nFinalValue'',則退出 FOR ... ENDFOR 循環,程序繼續執行 ENDFOR 或 NEXT 之後的下一個命令。 |
- | **''' | + | **'''注意''' |
- | ::''nInitialValue'' | + | ::''nInitialValue''、''nFinalValue'' 和 ''nIncrement'' 只能是初次讀入的值。在循環過程中更改計數器 ''Var'' 的值將影響循環的執行次數。 |
- | * | + | *如果 ''nIncrement'' 為負,且初始值 ''nInitialValue'' 大於終止值 ''nFinalValue'',則每經過一次循環,計數器都將遞減。 |
- | == | + | == 範例 == |
- | + | 在範例 1 中,顯示數字 1 到 10。 | |
- | + | 範例 2 使用記憶體變數作為初始值、終止值和 STEP 值,顯示 customer 資料表格中從 2 號到 10 號記錄中所有記錄號為偶數的記錄。 | |
- | + | 範例 1 | |
<pre> | <pre> | ||
CLEAR | CLEAR | ||
FOR gnCount = 1 TO 10 | FOR gnCount = 1 TO 10 | ||
- | + | ? gnCount | |
ENDFOR | ENDFOR | ||
- | + | 範例 2 | |
SET TALK OFF | SET TALK OFF | ||
CLOSE DATABASES | CLOSE DATABASES | ||
OPEN DATABASE (HOME(2) + 'Data\testdata') | OPEN DATABASE (HOME(2) + 'Data\testdata') | ||
- | USE | + | USE customer && 開啟 Customer 資料表格 |
- | STORE 2 TO | + | STORE 2 TO gnI && 初始值 |
- | STORE 10 TO | + | STORE 10 TO gnJ && 終止值 |
- | STORE 2 TO | + | STORE 2 TO K && Step 值 |
FOR gnCount = gnI TO gnJ STEP K | FOR gnCount = gnI TO gnJ STEP K | ||
- | + | GOTO gnCount && 移動記錄指標 | |
- | + | DISPLAY company && 顯示公司名稱 | |
ENDFOR | ENDFOR | ||
</pre> | </pre> |
在2009年7月12日 (日) 17:23所做的修訂版本
For-loop,會讓夾在 For 與 next 之間的程式重複執行 n 次. 舉例來說:
For i=1 to 10 ? "Hello world" next
就會印出十次 "Hello world"
另外一個變化形的應用,比如這樣:
For i=1 to 10 step 2 ? "Hello world" next
這樣就只會印出五次 "Hello world" 囉.
如果想在 For-loop 裡面作判斷,符合條件就跳出,那麼你可以適時的加上 if, continue 與 exit. 如下例:
For i=1 to 10 if i=5 exit else ? "Hello world" continue endif next <pre> 當 i=5 的時候,就會跳出迴圈,如果小於 5 的話,則印出 "Hello world",並繼續這個迴圈. ---- = FOR ... ENDFOR 命令 = == 用途 == :按指定的次數重複執行一組命令。 == 語法 == :FOR ''Var'' = ''nInitialValue'' TO ''nFinalValue'' [STEP ''nIncrement''] ::''Commands'' ::[EXIT] ::[LOOP] :ENDFOR | NEXT == 參數 == === ''Var'' === *指定作為計數器的記憶體變數或陣列元素。在 FOR ... ENDFOR 執行之前,此記憶體變數或陣列元素不一定存在。 === ''nInitialValue'' TO ''nFinalValue'' === *''nInitialValue'' 是計數器的初始值,而 ''nFinalValue'' 是計數器的終止值。 === STEP ''nIncrement'' === *''nIncrement'' 是計數器遞增或遞減的數量。如果 ''nIncrement'' 為負,則計數器遞減;如果省略 STEP 子句,計數器每次的增量為 1。 === ''Commands'' === *指定要執行的 Visual !FoxPro 命令,''Commands'' 可以包含任意數目的命令。 === EXIT === *在 FOR ... ENDFOR 循環中,將控制權迅速移轉給緊接在 ENDFOR 的下一個命令。您可以將 EXIT 可以放在 FOR 與 ENDFOR 之間的任何位置。 === LOOP === *將控制權直接傳給 FOR 子句,不再執行 LOOP 與 ENDFOR 之間的敘述。計數器正常遞增或遞減,就像執行到 ENDFOR 一樣。LOOP 可以放在 FOR 與 ENDFOR 之間的任何位置。 == 附註 == *可以用記憶體變數或陣列元素作為計數器,指定 FOR ... ENDFOR 循環中 Visual !FoxPro 命令的執行次數。 *在遇到 ENDFOR 或 NEXT 之前,始終執行 FOR 後面的 Visual !FoxPro 命令。執行過程中,每循環一次,計數器 ''Var'' 都會遞增,增量為 ''nIncrement''(如果省略 STEP 子句,則計數器每次的增量為 1),然後把計數器的值與 ''nFinalValue'' 作比較。如果計數器的值小於或等於 ''nFinalValue'',將再次執行 FOR 子句後的命令;如果計數器的值大於 ''nFinalValue'',則退出 FOR ... ENDFOR 循環,程序繼續執行 ENDFOR 或 NEXT 之後的下一個命令。 **'''注意''' ::''nInitialValue''、''nFinalValue'' 和 ''nIncrement'' 只能是初次讀入的值。在循環過程中更改計數器 ''Var'' 的值將影響循環的執行次數。 *如果 ''nIncrement'' 為負,且初始值 ''nInitialValue'' 大於終止值 ''nFinalValue'',則每經過一次循環,計數器都將遞減。 == 範例 == 在範例 1 中,顯示數字 1 到 10。 範例 2 使用記憶體變數作為初始值、終止值和 STEP 值,顯示 customer 資料表格中從 2 號到 10 號記錄中所有記錄號為偶數的記錄。 範例 1 <pre> CLEAR FOR gnCount = 1 TO 10 ? gnCount ENDFOR 範例 2 SET TALK OFF CLOSE DATABASES OPEN DATABASE (HOME(2) + 'Data\testdata') USE customer && 開啟 Customer 資料表格 STORE 2 TO gnI && 初始值 STORE 10 TO gnJ && 終止值 STORE 2 TO K && Step 值 FOR gnCount = gnI TO gnJ STEP K GOTO gnCount && 移動記錄指標 DISPLAY company && 顯示公司名稱 ENDFOR