寫作程式時,需注意以下風格

  • 程式開頭應加註解,說明用途,建立時間,修改時間與內容,作者,使用工具


  • 函數的開頭也應對此函數註解說明

  • 見到{應內縮四個空格,以讓程式容易閱讀

  • 每一敘述應獨立一行,也就是說看到;{應該換行

Software development process

撰寫程式的流程如下圖,所需要的工具包括Text Editor,Preprocessor,Compiler,Linker等四種

Text Editor:程式設計師利用此工具編輯(Edit)Source code file(Text Format), 也就是說產生.c檔的工具。



Preprocessor:結合Source code file(.c檔)和零到多個Header files(.h檔),經過編輯(Edit)後成為另一個修改過的Source code file。

Compiler:將source code編譯(compile)產生Object code file(.o檔, Binary Format),同一個作業平台的Object code格式相同,也就是說Object code file可以由不同程式語言的Compiler產生。


Linker:將幾個Object code files連結(link)產生一個可執行檔(.exe檔)。


如果你的開發環境是在Windows上,下面有關vi和gcc的說明可以跳過。

在Unix作業系統內,最常見的Text Editor是vi。
  Preprocessor,Compiler和Linker可以是三個不同的程式,也可以包成一個。Unix作業系統上最常見的C語言開發環境是gcc(GNU C Compiler),他把Preprocessor,Compiler和Linker三個功能合在一起以方便使用。最簡便的用法是:

gcc hello.c

  若hello.c完全沒有錯誤,則以上命令會產生一個執行檔a.out,在命令列下打a.out即可觀察你所寫程式的執行結果。有時候若你設定的環境變數不對,則可能出現Command Not Found的錯誤,此時你可輸入./a.out。若不想讓gcc編譯出來的執行檔叫做a.out,則可下達以下命令:

gcc -o exename hello.c

  撰寫大型程式時,很可能會有多個.c的原始程式檔,假設他們的名稱是source1.c, source2.c, source3.c...如果要個別編譯這些source code,則下達如下命令:
gcc -c source1.c

  若編譯成功,會產生source1.o的檔案。要將數個Object Code連結成為一個可執行檔,則下達以下命令:
gcc source1.o source2.o source3.o

  至於Windows作業系統上的程式編寫環境,最常使用的是Microsoft Visual Studio,裡面就包含了Visual C++的開發環境。因為C++可視為C語言的父集合,因此你也可以用Visual C++來開發C程式。這類視覺化的開發工具(Dev C++也是其中一種),已經把Text Editor, Preprocessor, Compiler, Linker整合在一起, 並包括Project Management(專案管理)等功能, 因此這類工具又稱為Integrated Development Environment(IDE,整合開發環境)。

電腦概論重要名詞

Control Unit(控制單元): 負責指令的擷取和解釋


ALU(Arithmetic and Logic Unit, 算數與邏輯單元): 負責算數與邏輯指令的實際執行工作,裡面有一些記憶體供計算所需,特別稱為Register(暫存器)。暫存器的數量隨硬體而不同,此處說明用的虛擬電腦只有一個暫存器。 一般常見的暫存器則有

累加器(Accumulator):儲存執行運算的資料

旗標暫存器(Flag Register):儲存運算處理後的CPU狀態

程式計數器(Program Counter):儲存目前執行指令所在的地址

基底暫存器(Base Register):表達某塊記憶體空間的開始位置

索引暫存器(Index Register):儲存基底暫存器的相對位置

通用暫存器(General Purpose Register):儲存一般資料

指令暫存器(Instruction Register):儲存指令。僅供CPU內部使用
 
 
在上圖的機器中共有100個記憶體可用,每個記憶體可以存放3個數字。Control Unit, ALU, Program Counter在現代的硬體設計裡多做在一起,稱為CPU(Central Processing Unit)。Pentium 4就是Intel這家公司的CPU產品。
電腦執行一個機器指令的步驟為:
1.Fetch(擷取指令): 由Control Unit讀取Program Counter的內容,根據Program 2.Counter的數值去相對應的Memory抓指令
3.Decode(解碼): 抓到的指令經Control Unit判讀,決定要如何執行該指令
4.Execute(執行): 在ALU(Alrithmetic and Logic Unit)裡執行該指令
5.Write(寫回): 更改Program Counter的內容

電腦系統概論

資料來源:http://programming.im.ncnu.edu.tw/C_index.html

程式寫作概論 http://programming.im.ncnu.edu.tw/Chapter0.htm
電腦系統概論 http://programming.im.ncnu.edu.tw/Chapter1.htm
電腦內部運作 http://programming.im.ncnu.edu.tw/Chapter2.htm
C語言的總覽 http://programming.im.ncnu.edu.tw/Chapter3.htm
C的工具語言 http://programming.im.ncnu.edu.tw/Chapter4.htm
型別與運算 http://programming.im.ncnu.edu.tw/Chapter5.htm
流程控制 http://programming.im.ncnu.edu.tw/Chapter6.htm
迴圈範例練習 http://programming.im.ncnu.edu.tw/Chapter7.htm
函數與遞迴http://programming.im.ncnu.edu.tw/Chapter8.htm
指標 http://programming.im.ncnu.edu.tw/Chapter9.htm
陣列 http://programming.im.ncnu.edu.tw/Chapter10.htm
字元字串 http://programming.im.ncnu.edu.tw/Chapter11.htm
指標陣列函數 http://programming.im.ncnu.edu.tw/Chapter12.htm
結構 http://programming.im.ncnu.edu.tw/Chapter13.htm
基本資料結構 http://programming.im.ncnu.edu.tw/Chapter14.htm
範例練習 http://programming.im.ncnu.edu.tw/Chapter15.htm