/ CS50

CS50 筆記:第零講 Scratch

筆記前言

誤打誤撞成為網站開發小雜工以後,默默地工作了一年,深刻地感受到基礎知識的不足。這也促使我決定跑來看看 CS50 的課,惡補一下 CS 領域的基礎知識。

覺得出社會以後可以當個網站工程師掙錢,是相當幸福的。薪資跟社會地位不算太差,又剛好到了不太加班、也給員工許多彈性跟機會的地方。每天都有新的挑戰跟問題,生活非常有趣。但相對的,必須要不斷地成長,不斷地學習,才能爭取更好的發展與未來。

CS50 系列公開課一直都有清楚的講義跟影片,這份筆記比起幫助別人,更像是記錄自己的學習跟成長。

但如果正好你有需要,有想交流討論的地方,都歡迎聯絡我owo/

email: fumitsuki0802@gmail.com

lecture 0

英文講義:https://cs50.harvard.edu/college/2020/fall/notes/0/

binary

人類使用 10 進制 (0-9)來表示數字,例如 123 相當於 1 * 10^2 + 2 * 10^1 + 3 * 10 ^ 0

電腦是透過電位差、脈衝的有無來處理訊息,所以只有兩種狀態(比方說高電位、低電位),相當於 0 跟 1。透過 0 跟 1 來表示數字又稱二進制。

例如,三個燈泡最高可以表示到數字 7 (不是 3 XD)(如果只能表示到 3 也太浪費了)

off off off   0
off off on    1
off on  off   2
off on  on    3
on  off off   4
on  off on    5
on  on  off   6
on  on  off   7

每一個燈泡就像一個小開關,可以被開啟(1)、關閉(0),電腦裡面有成千上萬的電晶體 (transistor)就是這個小開關的角色。

如何表示文字、顏色、圖片、影片

字元

每個字元可以透過數字來表示,例如 A 是 65,相當於 1000001 一般的英文字母、數字、基本符號都包含在 ASCII 中(1bytes,可以存 256 種符號)但許多語言需要的空間遠遠超過(漢字、emoji…),所以發展出 UNICODE,有 8, 16, 32…bit 等,目標是涵蓋所有人類語言的字元

顏色

例如 RGB 是用紅綠藍光的多寡來表示一個顏色

圖片

基本的點陣圖圖片是透過一個一個點陣的顏色等資訊所組成 pixelation

演算法

input -> algorithm -> output

演算法必須正確(correct)與精確(precise)

例如,我想在電話簿中找到我的名字,我的策略是

打開書
翻 10 頁
看看這一頁
if 我找的名字在這一頁
  打電話
else if 不在這一頁
  回到 line 2
結束

有可能教授要找的電話在書裡但被我跳過了,這個 algorithm 就不算正確的。

精確的部分,因為電腦不像人類有自己的判斷(「作者可能意思是這樣」、「這裡的鹽加少許大概是一湯匙」),所以必須把步驟寫得精確才能變成可執行的步驟。

Scratch

教授第一堂課帶大家感受寫程式叫大家用用看的工具: https://scratch.mit.edu

抽象化(abstraction)

把許多步驟細節包在一個 function 裡面,我知道這個 function 可以用來做什麼,但不需要知道實作細節

fumitsuki

文月

擅長耍雷的フレンズ,在茫茫海海探索人生中