P725 C/C++語言程式設計 範例教本 課程名稱:_____________ 指導教授:_____________ 如何閱讀本書(I) 第一篇程式設計基礎的第1章是程式語言與C語言 的基礎,並且著手撰寫第一個C程式。 第二篇是結構化與模組化程式設計,第2~3章是 程式語言的變數、資料型態、運算子和C語言標 準函式庫的輸出與輸入,在第4章是流程控制結構, 第5章說明函數與巨集,並且以專案來建立模組化 程式設計。 第6~7章是基本資料結構的陣列和C語言初學者 最感困擾的指標,筆者使用大量圖例配合程式範 例來說明C語言的指標,第8~10章分別是C語言 的字串、結構和檔案處理。 如何閱讀本書(II) 第三篇是物件基礎程式設計,在第11章說明如何 從C至C++語言,第12~13章說明物件基礎程式 設計的類別與物件、常數與靜態成員、朋友關係 和過載。筆者使用大量的程式範例帶領讀者由結 構化程式設計進入物件基礎程式設計。 第四篇是物件導向程式設計,在第15~16章說明 物件導向的繼承、多重繼承和C++的虛擬與多形。 第五篇是泛型程式設計,在第17章說明C++樣版 的泛型程式設計,最後一章是名稱空間和C++的 例外處理。 在附錄C和D筆者分別使用模組和類別來建立常用 的資料結構,以便讀者可以比較模組化和物件導 向程式設計間的差異,進一步深入了解物件導向 程式設計。 目錄(I) 一、 程式設計的基礎 • 1. 程式語言與C語言的基礎 二、 結構化與模組化程式設計 • • • • • • • • • 2. 變數、資料型態與運算子 3. 基本輸出與輸入 4. 流程控制結構 5. 函數與巨集 6. 陣列 7. 指標 8. 字元與字串處理 9. 自訂資料型態 – 結構、聯合和列舉 10. 檔案與資料夾處理 目錄(II) 三、 物件基礎程式設計 • • • • 11. 12. 13. 14. 從C到C++語言 類別與物件 – 封裝 常數、靜態成員與朋友關係 過載函數與運算子過載 四、 物件導向程式設計 • 15. 繼承與多重繼承 • 16. 虛擬與多形 五、 泛型程式設計 • 17. 樣板 • 18. 名稱空間與例外處理 目錄(III) 附錄A:Dev-C++整合開發環境的安裝與使用 附錄B:Visual C++2005 Express的安裝與使用 附錄C:實作範例-資料結構使用C模組 附錄D:實作範例-資料結構使用C++類別 附錄E:C與C++語言的標準函式庫 附錄F:ASCII碼表 第1章 程式語言與C語言的基礎 1-1 1-2 1-3 1-4 1-5 1-6 1-7 程式語言的基礎 程式設計技術的演進 C語言的基礎 如何設計C應用程式 C應用程式的開發環境 第一個C程式與C程式架構 C語言的寫作風格 1-1 程式語言的基礎 1-1-1 1-1-2 1-1-3 1-1-4 1-1-5 程式與軟體 程式語言的種類 低階語言 高階語言 程式是如何執行 1-1 程式語言的基礎 「程式語言」(Programming Languages)如同人與人之間溝通的語言, 它是人類告訴電腦如何工作的一種語言, 即人類與電腦之間進行溝通的語言,以技 術角度來說,程式語言是一種將執行指令 傳達給電腦的標準通訊技術。 1-1-1 程式與軟體-程式 「程式」(Programs)是使用指定程式語 言所撰寫沒有混淆文字、數字和鍵盤符號 組成的特殊符號,這些符號組合成指令和 敘述,再進一步編寫成程式碼,程式碼可 以告訴電腦解決指定問題的步驟。 1-1-1 程式與軟體-軟體 「軟體」(Softwares)是一種電腦執行 的應用程式或作業系統,通常軟體是一個 或多個程式的泛稱,或是一整套應用程式, 「應用程式」(Applications)是一種處 理指定工作的電腦程式,例如:數學計算 分析、文書處理、試算表和程式語言整合 開發工具等。 1-1-2 程式語言的種類 目前的程式語言相當多,程式語言隨著電 腦科技的進步,已經延伸出龐大的族群, 在程式語言的分類上,以發展的世代來分, 如下表所示: 世代 第一世代 第二世代 第三世代 第四世代 第五世代 程式語言 機器語言(Machine Languages) 組合語言(Assembly Languages) 高階語言(High Level Languages) 應用程式產生的語言(Application-Generation Languages)或查詢語言(Query Languages) 邏輯導向語言(Logic-Oriented Languages) 1-1-3 低階語言 低階語言(Low Level Languages)是一 種偏向電腦容易了解的程式語言,屬於電 腦看的懂的程式語言,執行效率高,但是 使用者不易學習。 • 機器語言(Machine Language):程式是使用0 和1二進位表示的程式碼,電腦可以直接執行程式,執 行效率最高。 • 組合語言(Assembly Language):使用簡單符 號的指令集代表機器語言0和1表示的二進位程式碼, 需使用「組譯程式」(Assemblers)將它轉換成機器 語言,在電腦上執行。 1-1-4 高階語言-說明 高階語言(High Level Languages)是一種接 近人類語言的程式語言,可以稱為半英文(Halfenglish)的程式語言,因為電腦不能馬上看的懂, 所以需要進一步翻譯,在轉換成機器語言後,其 轉換出的程式碼通常比直接使用機器語言撰寫的 冗長,所以效率較低,但是非常適合使用者學習。 目前常見的高階語言有C/C++、C#、Java、 FORTRAN、COBOL、Pascal和BASIC等。 1-1-4 高階語言-編譯程式 編譯程式(Compilers) C/C++和Java等程式語言屬於編譯語言, 編譯程式需要檢查完整個程式檔案的程式 碼,在完全沒有錯誤的情況下,才會翻譯 成機器語言的程式檔案,其主要的功能有 兩項,如下所示: • 檢查程式錯誤。 • 將程式翻譯成機器語言的程式檔案。 1-1-4 高階語言-直譯程式 直譯程式(Interpreters) 早期的BASIC語言(例如:BASICA、 QuickBasic等)和目前網頁技術的「腳本」 (Scripts)語言,直譯程式並不會輸出檔 案,而是直接一個指令一個動作,一列一 列的執行程式碼,相對的其執行效率低, 但是非常適合在系統開發階段的程式除錯。 • 例如:VBScript和JavaScript都屬於直譯語言。 1-1-5 程式是如何執行-說明 不論高階或低階程式語言建立的程式最後 都會編譯成電腦看的懂的機器語言,這些 指令是CPU支援的指令集(Instruction Set),不同CPU支援不同的指令集,也就 是其能執行的機器語言。 CPU執行程式的方式為: • 電腦的主記憶體儲存機器語言的程式碼和資料。 • CPU從記憶體依序取出一個個機器語言指令, 然後執行它,CPU並非真正了解機器語言在作 什麼?這只是CPU的例行工作,依序執行機器 語言指令。 1-1-5 程式是如何執行-圖例 1-1-5 程式是如何執行-中央處理 器(說明) 電腦CPU提供實際運算功能,目前個人電腦都使 用單晶片的「IC」(Integrated Circuit),其 主要的功能是使用「ALU」(Arithmetic and Logic Unit)的邏輯電路進行運算,以便執行機 器語言的指令。 在CPU擁有很多組「暫存器」(Registers),暫 存器是位在CPU中的記憶體,可以暫時儲存資料 或機器語言指令,例如:執行加法指令需要2個運 算元,這兩個運算元資料就是儲存在暫存器。 1-1-5 程式是如何執行-中央處理 器(暫存器) CPU還擁有一些控制「取出和執行」(Fetchand-execute)用途的暫存器,如下所示: • 指令暫存器(Instruction Register,IR): 儲存目前執行的機器語言指令。 • 指令計數暫存器(Instruction Counter, IC):儲存下一個執行指令的記憶體位址。 • 記憶體位置暫存器(Memory Address Register,MAR):儲存從記憶體取得資料的 記憶體位址。 • 記憶體資料暫存器(Memory Data Register, MDR):儲存目前從記憶體取得的資料。 1-1-5 程式是如何執行-記憶體 (說明) 當我們執行程式時,作業系統將儲存在硬碟或軟 碟的執行檔案載入電腦主記憶體(Main Memory),這就是CPU執行的機器語言指令, CPU從記憶體依序載入指令和執行。 事實上,程式碼本身和使用的資料都是儲存在 RAM(Random Access Memory),每一個儲 存單位有數字編號稱為「位址」(Address)。 如同大樓信箱,門牌號碼是位址,信箱內容是程 式碼或資料,儲存資料佔用的記憶體空間大小, 需視使用的資料型態而定。 1-1-5 程式是如何執行-記憶體 (步驟) 當電腦的CPU中央處理器存取記憶體資料 的主要步驟,如下所示: • Step 1:送出讀寫的記憶體位址:當CPU讀取 程式碼或資料時,需要送出欲取得的記憶體位 址,例如:記憶體位址4。 • Step 2:讀寫記憶體儲存的資料:CPU可以從 指定位址讀取記憶體內容,例如,位址4的內 容是01010101,換句話說,取得資料是 01010101的二進位值,每一個0或1是一個 「位元」(Bit),8個位元稱為「位元組」 (Byte),這是電腦記憶體的最小儲存單位。 1-1-5 程式是如何執行-輸入/輸出 裝置 電腦的輸入/輸出裝置是程式的窗口,可以讓使用 者輸入資料和顯示程式的執行結果,目前而言, 電腦最常用的輸入裝置是鍵盤和滑鼠;輸出裝置 是螢幕和列表機。 在【記事本】使用鍵盤輸入英文字母和數字時, 螢幕馬上顯示對應的英文或中文字。對於電腦來 說,當在鍵盤按下大寫A字母時,傳給電腦的是 「ASCII」(American Standard Code for Information Interchange)碼。 • 例如:大寫A是65,換句話說,電腦實際顯示和儲存的 資料是數值65。 1-2 程式設計技術的演進 1-2-1 1-2-2 1-2-3 1-2-4 非結構化程式設計 程序式與結構化程式設計 模組化程式設計 物件導向程式設計 1-2 程式設計技術的演進-說明 計算機科學的「軟體工程」(Software Engineering)是專注於研究如何建立正確、 可執行和良好撰寫風格的程式碼,嘗試使 用一些已經驗證過且可行的方法來解決程 式設計的問題。 「程式設計」(Programming)是使用指 定的程式語言,例如:C/C++語言,以指 定的風格或技術來撰寫程式碼,在此所謂 的風格或技術是電腦解決程式問題的程式 設計方法。 1-2 程式設計技術的演進-程式設計 風格 程式設計技術(Programming Techniques)是 學習程式設計需要經歷數個學習過程,或稱為程 式設計風格(Programming Styles),如下所 示: • 非結構化程式設計(Unstructured Programming)。 • 程序式程式設計(Procedural Programming) 與結構化程式設計(Structured Programming)。 • 模組化程式設計(Modular Programming)。 • 物件導向程式設計(Object-Oriented Programming)。 1-2-1 非結構化程式設計 通常在初學程式設計時,都是使用非結構化程式 設計。對於C語言來說,主要是指不論幾列的小 程式或是數百列程式碼的大程式,都是置於一個 main()主程式,程式碼是以線性方式的依序執行, 如下圖所示: 1-2-2 程序式與結構化程式設計說明 程序式程式設計是將程式中重複的程式片斷抽出 成為「程序」(Procedures,或稱為 Subroutine、Routine)或「函數」 (Functions),即一段執行特定功能的程式碼。 程序式與結構化程式設計建立的程式,在主程式 的程式碼只是依序呼叫不同程序的「程序呼叫」 (Procedure Call),即依序執行各程序。程式 是使用流程控制來連接程序,即目前程式設計最 常使用的結構化程式設計,屬於程序式程式設計 的子集。 1-2-2 程序式與結構化程式設計-圖 例 程式分割成數個小程序,可以使用結構化程式設 計的由上而下分析法來進行程式分割,使用循序、 重複和條件結構連接各程序或程式區塊,如下圖 所示: 1-2-3 模組化程式設計-說明 為了能夠重複使用程序式程式設計分割建 立的程序,我們可以將相同功能的程序或 函數結合在一起成為獨立的「模組」 (Modules),模組是一個處理指定功能 的子程式。 每一個模組包含處理的資料和程序函數, 在主程式呼叫模組的函數時,可以將它視 為呼叫「函式庫」(Libraries)中的函數, 在功能上如同一個工具箱(Toolbox)。 1-2-3 模組化程式設計-圖例 C語言本身很小,大部分C語言的功能都是由函式 庫提供,模組可以將實際處理的程式碼和資料隱 藏起來,稱為「資訊隱藏」(Information Hiding)。 1-2-4 物件導向程式設計-說明 模組化程式設計是物件導向程式設計的前身,只 是沒有提供繼承和多形等物件導向觀念。 物件導向程式設計是一種更符合人性化的程式設 計方法,將原來專注於問題的分解,轉換成了解 問題本質的資料,也就是「物件」(Object)。 程式是由物件組成,物件內含處理的資料和相關 程序,物件是使用訊息來溝通,不同於模組化程 式設計的模組,物件很容易擴充功能和重複使用, 只需建立好物件後,由下而上就可以逐步擴充成 為一個完善的物件集合來解決整個程式問題。 1-2-4 物件導向程式設計-圖例 C語言並不是物件導向程式語言,C++語言才是 一種物件導向程式語言,它可以說是程序式語言 C的擴充。 1-3 C語言的基礎 1-3-1 C語言的歷史 1-3-2 C語言的特點 1-3-3 C語言的版本 1-3-1 C語言的歷史 C語言是由Dennis Ritchie在1972年於貝爾實驗 室設計的程式語言,之所以命名為C,因為很多C 語言的特性是來自其前輩語言B(由Ken Thompson設計),B是一種源於Martin Richards設計的BCPL程式語言。 1980年代C語言成為一種非常普遍和重要的程式 語言,用來設計作業系統和各種應用程式,更成 為學習程式設計最常使用的程式語言之一。 在1980年代晚期,Bjarne Stroustrup和其它實 驗室的同仁替C語言新增物件導向的功能,稱為 C++,C++已經成為目前Windows作業系統各 種應用程式主要的開發語言。 1-3-2 C語言的特點 C是一種結構化程式語言,擁有高階程式語言的 撰寫風格,但也擁有低階程式語言。 C是一種非常普遍的程式語言,目前大多數的作 業系統都提供C語言的編譯程式和標準函式庫, 使用C語言開發的應用程式可以很容易移植到其 它作業系統。 C語言建立的執行檔案很小,而且執行速度快, 事實上,C本身就是很小的程式語言,C語言的功 能是由C語言標準函式庫來提供。 C語言使用「前置處理器」(Preprocessor)處 理相當多的工作。 1-3-3 C語言的版本-K&R C K&R C 1978年Ritchie和Brian Kernighan出版 「The C Programming Language」 (簡稱K&R)一書,此書描述的C語言版本 通稱為K&R C版本,在此版本C語言新增的 C語言特點,如下所示: • struct自訂資料型態。 • long int和unsigned int資料型態。 • 運算子=+改為+=。 1-3-3 C語言的版本-ANSI-C ANSI-C 在1983年「美國國家標準局」(American National Standards Institute,簡稱ANSI) 設立X3J11委員會進行C語言的標準化,1989年 第一個官方版本的C語言規格書ANSI X3.1591989”Programming Language C”制定完成, 此版本即我們通稱的ANSI-C版本。 ANSI-C引用C++(C++是1980年代中期由 Bjarne Stroustrup設計)的函數原型宣告,支 援多國語言字碼集且定義C語言的標準函式庫。 1-3-3 C語言的版本-C99 C99 隨著C++語言的持續發展,ISO在1990年 出版C語言更新標準ISO 9899:1999,此 版本的C語言稱為C99,ANSI在2000年也 採用此標準,C99新增的特點,如下所示: • 支援C++的註解//。 • 新增long long int、boolean等資料型態。 • 採用C++可以在程式任意位置宣告變數。 • 可變長度陣列。 1-4 如何設計C應用程式 1-4-1 程式設計的基礎 1-4-2 演算法 1-4-1 程式設計的基礎-說明 程式設計是將需要解決的問題轉換成程式 碼,程式碼不只能夠在電腦上正確的執行, 而且可以驗證程式執行的正確性,基本上, 程式設計的過程可以分成五階段,如下圖 所示: 1-4-1 程式設計的基礎-需求 需求(Requirements) 程式設計的需求是在了解問題本身,以確切獲得 程式需要輸入的資料和其預期產生的結果。例如: 計算出從1加到100的總和,程式輸入資料是相加 範圍1和100,然後執行程式輸出計算結果5050。 1-4-1 程式設計的基礎-設計 設計(Design) 在了解程式設計的需求後,我們就可以開始找尋 解決問題的方法和策略,簡單的說,設計階段是 找出解決問題的步驟。例如:1加到100是 1+2+3+4….+100的結果,程式是使用數學運 算的加法來解決問題,因為需要重複執行加法運 算,所以迴圈結構就派上用場。 1-4-1 程式設計的基礎-分析 分析(Analysis) 在解決需求時只有一種解決方法嗎?例如:如果 有100個變數,我們可以宣告100個變數儲存資 料,或是使用陣列(一種資料結構)來儲存,在 分析階段是將所有可能解決問題的演算法都寫下 來,然後分析比較哪一種方法比較好,選擇最好 的演算法來撰寫程式。 如果不能分辨出哪一種方法比較好,請直接選擇 一種方法繼續下一個階段,因為在撰寫程式碼時, 如果發現其實另一種方法比較好,我們可以馬上 改為另一種方法來撰寫程式碼。 1-4-1 程式設計的基礎-撰寫程式 碼 撰寫程式碼(Coding) 現在我們就可以開始使用程式語言撰寫程 式碼,以本書為例是使用C語言,在實際撰 寫程式時,可能發現另一種方法比較好, 因為設計歸設計,有時在實際撰寫程式時 才會發現其優劣,如果這是一個良好的設 計方法,就算改為其它方法也不會太困難。 1-4-1 程式設計的基礎-驗證 驗證(Verification) 驗證是證明程式執行的結果符合需求的輸出資料, 可以再細分成三個小階段,如下所示: • 證明:執行程式時需要證明它的執行結果是正確的, 程式符合所有輸入資料的組合,程式規格也都符合演 算法的需求。 • 測試:程式需要測試各種可能情況、條件和輸入資料, 以測試程式執行無誤,如果有錯誤產生,就需要除錯 來解決問題。 • 除錯:如果程式無法輸出正確結果,除錯是在找出錯 誤的地方,我們不但需要找出錯誤,還需要決定找出 更正錯誤的方法。 1-4-2 演算法-定義 在程式設計的設計階段寫出的解決問題步驟、策 略或方法就是「演算法」(Algorithms),其基 本定義如下: 演算法是完成目標工作的一組指令,這組指令的步 驟是有限的。除此之外,演算法還必須滿足一些 條件,如下所示: • 輸入(Input):沒有或數個外界的輸入資料。 • 輸出(Output):至少有一個輸出結果。 • 明確性(Definiteness):每一個指令步驟都十分明 確,沒有模稜兩可。 • 有限性(Finiteness):這組指令一定會結束。 • 有效性(Effectiveness):每一個步驟都可行,可以 追蹤其結果。 1-4-2 演算法-方法 演算法只是將解決問題的步驟詳細的寫出來,所 以並沒有固定方式,基本上只要能夠描述這組指 令的執行過程即可,常用的方式如下所示: 一般語言文字:直接使用文字描述來說明執行的 步驟。 虛擬碼(Pseudo Code):一種趨近程式語言的 描述方法,它並沒有固定語法,其每一列約可轉 換成一列程式碼。 流程圖(Flow Chart):使用結構化的圖表描述 執行過程,以各種不同形狀的圖形表示不同的操 作,使用箭頭線標示執行方向。 1-5 C應用程式的開發環境 1-5-1 C應用程式的開發步驟 1-5-2 C語言的開發環境 1-5-1 C應用程式的開發步驟-圖 例 在使用C語言開發應用程式時,其各開發過 程都擁有對應的工具程式,我們只需取得 這些工具程式,就可以建立C語言的開發環 境,其開發過程,如下圖所示: 1-5-1 C應用程式的開發步驟-說明 編輯程式碼(Editing):C語言的程式碼檔案是 一個標準的ASCII文字檔案,C語言程式碼檔案的 副檔名為.c。 編譯程式碼(Compiling):單純的程式碼檔案 並不能執行,需要使用編譯程式將原始程式碼檔 案轉譯成指定CPU機器語言的目標檔(Object Files),其副檔名為.obj或.o。 連結函式庫(Linking):在此步驟將函式庫和模 組的目標檔連結到應用程式,以便建立可執行的 執行檔,Windows執行檔案的副檔名是.exe。 執行應用程式(Executing):在建立C應用程式 的執行檔.exe後,就可以在「命令提示字元」視 窗載入C應用程式來執行。 1-5-2 C語言的開發環境-說明 程式語言的「開發環境」(Development Environment)是一組工具程式用來建立、編譯 和維護程式語言建立的應用程式。目前的高階程 式語言大都擁有整合開發環境,稱為「IDE」 (Integrated Development Environment), 在同一個應用程式就可以編輯、編譯和執行特定 語言的應用程式。 在傳統MS-DOS或UNIX、Linux系統的使用者, 或稱為「終端機」(Terminals),其程式執行 環境輸入資料和輸出資料都是「命令列模式」 (Command-line Interface),即文字模式的 鍵盤輸入或單純文字內容的輸出,在終端機開發 C語言應用程式需要分別使用多個工具程式來完 成上一節C應用程式的開發步驟。 1-5-2 C語言的開發環境-工具 Turbo C/C++、Borland C++:Borland公司在 MS-DOS作業系統時代開發的C/C++語言整合開發環境, 這些工具並沒有持續改版,在Windows作業系統只能在 MS-DOS模式或「命令提示字元」視窗執行。 Microsoft Visual C++:微軟公司的C++編譯程式,屬 於Windows作業系統下的整合開發環境,目前的最新版 本是Visual C++ 2005 Express,詳細說明請參閱附錄 B。 Borland C++ Builder:Borland公司在Windows作 業系統下開發的C/C++整合開發環境。 Dev-C++:Bloodshed Dev-C++(使用GNU的GCC 編譯程式),一套免費C/C++程式的整合開發環境,提 供中文使用介面,可以在Windows 98/ME/2000/XP作 業系統執行,詳細說明請參閱附錄A。 1-6 第一個C程式與C程式架構步驟 整合開發環境建立C應用程式的基本步驟, 如下所示: • Step 1:啟動整合開發工具新增原始碼檔案, 某些整合開發環境需要先建立專案(Project) 或工作空間(Workspace),才能新增程式碼 檔案。 • Step 2:在編輯視窗輸入C程式碼後,儲存C 原始程式碼檔案,副檔名為.c。 • Step 3:執行上方選單的功能表指令,即可編 譯、連結和執行C應用程式。 1-6 第一個C程式與C程式架構架構 含括標頭檔 全域變數宣告 函數的原型宣告 int main(參數列) { 程式敘述; } 傳回型態 函數名稱1(參數列) { 程式敘述; } ……… 傳回型態 函數名稱N(參數列) { 程式敘述; } 1-6 第一個C程式與C程式架構範例 01: 02: 03: 04: 05: 06: 07: 08: /* 程式範例: Ch1_6.c */ #include <stdio.h> #include <stdlib.h> int main(void) { printf("第一個C程式\n"); system("PAUSE"); // getchar(); return 0; } 1-7 C語言的寫作風格 1-7-1 1-7-2 1-7-3 1-7-4 1-7-5 程式敘述 程式區塊 程式註解 太長的程式碼 程式碼縮排 1-7-1 程式敘述-說明 C程式是由程式敘述(Statements)組成,一列 程式敘述如同英文的一個句子,內含多個運算式、 運算子或關鍵字,如下所示: int balance = 1000; interest = balance * rate; printf("第一個C應用程式\n"); ; 第1列程式碼是變數宣告,第2列是指定敘述的運 算式,第3列是呼叫標準函式庫的printf()函數, 最後是空程式敘述(Null Statement)。 1-7-1 程式敘述-結束符號 「;」程式敘述結束符號 C語言的「;」符號代表程式敘述的結束, 告訴編譯程式已經到達程式敘述的最後, 換句話說,使用「;」符號可以在同一列程 式碼撰寫多個程式敘述,如下所示: balance = 10000; rate = 0.04; interest = balance * rate; 1-7-2 程式區塊 程式區塊(Blocks)是由多個程式敘述組成,使 用「{」和「}」符號包圍,如下所示: int main(void) { printf("第一個C程式\n"); system("PAUSE"); return 0; } main()主程式的程式碼部分就是程式區塊,在C 語言的流程控制敘述和函數都擁有程式區塊。 1-7-3 程式註解-ANSI-C 程式註解是程式中十分重要的部分,因為良好註 解文字不但能夠了解程式目的,並且在程式維護 上,也可以提供更多的資訊。 C語言的程式註解是以「/*」和「*/」符號標示 註解文字,如下所示: /* 程式範例: Ch1_6.c */ 上述註解文字是位在「/*」和「*/」符號中的文 字內容。C語言的註解可以跨很多列,如下所示: /* --------------------------程式範例: Ch1_6.c ------------------------------ */ 1-7-3 程式註解-C99 C99可以使用C++語言的註解方式,即在 程式中以「//」符號開始的列,或是程式列 位在「//」符號後的文字內容都是註解文字, 如下所示: // 顯示訊息 printf("第一個C應用程式\n"); // 顯示訊息 雖然目前有多套整合開發環境已經支援 C++語言的註解方式,不過在本書C語言 的程式範例仍然是使用C語言的標準註解。 1-7-4 太長的程式碼 C語言的程式碼列太長並不容易閱讀,我們可以 將它分成兩列來編排,如果程式碼需要分成兩列, 直接分割即可,如下所示: result = compare((void *)ptr, (void *)ptr1, (int (*) (void *, void *))numcmp); 如果程式碼需要連續列(即其中不可有新行字元 '\n'),可以在程式碼列的最後加上「\」符號 (Line Splicing),將程式碼分成數列,如下所 示: sum = scores[0] + scores[1] + \ scores[2] + scores[3] + \ scores[4]; 1-7-5 程式碼縮排 在撰寫程式時記得使用縮排編排程式碼, 適當的縮排程式碼,可以讓程式更加容易 閱讀,因為可以反應出程式碼的邏輯和迴 圈架構,例如:迴圈區塊的程式碼縮幾格 編排,如下所示: for ( i = 0; i <= 10; i++ ) { printf(“%d\n”, i); total = total + i; }
© Copyright 2024 ExpyDoc