〖學習筆記〗cs50 — week1 : C

Shih Ting, Tai
Sep 26, 2021
課程大綱1. 程式概念(Scratch)
2. 從概念到語法(Scratch vs C)
3. CMD(Command line) 指令
4. 從寫 code 到執行(Compiler)
5. 資料型態(int, char, overflow, float)
6. 抽象化 (Abstraction)

從概念到語法 (Scratch vs C)

  • 程式進入點 int main(void)

在Scratch裡面,要點下綠旗才開始執行程式積木。這個動作有一點類似 int main(void)這串,每個C語言程式的開頭都會有這串,可視為程式的進入點。

int:整數 integer的意思,意思是程式執行完後,會回傳一個整數給系統。
void:虛無、空白的意思,意思是在main()裡面不要放入任何參數。
  • 印出 printf()

printf指print,f是formatted的意思,就是會按照格式印出來

Ex:printf("hello, %s/n", name) //hello, (name)

%s 叫做placeholder,它有各種型態,如%c、%f、%i,對應到不同的資料型態。使用方法就是放在引號裡面,然後在引號外面逗點,再寫上你要放的變數。

CMD(Command line) 指令

  • pwd:Print Working Directory 印出(現在資料夾)所在的路徑
  • ls:List Segment 列出(現在資料夾)底下的所有檔案
  • cd (資料夾名稱):Change Directory 切換至(資料夾)

Ex:cd hello.ccd ../ 切換到上一層

  • mkdir (資料夾名稱) /rmdir (資料夾名稱):MaKe DIRectory / ReMove DIRectory 新建/刪除資料夾
  • rm (檔案名稱):ReMove 刪除檔案
  • cp (檔案名稱):CoPy 複製檔案
  • mv (檔案名稱.副檔名) (路徑):MoVe 移動檔案位置

Ex:mv hello.c ~/cs2021/pset1

  • mv (原檔案名稱.副檔名) (新檔案名稱.副檔名):MoVe 修改檔案名稱

Ex:mv hello.c world.c

  • man:MANual 使用手冊

程式 compiler 的四個階段

  1. Preprocessing 預處理:檢查語法、處理#include(把函式庫的程式碼貼過來)Ex: clang -E (檔案名稱)
  2. Compile 轉譯:把C的程式碼轉成組合語言 Ex: clang -S (檔案名稱)
  3. Assembling 編譯:把組合語言轉成機器語言(2進位的機器碼machine code)
  4. Linking 組合:把你的code、系統的code、cs50的code全部組合在一起,產生一個2進位檔案a.out,或者任何你想取的名字。

Ex: xxd -l 40 -c 10 (檔案名稱)

由於 C 語言是編譯式語言,所以每次都要要依賴編譯器(compiler)將程式編譯成機器碼。這樣的好處是執行速度比較快。直譯式語言,不需要編譯器,在執行時會一行一行編譯,速度會稍微慢一點,好處是可以馬上測試,就會知道有沒有哪邊打錯。 Ex: Python

參考資料:

CS50 課程導讀心得

https://vocus.cc/article/5f24f901fd89780001477fae

--

--

Shih Ting, Tai

Enhance overall happiness by improving human-computer interaction to benefit people.