Euphoria while循環

while循環控制結構,可重複任務一定次數。

語法:

while循環的語法是:

while expression do
-- Statements executed if expression returns true
end while

在執行時,如果表達式expression 的結果爲true,則循環內的行動將被執行。這將繼續只要表達式的結果是true。

這裏的關鍵點while循環可能不會運行。當表達式進行測試,結果是false,循環體將被跳過,while循環後的第一條語句將被執行。

例子:

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

integer a = 10

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

這將產生以下結果:

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

while....with entry 語句:

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

 with entry 語句提供的目的很好。while循環需要使用此語句,只是在想在第一次迭代開始添加 entry 關鍵字。

語法:

while循環 with entry 的語法是:

while expression with entry do
-- Statements executed if expression returns true
entry
-- Initialisation statements.
end while

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

例子:

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

integer a = 10

while a < 20 with entry do
printf(1, "value of a : %d\n", a)
a = a + 1
entry
a = a + 2
end while

這將產生以下結果:

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

while....label 語句:

while循環可以有一個label 子句之前首先 do 關鍵字。進入子句之前或之後,可以保持標籤子句。

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

語法:

一個while循環標籤子句的語法是:

while expression label "Label Name" do
-- Statements executed if expression returns true
end while

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

示例:

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

integer a = 10
integer b = 20

while a < 20 label "OUTER" do
printf(1, "value of a : %d\n", a)
a = a + 1
while b < 30 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
end while
end while

這將產生以下結果:

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