loop until statement
优质
小牛编辑
122浏览
2023-12-01
loop...until循环类似于while循环,除了循环...直到循环保证至少执行一次。
语法 (Syntax)
循环的语法......直到如下 -
loop do
-- Statements to be executed.
until expression
请注意,表达式出现在循环的末尾,因此循环中的语句在测试表达式的值之前执行一次。
如果表达式返回true,则控制流跳回来执行,循环中的语句再次执行。 重复此过程直到表达式为假。
例子 (Example)
#!/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语句非常有用。 您需要将此语句与循环...一起使用,直到只需在第一次迭代开始时添加entry关键字。
语法 (Syntax)
循环的语法...直到带有条目的循环如下 -
loop with entry do
-- Statements to be executed.
entry
-- Initialisation statements.
until expression
在执行expression,之前expression,它执行初始化语句,然后以正常循环开始。 之后,这些初始化语句成为循环体的一部分。
例子 (Example)
#!/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关键字之前有一个label子句。 您可以在enter子句之前或之后保留label子句。
此标签仅用于命名循环块,标签名称必须是具有单个或多个单词的双引号常量字符串。 label关键字区分大小写,应写为label 。
语法 (Syntax)
循环的语法......直到带有label子句如下 -
loop label "Label Name" do
-- Statements to be executed.
until expression
使用嵌套循环时,标签非常有用。 您可以使用带有标签名称的continue或exit循环控制语句来控制循环流。
例子 (Example)
#!/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
NOTE - 上面的例子应该按照解释的方式工作,但看起来像Euphoria解释器有一些问题并且它按预期工作,可能会在未来版本的Euphoria中修复。