位置:首頁 > 高級語言 > Euphoria教學 > Euphoria loop until 語法

Euphoria loop until 語法

loop...until 循環與while循環類似,除了loop...until 循環保證能執行至少一次 .

語法:

 loop...until 循環的語法是:

loop do
   -- Statements to be executed.
until expression

注意的表達出現在循環結束,所以循環中的語句執行前一次測試表達式的值。

如果表達式返回 true,控製流跳回起來做,並再次執行循環中的語句。重複這個過程,直到表達式為 false。

示例:

#!/home/euphoria-4.0b2/bin/eui

integer a = 10

loop do
   printf(1, "value of a : %d\n", a)
   a = a + 1
until a < 20 

這將產生以下結果:

value of a : 10
value of a : 11
value of a : 12
value of a : 13
value of a : 14
value of a : 15
value of a : 16
value of a : 17
value of a : 18
value of a : 19

loop....with entry 語句:

這是通常的情況下,一個循環的第一次迭代是某種特殊。在循環開始之前,有些事情必須做。它們在語句開始循環之前就已工作。

 with entry 語句提供的目的很好。需要使用此語句與loop...until 隻需添加輸入關鍵字的時候,希望在第一次迭代開始。

語法:

 loop...until loop with entry 的語法是:

loop with entry do
   -- Statements to be executed.
entry
   -- Initialisation statements.
until expression

在執行表達式 expression 之前,它會執行初始化語句,那麼它會作為一個正常的循環開始,後來這些初始化語句會成為循環體的一部分。

例子:

#!/home/euphoria-4.0b2/bin/eui

integer a = 10

loop with entry do
   printf(1, "value of a : %d\n", a)
   a = a + 1
entry
   a = a + 2
until a > 20

這將產生以下結果:

value of a : 12
value of a : 15
value of a : 18

 loop....label 語句:

 loop...until 循環可以有一個標簽子句之前首先 do 關鍵字。enter 子句之前或之後,可以保持標簽 label 子句。

這個標簽隻是用來循環命名塊和標簽名稱必須用雙引號字符串常量有單個或多個字。標簽關鍵字是區分大小寫的,應該寫成標簽 label .

語法:

 loop...until with label 子句的語法是:

loop label "Label Name" do
   -- Statements to be executed.
until expression

標簽將是非常有用的,當使用嵌套循環。可以使用標簽名 continue 或 exit 循環控製語句的循環來控製流程。 

示例:

#!/home/euphoria-4.0b2/bin/eui

integer a = 10
integer b = 20

loop label "OUTER" do
   printf(1, "value of a : %d\n", a)
   a = a + 1
   loop label "INNER" do
      printf(1, "value of b : %d\n", b)
      b = b + 1
      if b > 25 then
         continue "OUTER"  -- go to start of OUTER loop
      end if
   until b > 30
until a > 20

這將產生以下結果:

value of a : 10
value of b : 20
value of b : 21
value of b : 22
value of b : 23
value of b : 24
value of b : 25
value of a : 11
value of b : 26
value of a : 12
value of b : 27
value of a : 13
value of b : 28
value of a : 14
value of b : 29
value of a : 15
value of a : 16
value of a : 17
value of a : 18
value of a : 19

注: 上麵的例子作解釋,但看起來像Euphoria解釋有一定的問題,它是按預期工作,可能它會被固定在未來版本的Euphoria .