第一章計算機與程序設(shè)計_第1頁
第一章計算機與程序設(shè)計_第2頁
第一章計算機與程序設(shè)計_第3頁
第一章計算機與程序設(shè)計_第4頁
第一章計算機與程序設(shè)計_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、牟永敏北京信息工程學(xué)院計算機系清華大學(xué)出版社牟永敏北京信息工程學(xué)院計算機系概要概要:本章介紹計算機和程序設(shè)計的基本知識,主要內(nèi)容包括:1. 計算機的基本結(jié)構(gòu)計算機的基本結(jié)構(gòu)2. 程序設(shè)計語言程序設(shè)計語言3. 面向過程程序設(shè)計面向過程程序設(shè)計4. 面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο蟪绦蛟O(shè)計 通過對這些內(nèi)容的學(xué)習(xí),使讀者對計算機和程序設(shè)計有一個初步的了解,為后面各章的學(xué)習(xí)奠定基礎(chǔ)。 1.計算機的基本結(jié)構(gòu)(1) 計算機的基本結(jié)構(gòu)主要是由存儲器、運算器、控制器、輸入設(shè)備和輸出設(shè)備等五個部件組成。 其中: 存儲器:是用來存儲數(shù)據(jù)。大致分為內(nèi)部存儲器(內(nèi)存)和外部存儲器(硬盤、軟盤等) 運算器:是用來完成各種算術(shù)運

2、算和邏輯運算。 控制器:用來控制計算機的各個部件協(xié)調(diào)工作。 輸入設(shè)備和輸出設(shè)備:是用來為數(shù)據(jù)的輸入和輸出服務(wù)的??刂破鲀?nèi)存儲器運算器外存儲器輸入設(shè)備輸出設(shè)備指令程序原始數(shù)據(jù)原始數(shù)據(jù)結(jié)果結(jié)果圖1.1 計算機的基本結(jié)構(gòu)1.計算機的基本結(jié)構(gòu)(2) 計算機的工作過程 (以匯編為例): 第一步,用輸入設(shè)備把事先編制好的解題步驟(即程序)和原始數(shù)據(jù)輸入到存儲器指定編號的地方(內(nèi)存單元)存放起來。 第二步,命令計算機從第一條指令開始執(zhí)行程序,則計算機在程序控制下自動完成解題的全過程。 返回返回2.程序設(shè)計語言 (1) 60年代,馮諾依曼提出了程序存儲原理,計算機走向了現(xiàn)代化。 目前,程序設(shè)計語言的發(fā)展已經(jīng)經(jīng)

3、歷了四代,第五代語言尚處于萌芽狀態(tài)。下面簡單介紹一下各代語言的基本特點。2.程序設(shè)計語言 (2)第一代語言 第一代程序設(shè)計語言是機器語言,它是計算機所特有的,不同計算機有不同的機器語言。第二代語言 匯編語言,也稱為符號語言。用含義較鮮明的符號,代替機器語言中的二進制編碼,因此看起來較直觀,不易出錯。 2.程序設(shè)計語言 (3)第三代語言 稱為算法語言,算法語言的基本組成成分是各種語句(如結(jié)構(gòu)化程序設(shè)計),比用機器語言或匯編語言編寫程序更加方便、簡單和直觀。第四代語言 實質(zhì)上是可以快速開發(fā)應(yīng)用軟件的各種高生產(chǎn)率的軟件工具的統(tǒng)稱。如VC+、Delphi等。 2.程序設(shè)計語言 (4)第五代語言 多數(shù)人

4、認(rèn)為,第五代語言將是智能化的語言。PROLOG語言可能是第五代語言最著名的雛形。 返回返回3.面向過程程序設(shè)計(1) 使用傳統(tǒng)程序設(shè)計語言進行程序設(shè)計時,必須詳細(xì)準(zhǔn)確地描述解題過程 。因為程序設(shè)計工作主要圍繞設(shè)計解題過程來進行,所以傳統(tǒng)的程序設(shè)計方法稱為面向過程的程序設(shè)計。 人們在開發(fā)軟件的長期實踐過程中,總結(jié)出一些設(shè)計原理并研究出一些系統(tǒng)化的技術(shù)方法,用于面向過程程序設(shè)計,能夠提高開發(fā)效率,增加系統(tǒng)的可理解性和可維護性。這些原理和技術(shù)方法,在進行面向?qū)ο蟪绦蛟O(shè)計時也有借鑒意義。 3.面向過程程序設(shè)計(2) 基本設(shè)計原理與技術(shù)-模塊化 模塊是數(shù)據(jù)說明、可執(zhí)行的語句等程序元素的集合,它是單獨命名

