close

建立工作目錄

為了程式寫作以及檔案管理的方便,我們通常會為每一次的練習建立一個空的目錄,這點先前有解釋過了。 因此,現在我們先利用之前所學過的東西建立這次練習所需的工作目錄:

  1. 請在你認為適當的地方建立一個資料匣,用來安放所有我們之後將要練習的程式碼。
  2. 在這個目錄下建立一個資料匣,這是要用來放我們這次要練習的程式,基本上我會建議為每一次的練習建立一個目錄。 不過,這裡的檔案目錄建立與管理方式只是個建議,你不一定要照我的邏輯來管理你的檔案,如果你有自己的檔案管理邏輯的話。
  3. 請檢查並確認前面所建立的目錄,其整個檔案路徑中不要含有中文、空白等符號。
  4. 請開啟終端機程式,並且移動工作目錄到你為本次練習所預備的資料匣下。

建立程式碼檔案

接下來,我們要建立一個用來寫程式的程式碼檔案:

  1. 請在這次練習的工作目錄下建立一個「空白的」、「純文字」檔案,你可以使用你熟悉的任何方法產生它。
  2. 請將這個檔案的檔名更改為「main.c」。 請特別記得副檔名一定要改為c,如果你的檔案管理器會隱藏檔案的副檔名的話,請把那個功能關掉,否則他可能會讓你沒法改副檔名。
  3. 請使用文字編輯器開啟main.c這個檔案。 如果你正打算打開你的Microsoft Word來做這件事的話,麻煩請停手!我們需要的是一個「純文字」的檔案編輯器,在Windows上好像叫作「記事本」。
  4. 請將下面這一段看似英文、但又夾雜一些你不曉得功用的符號的文字複製貼上到main.c裡,然後存檔:
#include <stdio.h>
int main(int argc, char *argv[])
{
    printf("First program!\n");
    return 0;
}
    

編譯程式碼

現在,我們已經有程式碼了(main.c),雖然你現在可能不知道裡面東西的意義,不過沒關係,我們稍候會解釋。 所以,我們只差使用編譯器把這個程式碼檔案變成可以在電腦上執行的執行檔。 請在終端機上輸入下面這個命令:

gcc main.c
    

原則上他不會跑出什麼字出來,請不用擔心;如果輸入命令後他印出一些東西,反而代表著可能有一些錯誤產生了。 命令列程式這樣子的反應通常對於從前沒有在命令列下做過事情的人會有些不習慣,也就是如果一切正常的話,他通常不會印出什麼東西。

現在,請檢查你的檔案管理器、或使用ls命令檢查一下你的工作目錄,若沒有意外的話應該會發現有一個叫「a」的新檔案被產生了! 這個檔案其實可能是有副檔名的,只是在不同系統下預設的副檔名不太一樣,在筆者的電腦上它叫「a.out」,而在Windows上他會變成「a.exe」。 總之,這個a檔案就是所謂的執行檔,現在請輸入這個檔案的名稱來執行它:

./a.out
    

註1:上面的out要視你實際的檔案名稱更改為像是exe等其他的字樣。

註2:這裡我們加了./來告訴電腦說我要執行「現在這個目錄下的」a.out,這是因為系統預設安全性的緣故; 至於Windows因為安全性比較差,當執行檔位在目前工作目錄下時一般不需特別指定路徑。

若你的終端機在執行了a執行檔後印出First Program!的字樣的話,那就恭喜你已經成功完成了我們的第一個程式:

請注意一件事,有些邪惡的人會告訴你使用IDE軟體來進行程式的編譯、執行、甚至寫作,請千萬不要這麼做! 如果你不知道什麼是IDE,那這是好事情。 至少在初學階段,我們要用最陽春的文字編輯器來寫程式,然後在終端機下輸入指令編譯、執行程式。 這樣子的訓練和學習是有的目的的,請千萬不能忽略,除非你以前已經使用同樣的方式學習過別的程式語言。

最基本的程式框架

現在在讓我們回來看看這個程式碼,請開啟main.c(如果你剛剛把這個檔案關掉了的話)。 這個程式看起來是一個最簡單的程式,只印出一行字而已; 不過其實這個程式碼還不是最簡單的,接下來請刪除程式碼的一部份,使它變成下面這樣:

int main(int argc, char *argv[])
{
    return 0;
}
    

然後再次編譯執行看看會有什麼結果。 你可以輸入下面的指令讓編譯和執行一次完成:

gcc main.c && ./a.out
    

執行的結果為:

你可以看到這個程式執行起來,然後什麼事都沒做就結束了! 請相信這個程式真的有執行起來,因為如果這個程式沒有被執行,比方說這個程式沒有被產生出來的話,執行起來應該會像是這樣:

或是想要執行一個不是執行檔的東西,比方說我們我們試著去執行main.c的話:

所以我們可以卻定剛剛的a程式是真的建立出來了,而且有被執行, 只是它什麼事都沒做(因為我們沒叫它做任何事)就立刻結束了而已! 也就是說,我們要寫一個C程式的話,最基本應該要先寫出像下面這樣的東西,然後再把我們要做的事情加在中間:

下面兩行是程式的開頭。
int main(int argc, char *argv[])
{

把我們要電腦做的事情
寫在程式開頭和結尾的中間。

下面兩行是程式的結尾。
    return 0;
}
    

其實上面所謂的程式開頭和結尾是有不少學問的,但礙於現在你什麼都不會的緣故,我就先不解釋它們。 所以現階段請你先「相信」它們必須要這樣寫,我們在很久以後會再來討論這些東西。

重點回顧

  • 如果你的檔案瀏覽器會隱藏檔案的副檔名的話,請關閉這個功能。
  • C程式碼檔案其實就是個純文字檔案,只是副檔名改成c。
  • 使用gcc srcfile.c (srcfile.c就是程式碼檔案,在這次的練習上應該是main.c)命令 可以把程式碼檔案編譯成可以在電腦上執行的執行檔a.??? (??? 的字樣會依據你的系統環境而不同)。
  • 輸入./a.???可以執行所產生的執行檔;而輸入gcc srcfile.c && ./a.???可以一次完成編譯並執行的工作。
  • 對於程式碼的開頭和結尾,我們先相信它的存在,照抄就好,現階段我們不會對其做深入的解釋。

練習與討論

在這個單元我們學會了建立一個最簡單的程式碼檔案,並且把它編譯程執行檔來執行。 現在請你把所有的檔案刪除、登出終端機,然後從頭再做一次當作練習。 這次的練習中請不要複製這篇文章內的程式碼,請試試看能不能自己用鍵盤打出這些程式碼。

arrow
arrow
    文章標籤
    C語言教學
    全站熱搜

    夜行者 發表在 痞客邦 留言(0) 人氣()