指令與資料
我們撰寫的每一行程式碼,通常都是一條「指令」,會讓電腦去執行相應的命令,例如print()
命令的功能就是讓電腦印出括號內的資料,假設我們想在自己的筆記型電腦上新增一個功能,可以印出目前剩餘的電池電力。
print(...?)
不像印出 Hello World! 這麼單純,我們現在不知道要在括號裡面寫什麼了!因為不像印出固定的打招呼句子這麼簡單,我們的電池電力是會變動的,因此不可能寫成print(0)
或者print(87%)
這麼簡單的指令。
我們腦海中的想像可能是這樣的:
print(電池的電力)
我們希望電腦會自動的去查找電池的電力
現在剩餘多少,然後最後印出87%
這樣的訊息,這有沒有可能做到呢?完全是可以做到的!我們所寫的這些電池的電力
和Hello World!
就是「資料」,前者是一個會隨著電池狀態變動的數值(我們希望如此),後者是固定的句子,而這些資料將會與指令結合,交付電腦,最後正確的做出使用者的命令。
為了達成這樣的目標,我們在使用資料之前,都必須告訴電腦「我需要一條這樣的資料,請把它放在記憶體裡。」之後我們使用這項資料的時候,電腦才有辦法在記憶體裡面認出我們到底試圖告訴它什麼。
Swift 語言提供兩種基本的方法:
let a = 1 var b = 2
第一行用let
指令告訴電腦,我們要有一個「常數」叫做 a
,而它等於 1
。第二行用var
指令告訴電腦,我們要有一個「變數」叫做 b
,而它目前等於 2
。常數和變數的區別是,常數一旦建立在電腦的記憶體之後,它的值就不會改變,而變數的值在建立之後仍然能被改變。試圖用指令去改變一個常數的值,電腦會做出錯誤警告,程式是無法執行的。
為什麼要有這樣的區別?動腦想想什麼情況下會用常數,什麼情況下會用變數?
有了這樣的資料之後,我們就可以在指令裡面使用了:
print(a+b) // 將會印出3 b = 5 // 將變數b的值改為5 print(a+b) // 將會印出6
這邊順帶一提,在程式碼裡面我們可以任意的加入以//
開頭的文字,這稱為「註解」,用於標註筆記,//
後面的任何文字或指令,電腦都不會理睬,只是給我們自己看的,而//
前面的指令仍然會被執行。
另一個要特別提到的是,在電腦的世界裡面,等號=
的用處和人類世界裡是不同的,它的意思是「將等號右邊的值,放進等號左邊的資料裡」,因此有時候我們會看到這樣的程式碼:
b = b+1
在人類世界裡面使用這種程式碼,可能會被數學老師直接八頭,但是在電腦的領域,它首先會檢查等號右邊的程式碼,看到b+1
這樣的算式後,它去查找b
的值,發現目前是5
,於是它將算式5+1
的結果:6
,存進變數b
裡面,因此執行完這行程式碼之後,變數b
的值變成了6
。