跳轉到內容

Gambas/迴圈

來自華夏公益教科書

返回 Gambas

迴圈簡介

[編輯 | 編輯原始碼]

迴圈是強大的控制結構,用於重複給定程式碼段一定次數或直到滿足特定條件為止。

Gambas 有三種主要型別的迴圈:for / next 迴圈、do 迴圈和 for / each 迴圈。

For / Next 迴圈

[編輯 | 編輯原始碼]

for / next 迴圈的語法有三個組成部分

  • 一個計數器,
  • 一個範圍,以及
  • 一個步長。

一個基本的 for / next 迴圈如下所示

    for X = 1 to 100 step 1
       print X
    next

在這個例子中,X 是計數器,“1 to 100” 是範圍,“1” 是步長。

當您想要從這個例子中建立完整的例子時,您需要一個表單和一個命令按鈕,以及以下程式碼。

PUBLIC SUB Button1_Click()
X AS Integer
 for X = 1 to 100 step 1
       print X
 next
END
  

變數 X 必須宣告為整數。

for / next 迴圈初始化時,計數器被設定為範圍中的第一個數字——在本例中,X 被設定為 1。然後程式正常執行 fornext 語句之間的任何程式碼。當到達 next 語句時,程式返回 for 語句,並將計數器的值增加步長。在本例中,X 在第二次迭代時增加到 2,第三次迭代時增加到 3,等等。

要更改每次迭代時計數器變數增加的量,只需更改步長的值即可。例如,如果您使用步長 2,X 將從 1 增加到 3,然後增加到 5、7、9,等等。當步長沒有明確說明時,預設使用步長 1。(請注意,步長可以是負值。例如,“for X = 100 to 1 step -1” 將使 X 的值從 100 減少到 99,然後減少到 98,等等。)

當 X 達到範圍中的最大值(在上面的示例中為 100)時,迴圈將停止執行,程式將繼續執行 next 語句之後的程式碼。

可以在 for / next 迴圈中編輯計數器變數的值,儘管這通常被認為是不好的程式設計實踐。

    for X = 1 to 100 step 1
       print X
       X = 7
    next

雖然您偶爾可能會發現編輯計數器的良好理由,但上面的示例說明了一個潛在的缺陷:因為 X 在每次迭代結束時被設定為 7,所以這段程式碼建立了一個無限迴圈。為了避免這種情況和其他意外行為,在編輯計數器變數時要格外小心!

嘗試更多示例來熟悉迴圈

PUBLIC SUB Button1_Click()
i AS Integer
FOR i = 1 TO 10
 PRINT "Hallo Welt"
NEXT
END
PUBLIC SUB Button1_Click()
DIM i AS Integer
FOR i = 1 TO 10
  PRINT i,i*i,i*i*i
NEXT
END

為了使迴圈更易讀,您應該將程式碼的內部行向右移動。它們將在迴圈中重複。與 VB 不同的是,您不應該在迴圈結束時的 next 命令後面提及計數器。

For I = 1 to 10 
 print I
' Next I    VB code
' skipped in Gambas because it is redundant 
Next

Do 迴圈

[編輯 | 編輯原始碼]

Do 迴圈比 For 迴圈更靈活,但通常只在必要時使用。Do 迴圈有以下格式
-Do while
-Do until
-Loop while
-Loop until
While 迴圈(do while 和 loop while)將在特定條件為真時繼續執行。另一方面,Until 迴圈將在特定條件為假時迴圈。將 While 或 Until 放在 Do 部分還是 Loop 部分的唯一區別在於,Do 檢查迴圈開始時的條件,而 Loop 檢查迴圈結束時的條件。一個基本迴圈的示例如下所示

    Do
       print "hello"
       x=x+1
    Loop until x=10

這個迴圈將多次列印 hello(取決於 x 的初始值)。如您所見,Do 迴圈沒有內建計數器。但是,它們可以像上面那樣手動建立。在本例中,我選擇了 x 作為我的計數器變數,並且每次迴圈執行時,'x' 都增加 1。當 'x' 達到 10 時,迴圈將停止執行。Do 迴圈的優勢在於,您可以隨時退出迴圈,只要滿足特定條件即可。您可以讓它迴圈,只要特定變數為假或為真,或者只要變數保持在特定範圍內。

巢狀迴圈

[編輯 | 編輯原始碼]

巢狀迴圈是任何型別的迴圈,它位於已存在的迴圈內部。它們可以包含任何型別的迴圈。為此,我們將使用 For 迴圈。重要的是要記住,內部迴圈將執行其正常次數,乘以外部迴圈執行的次數。例如

    For i = 1 to 10
       For j = 1 to 10
           print i*j,
       Next 
      print 
    Next

這將列印乘法表。在 i 迴圈的第一次執行中,它將執行 j 迴圈十次。然後在 i 迴圈的第二次執行中,它將再次執行 j 迴圈十次,依此類推。為什麼在兩個 next 命令之間還有另一個 print 命令?嘗試一下,看看刪除它會發生什麼。

華夏公益教科書