TI-Lua/流程控制

计算器百科,非营利的计算器专业知识百科。
跳到导航 跳到搜索

流程控制

本节将讨论 TI-Lua 中的流程控制,其中包括条件判断、循环与无条件跳转

条件判断

形式

if-else 结构是基本的条件判断流程。其结构如下:

if cond then
  -- executes when cond is true
else
  -- executes when cond is false
end

其中,cond 是一个布尔值。下同。

例子

输入:

if 1 == 2 then
  print("Our math is broken!")
else
  print("Everything is fine.")
end

输出:

Everything is fine.

注: TI-Lua 已经在 3.1 之后的版本中去除了 print 函数(这个函数在机上可向串口输出数据,但是其实际功能是向标准输出中输出数据)。这里仅作示意用途。

循环

形式

循环体分为 for 循环、 while 循环和 repeat-until 循环。我们首先来讨论 while 循环。

while 循环

while 循环结构如下:

while cond do
  -- something
end

该循环会不断执行,直到 cond 为假。

repeat-until 循环

repeat-until 循环结构如下:

repeat
  -- something
until cond

该循环会不断执行,直到 cond 为真。

for 循环

for 循环具有两种形式。第一种是”步进型“,第二种是”遍历型“(即 foreach)。

for 循环结构如下:

-- 步进型
for v = v_begin, v_end, v_step do
  -- something
end

在此代码中, v 是一个自变量, v_begin, v_end, v_step 分别代表 v 的初始值、终止值与步长。 这种循环会不断执行,在执行过程中,v 的值会从 v_beginv_step 的步长增长到 v_end, 然后结束。如果按照步长,v 在最后一步时会超过 v_end, v 的值仍会保留而不会再将 v_end 的值赋给 v.

-- 遍历型
for v1, v2, ..., vn in a_list do
  -- something
end

在此代码中, v1, v2, ..., vn 是有穷多个自变量。a_list 是一个列表或能够产生列表的表达式。在循环过程中,(产生的)列表中的项中的元素会按顺序赋给 v1, v2, ..., vn,直到每一个项按顺序访问过一遍。

需要注意到一个项中可以包含多个元素。这一点我们会在示例中说明。

例子

输入:

local i, j, arr
i = 0
j = 0
arr = {"Calculator", "Wiki"}

-- while example
print("While example:")
while i < 5 do
  print(i)
  i = i+1
end

-- repeat example
print("Repeat example:")
repeat
  print(j)
  j = j+1
until j >= 5

-- numeric for example
print("Numeric for example:")
for i, 0, 10, 3 do
  print(i)
end

-- generic for example
print("Generic for example:")
for i, j in ipairs(arr) do
  print(i, j)
end

输出:

While example:
0
1
2
3
4
Repeat example:
0
1
2
3
4
Numeric for example:
0
3
6
9
Generic for example
1       Calculator
2       Wiki

跳转

Icon-info.png
由于 TI-Lua 是 Lua 5.1 的实现,而 goto 指令于 Lua 5.2 才添加,因此该小节可能不具有实际意义。