HTML網頁基礎語言 - Welcome to CILAB

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;
}