停课不停学|跟 YouTuber 鸡丁学写 App 今次同你讲“条件”?

撰文: 蔡浩腾
出版:更新:

【Swift 写 App】早前我们就与 YouTuber 鸡丁用 iPad 以及免费工具《Swift Playground》学写 Apple 编程语言 Swift,不过只学了“指令(Command)”与“函数(Function)”实在太皮毛,总不能每次都要我们亲自教电脑走每一步吧?这次进深一点,学习让电脑自行“思考”的方法,让它们自行按现况作出行动,就是“条件码”以及“变数”。

前文重温

点按前往>>跟YouTuber鸡丁学写Swift:Apple免费编程10分钟入门

点按前往>>跟鸡丁用 Swift Playground 实试写游戏、3 分钟速成个人化包剪揼

条件码:“if…..else”

条件码,简单而言就是为程式加上一个逻辑判断,指导电脑在附合或不附合一定条件的情况下进行一系列的动作。而首先要学习的,就是“if”的逻辑。“if” 可算是近代编程语言中最常见的条件码之一,它为程式提供了一个“Boolean(布林)”的逻辑推断。

就如字面上一样,“If”即“如果”,“如果”程序中的进程附合某个条件,亦即是 Boolean 逻辑中的“True(是)”,反之就是“False(否)”。

在 Swift Playground 中就有一个相当简单的应用,如果机械人站在一个关闭了的开关上面,就要将之打开,写法就是:

if isOnClosedSwitch {
toggleSwitch()
}

当然在电脑的判断过程中,未必只会存在单一的“是”、“否”逻辑,很多时都是会多于一种情况需要预先准备应对,在 Swift Playground 的例子中,机械人除了会遇到开关,还会见到钻石、而机械人就需要将之拾起;此时就需要加入一个“else”在之后,让机械人作另一次的判定:

if isOnClosedSwitch {
toggleSwitch()
} else if isOnGem {
collectGem()

在 Swift Playground 中就有一个范例,面前有两格会随机出现开关或钻石,霆保我们学会让机械人学会如何应对不同情况(图 Swift Playground)

为更多条件做准备:“While”与“Variable(变数)”

在电脑运作过程中,当然不会只有“是”与“否”两种逻辑的,有不少时候我们会需要电脑重复做某些动作达一定次数,或是寻找某一个目标达到一定次数等等,这当然可以通过多次的“if”验证去成就,然而当提及到“数量要求”时,我们多会以“while loop(while 迴圈)”的写法去成就,以避免编程过于累赘。

而要做到这种数理逻辑前,我们就先要为系统界定一个“变数”,以提供一个位置去储存这个“while loop”所需要判定的数字。

在 Swift Playground 中,我们就可以学习以变数去记录目前机械人所得的钻石数字。(图 Swift Playground)

要界定一个变数,需要用到“var”,之后的名字可以任意决定,不过为了方便理解,在记录钻石数目时我们仍然会以“GemCounter”去命名,亦即:

var GemCounter = 0

界定完毕之后,我们要让系统在每次拾取钻石之后都为 GemCounter 这个变数加上 1,写法就是:

var GemCounter = 0
CollectGem()
GemCounter = GemCounter+1

了解变数的生成与变更方法之后,我们就可以利用“While”去继续编程。例如我们在编程中需要机械人将 6 粒钻石全都拾起,而“当(While)”它未储齐 6 粒之前我们都需要它继续前进并不断沿途检查的话,我们的写法就是:

While GemCounter < 7
{
If isOnGem {
CollectGem()
GemCounter = GemCounter+1
MoveForward()
}else{
MoveForward()
}

结合我们上一次学习的函数功能的过话,SwiftPlayground 中的机械人就可以自行应付更为复杂的路线,而不需要我们预先输入大量指令去指导它前进。