06-流程控制
相信熟悉计算机语言的读者都很熟悉这个概念,它是指通过控制程序执行的次序实现制定的功能,诸如:顺序,分支,循环,……在编程语言中则体现为if-else,while,for,……等等, 遗憾的是,Alum并没有实现switch-case或match-case这样的结构以改进大量的if-else if-else,但对于一个以学习为目的的语言来说,问题不大。下面是关于Alum中流程控制的介绍:
这是最简单的流程控制,就像一个算术时逐步计算每一步的结果,下面给出一个例子:
1 | $import "io.al" |
这实际上计算了$(1+2)*3$的结果,最终输出了d,即: $9$
我们的程序肯定不能一条路走到死,特别是当程序变得复杂的时候,例如,从终端读入用户输入的年龄并判断是否成年,我们便可以使用if-else来判断:
1 | $import "io.al" // 这里包含了input函数,用于从终端接收输入 |
在Alum中,if-else的结构如下:
1 | if condtion |
当条件condition成立,即值为true、非0值或非nil值时,则执行then_expr,否则就执行else_expr。
另外,
if-else也能产生值,相当于C语言中的三元运算符?:。
为了介绍循环,我们来思考一个问题,如果要求你计算1到100的和,你应该怎么写程序?你当然可以这么写
1 | let sum: int = 1 + 2 + 3 + ... + 100 |
但这未免太费力了,但如果你知道求和公式:$\frac{n(n+1)}{2}$的话,就可以直接这么写
1 | let sum: int = 100 * (100 + 1) / 2 |
但这只是个简单的例子,面对复杂的案例,我们并不总是能找到一个简单合适的数学公式,这时,我们便可以通过循环来解决。
1 | let i: int = 100 |
最终也能得到结果,这里我们用到了while循环,他的语法是
1 | while condition |
它的逻辑是,只要条件condition为真,就循环执行while_expr,但在这种单纯计算的例子上用while似乎有点麻烦,还要声明计数器i,每次还要让它减1,这似乎太麻烦了,于是我们便可以用for循环,它的语法如下:
1 | for i in n..m |
这就相当于
1 | let i: int = n |
所以,我们便能改写为:
1 | let sum: int = 0 |
这里的for语句,就可以看作是$\sum_{i=n}^{m}…$只不过不再仅仅局限于求和了
- Title: 06-流程控制
- Author: Wan Yutong
- Created at : 2026-02-28 18:36:16
- Updated at : 2026-03-03 11:38:47
- Link: https://cr0.dpdns.org/2026/02/28/06-ProcessControl/
- License: This work is licensed under CC BY-NC-SA 4.0.