〖學習筆記〗cs50 — week1 : C
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.c
、cd ../
切換到上一層
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 的四個階段
- Preprocessing 預處理:檢查語法、處理#include(把函式庫的程式碼貼過來)Ex:
clang -E (檔案名稱)
- Compile 轉譯:把C的程式碼轉成組合語言 Ex:
clang -S (檔案名稱)
- Assembling 編譯:把組合語言轉成機器語言(2進位的機器碼machine code)
- Linking 組合:把你的code、系統的code、cs50的code全部組合在一起,產生一個2進位檔案a.out,或者任何你想取的名字。
Ex: xxd -l 40 -c 10 (檔案名稱)
由於 C 語言是編譯式語言,所以每次都要要依賴編譯器(compiler)將程式編譯成機器碼。這樣的好處是執行速度比較快。直譯式語言,不需要編譯器,在執行時會一行一行編譯,速度會稍微慢一點,好處是可以馬上測試,就會知道有沒有哪邊打錯。 Ex: Python
參考資料: