iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
2
Software Development

念美術的女孩不可能學會資料結構與演算法?系列 第 4

三、女孩的第一支程式 (2)

「可是,你不覺得這程式根本沒做甚麼事情嗎?」男孩說道。

「對啊!」

「所以我們接著要來認識程式的基本邏輯」

「基本邏輯?那是甚麼?」我好奇地問。

「就像世界是由各種規則所組成而運作著。其實程式就是由幾個簡單規則所構成。分別是變數、條件判斷、迴圈,僅僅這三個規則就能完成所有我們想的到的各種任務喔!」男孩伸出三個手指。

「讓這世界運作的規則少說也成千上萬吧,三個規則是怎辦到的?」我非常懷疑小光在說什麼。

「這大概就是電腦、程式迷人的地方吧!」男孩燦笑。

「好吧,所以那三個規則幹嘛的呢?」我繼續問。

「先來講講什麼是變數吧!」


「想像一下我們今天有個很簡單的工作,請你算出兩個整數 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 計算結果,因為我們已經讓 x1234 了,所以等於是讓 output1234 + 5678 的結果。換句話說,output 就是剛剛提到的神奇的盒子會掉出有結果的球!

這邊要注意的是,在所有程式的設計上,「變數」一定在等號左邊,「運算的式子」一定在右邊。
所以我們不能這樣寫:

x + 5678 = output // 錯的

儘管上面的式子感覺很合理,但是很遺憾的是,程式並不能這樣寫,我們只能將變數放在左邊。
實際上電腦在處理 let output = x + 5678; 這行程式的時候,是先算右邊的 x + 5678 再將算出來的值賦予等號左邊的 output。這有個特別的術語,叫做左值(left value)與右值(right value)。
不過在這邊我們只要先記住這個規則,寫程式的時候,變數放在左邊,運算放在右邊,並且右邊的運算會先進行,然後存在左邊的變數。

然後最後就是,我們把 output 藉由 println! 來印出來。


女孩:「....」(女孩不知道他自己有什麼問題,請網友他一起想想)


(明日繼續)


嗨,喜歡本系列的話,可以追蹤作者粉專「微中子」喔!


上一篇
二、女孩的第一支程式(1)
系列文
念美術的女孩不可能學會資料結構與演算法?4
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
alantsui
iT邦新手 5 級 ‧ 2019-09-21 11:55:14

下一年度我嘗試一下用Golang/svelte續寫你的故事吧。我知道寫小説對IT人來説本來就難/images/emoticon/emoticon06.gif

微中子 iT邦新手 4 級 ‧ 2019-09-22 01:49:42 檢舉

我有自信能寫出來好看的文章啦 XD
只是有點忙 有點懶 沒啥動力 就不想寫了

alantsui iT邦新手 5 級 ‧ 2019-09-22 11:49:39 檢舉

那好吧

我要留言

立即登入留言