C

  • 當我們要去評價程式碼的品質時,我們會考慮以下元素:
    • 正確性(correctness): 程式碼是否有正確的解決我們的問題
    • 設計(design): 程式碼的好壞決定於它的效率可讀性
    • 風格(style): 程式碼在視覺上是否有良好的format
  • 我們的第一個 C 語言程式:
#include <stdio.h>

int main(void)
{
    printf("hello, world\n");
}

整合開發環境、編譯器、介面 IDEs, compilers, interfaces

  • 在執行程式前,我們必須將程式碼轉變成電腦可讀的 binary codes,也就是 0 與 1。
  • IDE(integrated development environments) 可以協助我們開發、編譯程式碼。如Visual Studio Code
  • 我們撰寫的程式碼為開源碼(source code),我們必須將他轉變成機器碼(machine code),才能被電腦執行。
  • 編譯器(compiler)是將一種語言轉變成另一種語言的程式,例如將開源碼編譯成機器碼。
  • 在 IDE 中,我們可以在一個叫作 terminal 的視窗中輸入指令。
  • terminal 提供了 command-line interface(CLI)
  • 當我們輸入 make hello,會產生一個叫作 hello 的檔案,我們可以透過輸入 ./hello 執行它。
    • . 代表當下的目錄,上面的指令代表我們要執行當下目錄中叫作 hello 的檔案。
    • hello 即是內含機器碼的檔案。
  • 欲刪除檔案可以用 rm 指令。
  • 輸入 ls 列出當下目錄所包含的檔案。
  • 若源碼檔經過修過,則必須重新編譯,才能對執行檔進行修改。

函式、引數、傳回值、變數 Functions, Arguments, Return Values, Variables

printf("Hello, world");
  • 此處,介紹一個叫作 printf 的函數
    • f 代表 formatted 的字串。字串是多個字元(characters)組成的字詞,在 C 中,我們需要用雙引號("")來包住它。
    • 括號 () 使我們可以輸入引數,也就是 printf 函數的 input
    • 最後,我們需要分號 ;,來宣告述句的結束。
  • 其中,函式的一種產物叫作 side effect,也就是我們可以觀察到的變化,如螢幕印出字樣,或是發出聲響。
  • 相比與 **side effects,我們也可以將函式的回傳值用於程式中,回傳值通被儲存於變數中。
string answer = get_string("What's your name? ");
  • 此處,示範 CS50 IDE 中的一個函數。
    • 這裡的 get_string為函式,而What's your name? 為引數。
    • 然後,我們可以將回傳值存入到變數中,以上例,我們可利用賦值運算子(=)將右值(r_value)傳給左值(l_value)的answer
    • 最後,我們宣告變數的變數型別(type)
      • 如果我們嘗試將上述的變數改為其他變數型別,編譯器會顯示錯誤。
printf("Hello, world\n");
  • 我們此處為了換行,而使用了 escape sequence \n