「可是,你不覺得這程式根本沒做甚麼事情嗎?」男孩說道。
「對啊!」
「所以我們接著要來認識程式的基本邏輯」
「基本邏輯?那是甚麼?」我好奇地問。
「就像世界是由各種規則所組成而運作著。其實程式就是由幾個簡單規則所構成。分別是變數、條件判斷、迴圈,僅僅這三個規則就能完成所有我們想的到的各種任務喔!」男孩伸出三個手指。
「讓這世界運作的規則少說也成千上萬吧,三個規則是怎辦到的?」我非常懷疑小光在說什麼。
「這大概就是電腦、程式迷人的地方吧!」男孩燦笑。
「好吧,所以那三個規則幹嘛的呢?」我繼續問。
「先來講講什麼是變數吧!」
「想像一下我們今天有個很簡單的工作,請你算出兩個整數 a 和 b 的和 a + b ,我們是如何操作做計算這個過程呢?」男孩在紙上寫下了 a + b
看著我問道。
「我大概需要動筆算一下,或甚至心算得到答案。」
「對!不過假設兩個數字都超級大,你可能不會想自己算,太麻煩了!今天剛好有個神奇的盒子,上面有一個洞,我們只要把寫好數字的球兩個一起丟入洞裡,就會有寫好算好相加的數字的球掉出來。」
「有這麼好的事情?」
「我們來實驗一下這個神奇的盒子。假設今天想算 1234 + 5678 這兩數和,我們先是將 a 球寫上 1234 再將 b 寫上 5678,然後把 a 和 b 兩個球丟進盒子,馬上就有一個寫成答案的球掉出來,我們就神奇地得到答案了——6912!」男孩在紙上畫了兩科球和一個有洞的盒子。
「我不相信有這樣的盒子!」我差點沒翻白眼。
「這個盒子就是所謂的電腦喔!a + b 中的 a 和 b 就稱為變數,沒錯這就是國中數學的定義!只要 a 和 b 代不一樣的數字,就是不一樣的兩數和。剛剛使用神奇盒子算 a + b 的步驟,其實就是電腦程式運作的步驟!電腦知道今天有 a 和 b 並且要做加法,並且得到 a 和 b 是什麼,然後它就可以快速計算,並得到結果,運算過程是計算機結構的細節,這邊我們想像就是有個神奇盒子就好。
現在我們將問題簡化成只剩一個變數 x + 5678,如果我們想要得到答案,勢必是將數字帶進去 x,我們可以帶入隨便一個數字,讓電腦可以很快幫我們算出結果。所以現在我們的問題就變成,那要怎麼把它變成電腦可以去算的樣子?
讓我們開始寫程式吧!」小光又打開了電腦開始了講解。
首先我們來看這段程式碼:
let x = 1234;
let output = x + 5678;
println!("{}", output);
我們去執行上面的程式碼會得到了 6912 這個數字。那這個數字是怎麼來的呢?我們來仔細解釋這三行程式碼的意義。
首先 let
關鍵字是建立一個「變數」,因為我們想要計算 x + 5678
,所以先用 let
x
建立一個變數 x
,又我們要給 x
變數賦予一個值,所以這邊寫了 let x = 1234;
。到這邊程式中已經有了一個 x
值是 1234
。
接著我們讓另外一個變數 output
當作是 x + 5678
計算結果,因為我們已經讓 x
是 1234
了,所以等於是讓 output
為 1234 + 5678
的結果。換句話說,output
就是剛剛提到的神奇的盒子會掉出有結果的球!
這邊要注意的是,在所有程式的設計上,「變數」一定在等號左邊,「運算的式子」一定在右邊。
所以我們不能這樣寫:
x + 5678 = output // 錯的
儘管上面的式子感覺很合理,但是很遺憾的是,程式並不能這樣寫,我們只能將變數放在左邊。
實際上電腦在處理 let output = x + 5678;
這行程式的時候,是先算右邊的 x + 5678
再將算出來的值賦予等號左邊的 output。這有個特別的術語,叫做左值(left value)與右值(right value)。
不過在這邊我們只要先記住這個規則,寫程式的時候,變數放在左邊,運算放在右邊,並且右邊的運算會先進行,然後存在左邊的變數。
然後最後就是,我們把 output
藉由 println!
來印出來。
女孩:「....」(女孩不知道他自己有什麼問題,請網友他一起想想)
(明日繼續)
嗨,喜歡本系列的話,可以追蹤作者粉專「微中子」喔!
下一年度我嘗試一下用Golang/svelte續寫你的故事吧。我知道寫小説對IT人來説本來就難
我有自信能寫出來好看的文章啦 XD
只是有點忙 有點懶 沒啥動力 就不想寫了
那好吧