《c程序設計基礎》第一章-c初步_第1頁
《c程序設計基礎》第一章-c初步_第2頁
《c程序設計基礎》第一章-c初步_第3頁
《c程序設計基礎》第一章-c初步_第4頁
《c程序設計基礎》第一章-c初步_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、C+程序設計基礎,第1章 C+初步 北京郵電大學信通院 方莉 ,2,第一章 C+入門,C+語言是一門優(yōu)秀的程序設計語言,在計算機科學領域中有著廣泛的應用。 本章學習: C+語言的發(fā)展史 開發(fā)C+程序的步驟 第一個C+程序,3,第一章 C+入門,4,第一章 C+入門,1.1 程序設計語言的發(fā)展,計算機程序 計算機的工作是用程序來控制的; 程序是指令的集合; 指令是計算機可以識別的命令。,6,1.1 程序設計語言的發(fā)展,機器語言 簡單的“0”和“1”的組合,與硬件相關。 匯編語言 將機器語言映射為一些可以被人們讀懂的助記符,如“ADD”、“SUB”等,與硬件相關。 高級語言 接近自然語言,與硬件無

2、關。,7,1.1 程序設計語言的發(fā)展,高級語言: 1、面向過程的語言 BASIC、PASCAL、C 2、面向?qū)ο蟮恼Z言 C+、JAVA,8,1.1 程序設計語言的發(fā)展,例如:要向屏幕打印一個“A”字符 1、BASIC語言: PRINT “A” 2、PASCAL語言:writeln(A); 3、C語言: printf(“A”); 4、C+語言: cout “A”; 5、JAVA語言: System.out.print(A );,9,第一章 C+入門,10,1.2 面向過程的程序設計,程序的目的:用于數(shù)學計算 主要工作:設計求解問題的過程 缺點:對于龐大、復雜的程序難以開發(fā)和維護,11,1.2 面

3、向過程的程序設計,主要設計思路 自頂向下,逐步求精。 采用模塊分解與功能抽象,自頂向下、分而治之。 一個計算機程序可以看成是由一系列任務組成的,任何一項任務如果過于復雜就將其分解成一系列較小的子任務,直至每一項任務都很小,很容易解決。,12,1.2 面向過程的程序設計,程序結構 按功能劃分為若干個基本模塊,形成一個樹狀結構。 各模塊間的關系盡可能簡單,功能上相對獨立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結構組成。 其模塊化實現(xiàn)的具體方法是使用子程序。 模塊采用單入單出。,13,計算每門課的平均成績,1.2 面向過程的程序設計,14,1.2 面向過程的程序設計,基本結構 1、順序 2、分支

4、 3、循環(huán),1.2 面向過程的程序設計,優(yōu)點: 有效地將一個較復雜的程序系統(tǒng)設計任務分解成許多易于控制和處理的子任務,便于開發(fā)和維護。,16,1.2 面向過程的程序設計,缺點:可重用性差、數(shù)據(jù)安全性差、難以開發(fā)大型軟件和圖形界面的應用軟件 結構化編程將數(shù)據(jù)和過程相分離; 當數(shù)據(jù)結構改變時,所有相關的處理過程都要進行相應的修改。 結構化編程對代碼重用支持不夠。 每一種相對于老問題的新方法都要帶來額外的開銷。 圖形用戶界面的應用程序,很難用過程來描述和實現(xiàn),開發(fā)和維護也都很困難。,17,第一章 C+入門,18,1.3 面向?qū)ο蟮某绦蛟O計,面向?qū)ο蟮某绦蛟O計將數(shù)據(jù)和處理數(shù)據(jù)的過程當成一個整體對象。

5、1)封裝 由對象的概念支持。只需知道外部接口,不需知道內(nèi)部實現(xiàn),就可以使用的特性。 2)繼承 由類的概念支持。利用已有的成果進行擴展,充分體現(xiàn)了代碼重用。 3)多態(tài) 運行時特性。,1.3 面向?qū)ο蟮某绦蛟O計,將數(shù)據(jù)及對數(shù)據(jù)的操作方法封裝在一起,作為一個相互依存、不可分離的整體對象。 對同類型對象抽象出其共性,形成類。 類通過一個簡單的外部接口,與外界發(fā)生關系。 對象與對象之間通過消息進行通訊。 特性:封裝性、繼承性、多態(tài)性,1.3 面向?qū)ο蟮某绦蛟O計,優(yōu)點: 程序模塊間的關系更為簡單,程序模塊的獨立性、數(shù)據(jù)的安全性就有了良好的保障。 通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得軟件的開發(fā)

