【CS50x(2022)】 Week0 - Scratch
開始挑戰 CS50x(Introduction to Computer Science)了!
What ultimately matters in this course is not so much where you end up relative to your classmates but where you end up relative to yourself when you began.
—— CS50x
前言
第一次接觸到 Harvard 有名的 CS50 課程是在 Youtube 上看到這部影片:
台上四位同學拿到一模一樣的道具、聽到一模一樣的指令,但是卻做出不一樣的動作。講師利用這種情境來告訴聽眾:我們給予的指令要「精準」,不然容易出現意料之外的結果。這種情境式的教學方式讓我覺得很有趣,運用一些簡單的例子來協助理解 Computer Science。
課程內容
- What is computer science?
- Representing numbers
- Text
- Images, video, sounds
- Algorithms
- Pseudocode
- Scratch basics
- Abstraction
- Conditionals and more
二進位(Binary)
電腦只看得懂 0
跟 1
,而二進位制是一種用 0 和 1 代表不同數字的進位方式。二進位中每個 bit 可以表示 1 和 0,而當我們有更多的 bits 時我們可以代表更大的數字,例如二進位的 11 是十進位的 3,111 是十進位的 7。
ASCII/Unicode
既然二進位表達的是「數字」,那其他的文字、符號呢?
ASCII 和 Unicode 都是字符對照表,兩者的差別就不贅述了。都是用數字來表示字母,例如:大寫的 A 是用十進位的 65 表示,也是二進位的 01000001。
RBG、圖片、影片
RGB 是把顏色用不同「值」的紅(Red)、綠(Green)、藍(Blue)組合而成。而很多不同的顏色可以組成圖片、很多圖片可以連成影片。
二分搜尋法及程式邏輯(電話簿情境題)
問題:要怎麼從厚厚的電話簿中找到指定人物的電話呢?
- 一頁一頁翻 ➜ 可以正確找到,但是好沒效率…
- 兩頁兩頁跳著翻 ➜ 查詢效率是兩倍,但是萬一在單數頁怎麼辦?
- 二分搜尋法 ➜ 從中間翻閱,依照姓名排序捨棄一半資料(不斷重複)
完善搜尋方式的過程,並把過程用虛擬碼(pseudocode)寫出來幫助思考整個流程運作,最後用虛擬碼解釋函式、條件判斷、變數、迴圈…等是什麼?
(圖片來自 CS50 課程內容 )
Scratch
用拼圖方式一步步組裝,做出一個可以運行的程式。
小結
寫程式其實就是一個解題的過程,首先要確保可以得出正確的答案,再來才是優化解題的過程。
在電話簿情境題中,如果僅僅是為了提升效率而兩頁兩頁做排查,也許會因為搜尋對象在單數頁而錯過。那即使可以在較短時間排查更多的資料也沒用,因為這種排查邏輯並不完善。
從開始學習程式到現在已經大約半年了,由於 CS50x 是全英文課程,如果沒有一點點的程式基礎,聽起來真的會比較辛苦。半年前第一次聽的我和現在的重新撿回課程的我比起來,終於能比較順暢的聽懂了!接下來就是好好地堅持下去,認真的走完這個課程。
相關文章: CS50x(2022)
文章內容如有錯誤,歡迎留言討論!
本 Blog 上的所有文章除特别聲明外,均採用 CC BY-SA 4.0 協議 ,轉載請註明出處!