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 .