MasteringVFP/2/4/1

出自VFP Wiki

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

在2009年5月21日 (四) 13:32所做的修訂版本

http://www.textacelca.com 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