P657 C/C++程式設計範例教本 陳會安 第1章 程式語言與C語言的基礎 1-1 1-2 1-3 1-4 1-5 程式語言的基礎 程式設計技術的演進 程式是如何執行 C語言的基礎 C應用程式開發環境的建立 1-1 程式語言的基礎 1-1-1 程式與軟體 1-1-2 程式語言的種類 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-2 程式語言的種類-低階語言 低階語言(Low Level Language): 低階語言是一種偏向電腦容易了解的程式 語言,因為屬於電腦看的懂的程式語言, 所以執行效率高,例如: • 機器語言(Machine Language):使用0和1二進 位表示的程式碼,電腦可以直接執行程式,執行效率 最高。 • 組合語言(Assembly Language):使用簡單的 符號代表機器語言0和1表示的二進位程式碼,只需使 用「組譯程式」(Assembler)將它轉換成機器語言 在電腦上執行。 1-1-2 程式語言的種類-高階語言 高階語言(High Level Language): 高階語言是一種接近人類語言的程式語言, 可以說是一種半英文(Half-english)的 程式語言,因為電腦不能馬上看的懂,需 要進一步的翻譯,在轉換成機器語言後, 因為轉換出來的程式碼通常比直接使用機 器語言撰寫的冗長,所以效率較低,但是 非常適合使用者學習。 1-1-2 程式語言的種類-高階語言 高階語言有Java、C/C++、BASIC和 Borland Delphi等,高階語言需要進行翻 譯,將程式碼轉譯成組合語言或機器語言 的執行檔案後,才能在電腦上執行,翻譯 的方式分為兩種,如下所示: • 編譯程式(Compiler)。 檢查程式的錯誤。 將程式翻譯成機器語言的程式檔案。 • 直譯程式(Interpreter)。 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 非結構化程式設計-說明 初學程式設計時,例如:早期的BASIC和組合語 言都屬於非結構化程式設計。對於C語言來說, 主要是指不論幾列的小程式或是數百列程式碼的 大程式,程式都只擁有一個main()主程式,而且 程式碼是以線性方式依序的執行,如下圖所示: 1-2-1 非結構化程式設計-問題 在開發大型程式時,非結構化程式設計就會產生 嚴重的問題,如下所示: • 程式碼以線性方式執行,如果需要重複操作,就需要 在main()主程式重複相同的程式碼。 • 如果沒有複製多段程式碼,可以使用C語言的goto指令, 可以跳到程式中的任何位置,但是亂跳的結果反而增 加程式的複雜度,或產生一些無用的程式碼片斷,稱 為「義大利麵程式碼」(Spaghetti Code),程式碼 如同義大利麵一般的盤根錯節。 • 非結構化程式的所有程式碼處理的資料都屬於「全域」 (Global)資料。 1-2-2 程序式與結構化程式設計說明 程序式程式設計是將程式中重複的程式片斷抽出 成為「程序」(Procedures,或稱為 Subroutine、Routine)或「函數」 (Functions),即一段執行特定功能的程式碼。 在主程式的程式碼只是依序呼叫各程序的「程序 呼叫」(Procedure Call),即執行各程序。整 個程式使用流程控制來連接各程序,即目前程式 設計最常使用的結構化程式設計,屬於程序式程 式設計的子集。 1-2-2 程序式與結構化程式設計圖例 1-2-3 模組化程式設計-說明 為了能夠重複使用程序式程式設計所分割建立的 程序,我們可以將相同功能的程序或函數結合在 一起成為獨立的「模組」(Modules),模組是 一個處理指定功能的子程式,如下圖所示: 1-2-3 模組化程式設計-函式庫 每一個模組包含處理的資料和程序函數, 在主程式呼叫模組的函數時,可以將它視 為呼叫「函式庫」(Libraries)中的函數, 在功能上如同一個工具箱(Toolbox),例 如:C語言本身很小,大部分C語言的功能 都是由函式庫提供。 模組可以將實際處理的程式碼和資料隱藏 起來,稱為「資訊隱藏」(Information Hiding)。 1-2-4 物件導向程式設計 物件導向程式設計是一種更符合人性化的程式設 計方法,將原來專注於問題的分解,轉換成了解 問題本質的資料,也就是「物件」(Object), 如下圖所示: 1-3 程式是如何執行-說明 1-3 程式是如何執行-中央處理器 (CPU) 電腦的CPU提供實際的運算功能,目前個 人 電 腦 都 使 用 單 晶 片 的 「 IC」 (Integrated Circuit)。 CPU 的 主 要 功 能 是 使 用 「 ALU」 (Arithmetic and Logic Unit)的邏輯電 路進行運算,以便執行機器語言的指令。 1-3 程式是如何執行-記憶體 (Memory) 電腦記憶體是「位元」(bits),每8個位 元為一個「位元組」(Bytes)為單位所組 成的龐大記憶空間,當我們執行程式,作 業系統是將儲存在硬碟或軟碟的執行檔載 入電腦的主記憶體(Main Memory),這 就是CPU執行的機器語言指令,CPU從記 憶體依序載入指令和執行。 1-3 程式是如何執行-輸入/輸出裝 置(Input/Output Devices) 電腦的輸入/輸出裝置是程式的窗口,可以 讓使用者輸入資料和顯示程式的執行結果, 目前而言,電腦最普遍的輸入裝置是鍵盤 和滑鼠;輸出裝置是螢幕和列表機。 1-4 C語言的基礎-說明 C 語 言 屬 於 「 通 用 目 的 」 ( Generalpurposes)的程式語言,可以用來建立各 式各樣的應用程式。C語言是結構化程式語 言,其後繼者C++語言是一種物件導向程 式語言。 1-4 C語言的基礎-C語言的歷史 C語言是由Dennis Ritchie在1972年於貝爾實驗 室設計的程式語言,它並不能算是一種很新的程 式語言,之所以命名為C,這是因為很多C語言的 特性是來自其前輩語言B(由Ken Thompson設 計),B是一種源於Martin Richards設計的 BCPL程式語言。 C語言的主要目的是為了設計UNIX作業系統,在 1973年,所有UNIX作業系統的核心程式都已經 改為使用C語言撰寫,這也是第一套使用高階語 言所建立的作業系統。 1-4 C語言的基礎-C語言的特點 C程式語言的主要特點,如下所示: • C是一種結構化程式語言,擁有高階程式語言的撰寫風 格,但也擁有低階程式語言。 • C是一種非常普遍的程式語言,目前大多數的作業系統 都提供C語言的編譯程式和標準函式庫,使用C語言開 發的應用程式可以很容易移植到其它的作業系統。 • C語言建立的執行檔案很小,而且執行速度快,事實上, C本身只是一種很小的程式語言,相當多C語言的功能 是由C標準函數庫提供。 • C語言使用「前置處理器」(Preprocessor)處理相 當多的工作。 1-4 C語言的基礎-C語言的版本 C語言最早的標準是K&R,1989年ANSI制定標 準C語言後,稱為ANSI-C,1999年參考C++語 言的語法而作了少許更新,稱為C99,如下所示: • K&R C • ANSI-C • C99 1-5 C應用程式開發環境的建立 1-5-1 C語言的開發環境 1-5-2 下載與安裝Dev-C++整合開發環境 1-5-1 C語言的開發環境-說明 程式語言的「開發環境」(Development Environment)是一組工具程式用來建立、 編譯和維護程式語言所建立的應用程式。 目前高階程式語言大都擁有整合開發環境, 稱為「IDE」(Integrated Development Environment),在同一 個應用程式就可以編輯、編譯和執行特定 語言的應用程式。 1-5-1 C語言的開發環境-C應用程 式的開發步驟 編輯程式碼(Editing):程式碼檔案是一個標準的 ASCII文字檔案,可以使用文字編輯工具輸入程式碼,稱 為原始碼檔案(Source Files),C語言程式碼檔案的副 檔名為.c,C++為.cpp。 編譯程式碼(Compiling):將原始程式碼檔案轉譯成 指定CPU機器語言的目標檔(Object Files),其副檔名 為.obj或.o。 連結函式庫(Linking):將函式庫和模組的目標檔連結 到應用程式,以便建立可執行的執行檔,副檔名為.exe。 執行應用程式(Executing):在建立C應用程式的執行 檔.exe後,就可以從作業系統載入C應用程式來執行。 1-5-1 C語言的開發環境-C語言的 開發環境1 傳統MS-DOS或UNIX、Linux系統的使用者,或 稱為「終端機」(Terminals),其程式執行環 境輸入資料和輸出資料都是「命令列模式」 (Command-line Interface),即文字模式的 鍵盤輸入或單純文字內容的輸出,在此環境開發 C語言應用程式需要使用多個工具程式來完成。 目前C語言應用程式開發提供整合開發環境,能 夠在同一工具軟體編輯、編譯和除錯高階語言。 1-5-1 C語言的開發環境-C語言的 開發環境2 常用的C語言整合開發環境,如下所示: • Turbo C/C++、Borland C++:Borland 公司在MS-DOS作業系統時代開發的C/C++ 語言整合開發環境。 • Microsoft Visual C++:微軟公司的C++ 編譯程式,目前版本是Visual C++.NET。 • Borland C++ Builder:Borland公司在 Windows作業系統下的C++整合開發環境。 • Dev-C++:Bloodshed Dev-C++是一套免 費C/C++程式的整合開發環境。 1-5-2 下載與安裝Dev-C++整合 開發環境-說明 Dev-C++是Bloodshed Software公司的產品, 這是一套完整功能的C/C++語言整合開發環境, 可以開發Windows和主控台應用程式(Console Applications),所謂主控台應用程式是在MSDOS或命令提示字元執行的文字模式應用程式。 Dev-C++是使用Borland Delphi設計的應用程 式整合開發環境,使用MinGW(Minimalist GNU for Windows,網址: http://www.mingw.org/)的C/C++編譯程式, 這是UNIX系統GCC編譯程式的Windows版本。 1-5-2 下載與安裝Dev-C++整合 開發環境-下載 Dev-C++是一套免費軟體,Bloodshed軟 體公司提供完整的CD系統光碟,可以在該 公司網站訂購,我們也可以在下載網頁免費 下載Dev-C++,其網址如下所示: http://www.bloodshed.net/dev/devcpp.html 1-5-2 下載與安裝Dev-C++整合 開發環境-安裝 Dev-C++整合開發環境可以安裝在 Windows98/ME/2000/XP作業系統,其系統的最小 需求,如下所示: • • • • Microsoft Windows 95/98/ME/NT/2000/XP作業系統。 8MB記憶體。 100 Mhz Intel相容的CPU。 30 MB硬碟空間。 Dev-C++整合開發環境建議的系統需求,如下: • • • • Microsoft Windows 2000/XP作業系統。 32MB記憶體。 400 Mhz Intel相容的CPU。 200 MB硬碟空間。
© Copyright 2024 ExpyDoc