學程式設計跟任何語言一樣,「練習」是不二法門,學外語有個「1,000小時定律」,就是說一個人從零基礎,持續累積1,000小時的練習,就能精通某種外語,假設最少每週練習6小時的話,大約166週(3年左右),就能達成目標。

程式設計應該也差不多,100小時左右可以入門,1,000小時能夠精通,不會忘記。1,000小時看起來好像很漫長,但實際上,如果有天份和興趣,這1,000小時的投資,可以讓你一輩子受用20-30年,非常划算。

Swift 既然是一種「語言」,就會有常見的「句型」跟「片語」,以我們目前所學歸納起來,有以下幾種基本句型:

表1-6a Swift基本句型

# Swift基本句型 範例 說明
1. 宣告句 `let n = 0
var 我的名字 = "Angela"
var 陣列: [Int]
func 因數(_ n: Int) -> [Int] { }` 宣告用來定義新的變數、常數、函式、資料型態...等等
2. 指定句 `新陣列 = 起始陣列 + [下一個數]
n = 費氏數列(92)` 先做等號右邊的運算,再將結果指定給等號左邊
3. 條件句 if i < 100 { } else { } 根據邏輯運算式的結果,選擇執行的 { } 段落,else 子句可省略
4. 迴圈句 `for i in 1...100 { }
while i < 100 { }
repeat { } while i < 100` for, while, repeat 三種迴圈
5. 函式呼叫 print() 注意函數的參數與回傳值
6. 其他指令 return 控制程式執行流程

而所謂的「片語」是構成句子的一部分,在 Swift 裡面通常稱為「運算式(Expression)」或表達式,本身並不是完整的句子。歸納如下表:

表1-6b Swift運算式

# Swift運算式 例句 說明
1. 算術運算式 x * x + 2 * (x + 1) 先乘除後加減,括號最優先
2. 邏輯運算式 i == 99n < 0 結果為 true 或 false
3. 字串運算式
陣列運算式 `"你好" + "我是Angel" + "很高興認識你"
[0, 1] + [1, 2, 3, 5]` 數字以外的資料類型,有些也可以用來做算術運算或邏輯運算
4. { } 段落 `{
let pi = 3.14, i = 10
var sum = 0
sum = sum + i * pi * 2
}` { } 是零或多個句子形成的「段落」,當成「子句」,放在句子的最後。{ } 裡面,任何句型都可以寫。

另外「函式呼叫(function call)」比較特別,函式可能是一個新的指令,可以當作單獨的句子,如 print();若函式有回傳值,也可當作是運算式的一部分,例如 if 費氏數列(n) < 10000 { print(n) }

所以,就像學習寫作文一下,先學單字(變數、常數、保留字)、再學造詞(運算式)造句、最後練習作文。

用以上這些的句型,來分析一下範例1-5c程式,如下圖。

這個小程式由(最外層)4個句子組成,其中的第③句函式宣告又是由⑹個子句組成,其中包含一個for迴圈句,迴圈中有⒉個子句。