- 當我們要去評價程式碼的品質時,我們會考慮以下元素:
- 正確性(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
的函數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
。