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 |