停課不停學|跟 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 中的機械人就可以自行應付更為複雜的路線,而不需要我們預先輸入大量指令去指導它前進。