5、的而且可以通過名字來訪問,所謂模塊化,就是把一個程序劃分成若干個模塊,每個模塊完成一個子功能,把這些模塊組裝成一個整體,可以完成指定的功能 。如:函數(shù)。 請注意:在把程序劃分成模塊的時候,模塊規(guī)模應(yīng)該適當(dāng) 。3.面向過程程序設(shè)計(3) 基本設(shè)計原理與技術(shù)-抽象 人類在認(rèn)識復(fù)雜現(xiàn)象的過程中使用的最強有力的思維工具是抽象。人們在實踐中認(rèn)識到,在現(xiàn)實世界中一定事物、狀態(tài)或過程之間總存在著某些相似的方面(共性)。把這些相似的方面集中和概括起來,暫時忽略它們之間的差異,這就是抽象。 如:各式各樣的人=人類。抽象是對事物共性的高度概括。 當(dāng)我們考慮對任何問題的模塊化解法時,可以提出許多抽象的層次。 3.面

6、向過程程序設(shè)計(4) 基本設(shè)計原理與技術(shù)-信息隱藏和局部化 信息隱藏原理指出,在設(shè)計和確定模塊時,應(yīng)該使得一個模塊內(nèi)包含的信息(數(shù)據(jù)和過程)對于不需要這些信息的模塊來說,是不可訪問的(又稱不可見的)。 局部化,是指把一些關(guān)系密切的程序元素物理地放得彼此靠近,處于同一局部區(qū)城內(nèi)。 3.面向過程程序設(shè)計(5) 基本設(shè)計原理與技術(shù)-模塊獨立 模塊獨立原理是模塊化、抽象、信息隱藏和局部化原理的直接結(jié)果和進一步發(fā)展。應(yīng)該這樣設(shè)計程序結(jié)構(gòu),使得每個模塊完成一個相對獨立的特定子功能,并且和其他模塊之間的關(guān)系盡可能簡單。 耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度;內(nèi)聚衡量一個模塊內(nèi)部各個元素彼此結(jié)合的

7、緊密程度。簡單地說,理想內(nèi)聚的模塊只做一件事情。 高內(nèi)聚和松耦合是進行模塊化設(shè)計的重要標(biāo)準(zhǔn),實踐表明內(nèi)聚更重要。 3.面向過程程序設(shè)計(6) 基本設(shè)計原理與技術(shù)-結(jié)構(gòu)程序設(shè)計技術(shù) 把一個程序劃分成若干個模塊之后,進一步的工作就是設(shè)計完成每個模塊功能的處理過程。 結(jié)構(gòu)程序設(shè)計是一種設(shè)計程序的技術(shù), 適應(yīng)于面向過程和面向?qū)ο蟮木幊谭椒?,是實現(xiàn)模塊的具體技術(shù)。自頂向下逐步求精的設(shè)計方法和單入口單出口的控制結(jié)構(gòu)。 3.面向過程程序設(shè)計(7) 使用結(jié)構(gòu)程序設(shè)計技術(shù)設(shè)計程序的主要好處如下:(1)自頂向下逐步求精的方法符合人類解決復(fù)雜問 題的普遍規(guī)律,因此可以顯著提高開發(fā)效率。(2)用先全局后局部、先整體后

8、細(xì)節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結(jié)構(gòu),因此容易閱讀和理解。 (3)僅使用單入口單出口的控制結(jié)構(gòu),使得程序的靜態(tài)結(jié)構(gòu)和它的動態(tài)執(zhí)行情況比較一致。(4)控制結(jié)構(gòu)有確定的邏輯模式,源程序清晰流暢,易讀易懂而且容易測試。 返回返回4. 面向?qū)ο蟪绦蛟O(shè)計 (1) 人類習(xí)慣的解決問題的方法是采用“顧客-服務(wù)員”的工作模式。如:廚師與理發(fā)師的相互“顧客服務(wù)”。 面向?qū)ο蟪绦蛟O(shè)計方法模擬人類習(xí)慣的解題方法,用對象分解取代功能分解,也就是把程序分解成許多對象,不同對象之間通過發(fā)消息向?qū)Ψ教岢龇?wù)要求,接受消息的對象主動完成指定功能(顧客所要求的服務(wù)),程序中的所有對象分工協(xié)作,共同完成整

9、個程序的功能。 可以認(rèn)為:面向?qū)ο蟮某绦蚴怯蓪ο蠛蛯ο箝g的相互作用構(gòu)成的。 是對象的有機結(jié)合。4. 面向?qū)ο蟪绦蛟O(shè)計 (2)面向?qū)ο蠓椒ǜ攀雒嫦驅(qū)ο蠓椒ň哂邢率鏊膫€要點:(1)認(rèn)為客觀世界是由各種對象組成的,任何事物都是對象,復(fù)雜的對象可以由比較簡單的對象以某種方式組合而成。面向?qū)ο蟮能浖到y(tǒng)是由對象組成的,軟件中的任何元素都是對象,復(fù)雜的軟件對象由比較簡單的對象組合而成。(2)把所有對象都劃分成各種對象類,每個對象類都定義了一組數(shù)據(jù)和一組方法。類中定義的數(shù)據(jù)用于表示對象的靜態(tài)屬性,是對象的狀態(tài)信息。類中定義的方法,是允許施加于該類對象上的操作,是該類所有對象共享的,并不需要為每個對象都復(fù)制操

