循环 3个月前

编程语言
776
循环

  虽然一般情况下,语句都是顺序执行的:函数内的第一条语句先执行,然后是第二条,依次类推。 但是还是可能存在需要执行一段代码多次的情况。

为此编程语言提供各式各样的控制结构实现复杂的程序执行路径。

其中,循环语句可以让我们可以执行一条或一组语句多次。下图中所描述的是大多数语言中循环语句的形式:

image

Lua 语言提供了如下几种循环结构语句。点击链接可查看详细说明。
| 循环类型 | 描述 | | ----------------------------------------------------------------------------------- | ---------------------------------------------------------- | | while 循环 | 先检测条件,条件为真时再执行循环体,直到条件为假时结束。 | | for 循环 | 执行一个语句序列多次,可以简化管理循环变量的代码。 | | repeat...until 循环 | 重复执行一组代码语句,直到 until 条件为真为止。 | | 嵌套循环 | 可以在一个循环语句中再使用一个循环语句。 |

循环控制语句

循环控制语句改变循环正常的执行顺序。当离开一个作用域时,在该作用域内自动创建的对象都会被自动销毁。

Lua 支持如下所示的循环控制语句。点击下面的链接查看详细内容:
| 循环控制语句 | 描述 | | -------------------------------------------------------------- | ------------------------------------------------------------------------------ | | break| break 语句结束循环,并立即跳转至循环或 switch 语句后的第一条语句处开始执行。 |

无限循环

如果循环条件永远不可能为假,则此循环为无限循环。while 语句经常被当作无限循环语句使用。因为我们可以直接将其条件设置为真,这样 while 就会一直循环下去。在无限循环中,可以使用 break 跳出循环。

while( true )
do
   print("This loop will run forever.")
end

while 循环

在 Lua 语言中,只要 while 循环条件为真,while 语句就会一直执行,直到 while 循环条件为假为止。

语法

Lua 语言中 while 循环的语法如下所示:

while(condition)
do
   statement(s)
end

其中,statement(s) 可能只是一条语句也可能是一个语句块。条件可以是任何表达式,若表达式结果为真,则循环继续。 循环为假时,程序结束 while 循环,执行 while 后面的代码。

流程图

image

请注意,while 循环的关键点在于循环可能根本不会执行。当检测条件为假是,程序会跳过 while 循环体而直接执行 while 后的第一条语句。

示例

a=10
while( a < 20 )
do
   print("value of a:", a)
   a = a+1
end

执行上面的代码,将会得到如下的结果:

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

for 循环

for 循环控制结构可以让你高效地写出需要执行特定次数的循环代码。

语法

Lua 语言中 for 循环的语法如下:

for init,max/min value, increment
do
   statement(s)
end

下面是 for 循环执行的流程:

  1. init 首先执行并且只执行一次。在这一步骤中,你需要声明并初始化循环控制变量。
  2. 接下来,max/min 是循环结束的条件。程序中将 init 与 最大值或最小值进行比较,条件为真则继续执行循环,否则结束循环。
  3. 循环体执行后,程序跳转至递增或递减语句( increment/descrement )。此语句中,我们可以更新我们的控制变量。
  4. 再次检查条件。如果条件为真,则执行循环并重复过程(执行循环体,递增运算,再检查条件)。当条件为假时,结束循环。

流程图

image

示例

for i=10,1,-1 
do 
   print(i) 
end

执行上面的代码后,将得到如下的输出结果:

10
9
8
7
6
5
4
3
2
1

repeat...until 循环

与 for 和 while 循环中先检测条件再决定是否执行循环不同,repeat...until 先执行循环再检测条件判断是否再次执行。
除了 repeat...until 循环一定会执行一次之外,repeat...until 与 while 循环很相似。

语法

Lua 语言中 repeat...until 循环的语法如下:

repeat
   statement(s)
until( condition )

请注意,条件表达式出现在循环的结束处,所以在检查条件之前,循环体中语句 statement(s) 已经执行了一次。
如果条件为假,则控制回到循环开始再次执行循环体。这个过程一直重复到条件为真时结束。

流程图

image

示例

--[ 局部变量定义 --]
local a = 10
--[ 重复循环执行 --]
repeat
   print("value of a:", a)
   a = a + 1
until( a > 15 )

执行上面的代码,将会得到如下的结果:

value of a:    10
value of a:    11
value of a:    12
value of a:    13
value of a:    14
value of a:    15

循环嵌套

Lua 编程语言允许使用循环嵌套。接下来这一节中将用例子来说嵌套循环的使用方法:

语法

for 循环嵌套的语法如下:

for init,max/min value, increment
do
   for init,max/min value, increment
   do
      statement(s)
   end
   statement(s)
end

while 循环嵌套的语法如下:

while(condition)
do
   while(condition)
   do
      statement(s)
   end
   statement(s)
end

repeat...until 循环嵌套的语法如下:

repeat
   statement(s)
   repeat
      statement(s)
   until( condition )
until( condition )

需要注意的是,在任何外层循环类型内可以使用任何内层循环类型。

示例

下面的例子中使用了嵌套循环:

j =2
for i=2,10 do
   for j=2,(i/j) , 2 do
      if(not(i%j)) 
      then
         break 
      end
      if(j > (i/j))then
         print("Value of i is",i)
      end
   end
end

运行上面的代码,可以得到如下的输出结果:  

Value of i is    8
Value of i is    9
Value of i is    10

break 语句

程序在解释执行过程中,在循环内遇到 break 语句时,循环将立即结束。程序将循环语句的下一条语句开始执行。
如果你是在嵌套循环(即,一个循环内还有一个循环语句)内使用 break 语句,break 只结束内层循环,并从该代码块后的第一条语句处开始执行。

语法

break 语句的语法如下所示:

break;

##流程图:
image

示例

--[ 局部变量定义--]
a = 10

--[ 执行 while 循环--]
while( a < 20 )
do
   print("value of a:", a)
   a=a+1
   if( a > 15)
   then
      --[ terminate the loop using break statement --]
      break
   end
end

执行上面的代码可以得到如下的结果:

value of a:    10
value of a:    11
value of a:    12
value of a:    13
value of a:    14
value of a:    15
image
EchoEcho官方
无论前方如何,请不要后悔与我相遇。
1377
发布数
439
关注者
2222625
累计阅读

热门教程文档

Kotlin
68小节
PHP
52小节
Djiango
17小节
Javascript
24小节
C
14小节