6、和維護都更為方便。,1.3 面向?qū)ο蟮某绦蛟O計,一般意義上的對象: 是現(xiàn)實世界中一個實際存在的事物。 可以是有形的(比如一輛汽車),也可以是無形的(比如一項計劃)。 是構成世界的一個獨立單位,具有: 靜態(tài)特征:可以用某種數(shù)據(jù)來描述 動態(tài)特征:對象所表現(xiàn)的行為或具有的功能,1.3 面向?qū)ο蟮某绦蛟O計,面向?qū)ο蠓椒ㄖ械膶ο螅?是系統(tǒng)中用來描述客觀事物的一個實體,它是用來構成系統(tǒng)的一個基本單位。對象由一組屬性和一組行為構成。 屬性:用來描述對象靜態(tài)特征的數(shù)據(jù)項。 行為:用來描述對象動態(tài)特征的操作序列。,1.3 面向?qū)ο蟮某绦蛟O計,分類人類通常的思維方法 分類所依據(jù)的原則抽象 忽略事物的非本質(zhì)特征,只

7、注意那些與當前目標有關的本質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物劃分為一類,得出一個抽象的概念。 例如,石頭、樹木、汽車、房屋等都是人們在長期的生產(chǎn)和生活實踐中抽象出的概念。,1.3 面向?qū)ο蟮某绦蛟O計,面向?qū)ο蠓椒ㄖ械念?具有相同屬性和服務的一組對象的集合 為屬于該類的全部對象提供了抽象的描述,包括屬性和行為兩個主要部分。 類與對象的關系:猶如模具與鑄件之間的關系,一個屬于某類的對象稱為該類的一個實例。,1.3 面向?qū)ο蟮某绦蛟O計,封裝 把對象的屬性和服務結合成一個獨立的系統(tǒng)單元。 盡可能隱蔽對象的內(nèi)部細節(jié)。對外形成一個邊界(或者說一道屏障),只保留有限的對外接口使之與外部發(fā)生聯(lián)系

8、。,1.3 面向?qū)ο蟮某绦蛟O計,繼承 繼承對于軟件復用有著重要意義,是面向?qū)ο蠹夹g能夠提高軟件開發(fā)效率的重要原因之一。 定義:特殊類的對象擁有其一般類的全部屬性與服務,稱作特殊類對一般類的繼承。 例如:將輪船作為一個一般類,客輪便是一個特殊類。,1.3 面向?qū)ο蟮某绦蛟O計,多態(tài) 指在一般類中定義的屬性或行為,被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個屬性或行為在一般類及其各個特殊類中具有不同的語義。 例如: 數(shù)的加法-實數(shù)的加法 -復數(shù)的加法,1.3 面向?qū)ο蟮某绦蛟O計,面向?qū)ο蟮能浖こ淌敲嫦驅(qū)ο蠓椒ㄔ谲浖こ填I域的全面應用。它包括: 面向?qū)ο蟮姆治觯∣OA)

9、面向?qū)ο蟮脑O計(OOD) 面向?qū)ο蟮木幊蹋∣OP) 面向?qū)ο蟮臏y試(OOT) 面向?qū)ο蟮能浖S護(OOSM),29,第一章 C+入門,30,1.4 C+的誕生,C+語言從C語言的基礎上發(fā)展起來的。 C語言歷史: 1、貝爾實驗室的Dennis Ritchie開發(fā) 2、在B語言的基礎 3、作為Unix操作系統(tǒng)的開發(fā)語言 優(yōu)點: 1、與硬件無關 2、設計嚴謹,31,1.4 C+的誕生,1978年,Brian Kernighan與Dennis Ritchie 出版了The C Programming Language是最早的經(jīng)典傳統(tǒng)C語言的書,很薄,只有兩百多頁,所以這本C語言的圣經(jīng)又稱K void