10、作的代碼。該類中所有對象中的方法共享此代碼(但是各個對象中的方法使用的數(shù)據(jù)是不同的)。 4. 面向?qū)ο蟪绦蛟O(shè)計 (3)(3)按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個對象類組成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。在這種層次結(jié)構(gòu)中,通常下層的派生類具有和上層的基類相同的特性(包括數(shù)據(jù)和方法),這種現(xiàn)象稱為繼承(Inheritance)。但是,如果在派生類中對某些特性又做了重新描述,則在派生類中的這些特性將以新描述為準(zhǔn),也就是說,低層的特性將屏蔽高層的同名特性。(4)對象彼此之間僅能通過傳遞消息互相聯(lián)系。 對象與傳統(tǒng)的數(shù)據(jù)有本質(zhì)區(qū)別,它不是被動地等待外界對它施加操作,相反,它是進

11、行處理的主體,必須發(fā)消息請求它執(zhí)行它的某個操作,處理它的私有數(shù)據(jù),而不能從外界直接對它的私有數(shù)據(jù)進行操作。 面向?qū)ο蟮姆椒▽W(xué)可以用下列方程來概括: OO=Objects + Classes + lnheritance + Communication With messages 只有同時使用對象、類、繼承和消息的方法,才是真正面向?qū)ο蟮姆椒ā?所開發(fā)的程序才是面向?qū)ο蟮某绦颉?. 面向?qū)ο蟪绦蛟O(shè)計 (4) 面向?qū)ο蠓椒ǖ闹饕獌?yōu)點 1.與人類習(xí)慣的思維方法比較一致 傳統(tǒng)的程序設(shè)計技術(shù)是面向過程的設(shè)計方法,這種方法以算法為核心,把數(shù)據(jù)和過程作為相互獨立的部分,數(shù)據(jù)代表問題空間中的實體,程序代碼則用于

12、處理這些數(shù)據(jù) 。忽略了數(shù)據(jù)和操作之間的內(nèi)在聯(lián)系,用這種方法所設(shè)計出來的軟件系統(tǒng)其解空間與問題空間并不一致(因為是彼此獨立的),令人感到難于理解。 面向?qū)ο蟮能浖夹g(shù)以對象(Object)為核心,用這種技術(shù)開發(fā)出的軟件系統(tǒng)由對象組成。對象是對現(xiàn)實世界實體的正確抽象,它是由描述內(nèi)部狀態(tài)表示靜態(tài)屬性的數(shù)據(jù),以及可以對這些數(shù)據(jù)施加的操作(表示對象的動態(tài)行為),封裝在一起所構(gòu)成的統(tǒng)一體。對象之間通過傳遞消息互相聯(lián)系,以模擬現(xiàn)實世界中不同事物彼此之間的聯(lián)系。4. 面向?qū)ο蟪绦蛟O(shè)計 (5)2. 穩(wěn)定性好 傳統(tǒng)的軟件開發(fā)方法:軟件系統(tǒng)的結(jié)構(gòu)緊密依賴于系統(tǒng)所要完成的功能,當(dāng)功能需求發(fā)生變化時將引起軟件結(jié)構(gòu)的整體修改。 面向?qū)ο蠓椒ǎ寒?dāng)對系統(tǒng)的功能需求變化時并不會引起軟件結(jié)構(gòu)的整體變化,往往僅需要作一些局部性的修改。4. 面向?qū)ο蟪绦蛟O(shè)計 (6)3.可重用性好 傳統(tǒng)的軟件重用技術(shù)是利用標(biāo)準(zhǔn)函數(shù)庫 。 面對象有兩種方法可以重復(fù)使用一個對象類: 一種方法是可以創(chuàng)建該類的多個實例,從而直接使用它。 另一種方法是從它派生出一個滿足當(dāng)前需要的新類。繼承性機制使得子類不僅可以重用其父類的數(shù)據(jù)結(jié)構(gòu)和程序代碼,而且可以在父類代碼的基礎(chǔ)上方便地修改和擴充,這種修改并不影響對原有類的使用。 4. 面向?qū)ο蟪绦蛟O(shè)計 (7)4.可維護性好(包括對軟件功能的:增加、修改、

溫馨提示

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

評論

0/150

提交評論