10、main() cout“Hello world!endl; ,47,1.6 簡單的C+程序,“注釋” 是程序員為讀者作的說明,用來提高程序的可讀性,C+程序在編譯過程中忽略注釋。 1、“/” 用來注釋一行說明,在“/”之后的文字直到換行都為注釋。一般用來對于程序中難懂的代碼進行說明。 2、 “/*”和“*/” 用來注釋一段說明,在“/*”和“*/”之間的部分,不管多長都為注釋。,48,1.6 簡單的C+程序,所有以“#”開頭的代碼,稱為編譯預處理。 例:#include 每次啟動編譯器時,先運行預處理器,預處理器找到所有以“#”開頭的代碼行進行處理。 include是一條預處理指令,意思是“后

11、面跟的是一個文件名,請找到該文件并將其加入?!?iostream是系統(tǒng)定義的一個“頭文件”,它設置了C+的I/O相關環(huán)境,并定義了輸入輸出流對象cout和cin等。,49,1.6 簡單的C+程序,using namespace std; 1998年批準的標準C+使用namespace命名空間標準。 iostream是一個標準函數(shù)庫,cout是標準庫函數(shù)提供的一個對象,標準庫函數(shù)在namespace說明書中被指定為“std”。因此這句代碼的意思是使用標準命名空間std中的函數(shù)。,50,1.6 簡單的C+程序,正式的程序從代碼“void main()”開始,它包含一個名為main()的函數(shù),也稱為

12、主函數(shù)。每個C+程序有且僅有一個main()函數(shù),程序在開始運行時會自動調(diào)用main()函數(shù)。 main()前面的void表示函數(shù)的返回值的類型,意味著程序執(zhí)行結束后無需向操作系統(tǒng)返回。,函數(shù):是指能實現(xiàn)一個或多個功能的代碼塊。,51,1.6 簡單的C+程序,所有的函數(shù)都以左大括號開始,右大括號結束,在大括號 之間的部分稱為函數(shù)體。 cout“Hello world!”endl; 1、cout:標準輸出流對象, 2、: 插入操作符可以連續(xù)使用 3、endl:代表換行符 意思是使用cout將“”后面的內(nèi)容打印在屏幕上。 在函數(shù)體的每一句代碼后面都有一個分號“;”表示一個C+語句的結束。,52,1

13、.6 簡單的C+程序,操作步驟 1、新建一個工程 1) 啟動VC+ 6.0(或VC2005) 2)新建一個項目,選擇“win32控制臺應用程序”,空項目 3) 編寫源程序 2、編譯和連接 編譯:compile(Ctrl+F7) 鏈接:Build(F7) 3、運行 使用的命令:Ctrl+F5,53,程序編譯環(huán)境和簡單設計及調(diào)試,編譯環(huán)境:VC+ 6.0 文件的建立 1、工程的建立 File-new-projects-win32 Console Application 調(diào)試運行 2、文件的建立 File -new-files-c+ source file 3、 調(diào)試、運行,第一章 C+入門,1.7

14、 內(nèi)存的抽象表示和使用,內(nèi)存的抽象表示 每個存儲單元可以存放一個字節(jié)(8 bit)數(shù)據(jù),每個內(nèi)存單元有一個唯一的地址。,1.7 內(nèi)存的抽象表示和使用,操作系統(tǒng)一般會把內(nèi)存劃分區(qū)域來使用,便于管理,比如代碼區(qū)、數(shù)據(jù)區(qū)等。 被編譯成機器碼的程序在執(zhí)行時就會被復制到內(nèi)存的代碼區(qū)。 數(shù)據(jù)區(qū)分為: 棧區(qū),也叫堆棧區(qū),用于存放程序函數(shù)中的局部變量。 全局變量和靜態(tài)變量區(qū),是長期存放數(shù)據(jù)的區(qū)域。 常量區(qū):一般是存放字符串常量的地方。 堆區(qū):在程序執(zhí)行過程中申請內(nèi)存要在堆區(qū)分配空間。,1.7 內(nèi)存的抽象表示和使用,/例1-2 顯示不同數(shù)據(jù)的地址 #include using namespace std; int a=10;/全局變量 void main() int b=20,c=30;/局部變量 char *ch=Beijing; static int e=50;/靜態(tài)變量

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論