計算機導(dǎo)論PPT第八章_程序設(shè)計語言(1)._第1頁
計算機導(dǎo)論PPT第八章_程序設(shè)計語言(1)._第2頁
計算機導(dǎo)論PPT第八章_程序設(shè)計語言(1)._第3頁
計算機導(dǎo)論PPT第八章_程序設(shè)計語言(1)._第4頁
計算機導(dǎo)論PPT第八章_程序設(shè)計語言(1)._第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本章內(nèi)容本章內(nèi)容n編程語言的演化n源程序到目標(biāo)程序的翻譯n編程模式n共同概念機器語言機器語言計算機發(fā)展早期,唯一的程序設(shè)計語言就是機器語言。每臺計算機有其自己的機器語言,這種機器語言由“0”和“1”的字符串組成。至少存在以下兩個缺點:依賴于計算機編寫程序單調(diào)乏味,而且發(fā)現(xiàn)錯誤很難機器語言:計算機唯一識別的語言機器語言:計算機唯一識別的語言. i我們需要寫11行二進制代碼,完成讀取兩個整數(shù),把它們加起來并打印出來這個任務(wù)。表 1.1 兩個整數(shù)相加的機器語言匯編語言匯編語言接下來的演化是伴隨著用帶符號或助記符的指令和地址代替二進制代碼而發(fā)生的。這種助記符語言就是匯編語言。 匯編程序?qū)R編語言代碼翻

2、譯成機器語言代碼。表 1.2 兩個整數(shù)相加的匯編語言高級語言高級語言盡管匯編語言大大提高了編程效率,但仍然需要程序員在所用的硬件上花費大部分精力。高級語言適用于許多不同的計算機,其設(shè)計目標(biāo)就是使程序員擺脫匯編語言繁瑣的細節(jié),能夠把精力集中到應(yīng)用程序上。 人們開發(fā)了多種高級語言,著名的有BASIC、PASCAL、C、C+和Java等高級語言和匯編語言有一個共性:它們必須被轉(zhuǎn)化為機器語言表 1.3 C+中的加法程序編譯編譯編譯程序通常將整個源程序翻譯成目標(biāo)程序。解釋解釋解釋是把源程序中的每一行翻譯成目標(biāo)程序中相應(yīng)的行,并執(zhí)行它的過程。解釋程序存在兩種趨勢:Java語言之前的解釋式語言,如BASIC

3、p調(diào)試?yán)щyp運行效率低Java使用的解釋程序 編譯和解釋的不同在于,編譯在執(zhí)行前翻譯整個源編譯和解釋的不同在于,編譯在執(zhí)行前翻譯整個源代碼,而解釋一次只翻譯和解釋源代碼中的一行。代碼,而解釋一次只翻譯和解釋源代碼中的一行。 i翻譯過程翻譯過程編譯和解釋都遵循相同的翻譯過程。主要包括詞法分析、語法分析、語義處理、代碼生成幾個階段。圖圖 2.1 源代碼翻譯過程源代碼翻譯過程圖圖 3.1 編程語言種類編程語言種類過程式模式過程式模式 在過程模式中,把程序看成是操縱被動對象的活動主體。在日常生活中,我們會遇到許多被動對象:石頭、書和燈等。一個被動對象本身不能開啟一個動作,但它能從活動主體接收動作。 過

4、程式模式下的程序就是活動主體,該主體使用稱為數(shù)據(jù)或數(shù)據(jù)項的被動對象。為了操縱數(shù)據(jù),活動主體(程序)發(fā)布動作,稱之為過程 例如,考慮一個打印文件內(nèi)容的程序,其中文件就是一個被動對象。為了打印這個文件,程序使用了一個稱為print的過程。圖圖 3.2 過程式模式的概念過程式模式的概念為了避免每次需要打印文件時都去編寫一個新的過程,可以編寫一個能打印任何文件的通用程序。過程式模式的程序由三部分組成:對象創(chuàng)建部分、一組過程調(diào)用和構(gòu)成每個過程的一組代碼。有些過程在語言本身中已經(jīng)被定義,通過組合這些代碼,開發(fā)者可以建立新的過程。圖圖 3.3 過程式程序的組成部分過程式程序的組成部分典型的過程式語言典型的過

5、程式語言q FORTRAN (FORmula TRANslation)q COBOL (COmmon Business-Oriented Language)q Pascalq Cq Ada使用過程式高級語言時,程序只是由許多過程調(diào)用使用過程式高級語言時,程序只是由許多過程調(diào)用構(gòu)成,除此之外沒有任何東西,如運算法符構(gòu)成,除此之外沒有任何東西,如運算法符+。 i面向?qū)ο竽J矫嫦驅(qū)ο竽J?面向?qū)ο竽J教幚砘顒訉ο螅皇潜粍訉ο?。在日常生活中,我們會遇到很多活動對象:汽車、自動門和洗盤機等。 在這些對象上執(zhí)行的動作都包含在這些對象中,對象只需要接受合適的外部刺激來執(zhí)行其中的某個動作。圖圖 3.4 面

6、向?qū)ο竽J降母拍蠲嫦驅(qū)ο竽J降母拍钤诿嫦驅(qū)ο竽J街校募馨阉械谋晃募?zhí)行的過程(在面向?qū)ο竽J街蟹Q為方法)打包在一起,包括打印、復(fù)制和刪除等。程序只需向?qū)ο蟀l(fā)出相應(yīng)請求。類類如圖3.5所示,相同類型的對象(如文件)需要一組方法,這些方法顯示了這類對象對來自“領(lǐng)地”外的刺激的反應(yīng)。為了創(chuàng)建這些方法,面向?qū)ο笳Z言使用稱為類的單元。圖圖 3.5 類的組成類的組成方法方法 總體上,方法的格式與有些過程式語言中用的函數(shù)非常相似。每個方法包含方法頭、局部變量和語句。這就意味著我們對過程式語言所討論的大多數(shù)特性都可以應(yīng)用在為面向?qū)ο蟪绦蛩鶎懙姆椒ㄉ稀?例如,C+語言就是一個面向?qū)ο驝語言的擴展。繼承繼承

7、 在面向?qū)ο竽J街?,一個類可從另一個類繼承。當(dāng)一個通用類(general class )被定義后,我們可以定義一個繼承其某些特性的更為具體的類,在這個新類中也會包含某些新的特征。 例 如 , 例 如 當(dāng) 定 義 一 個 幾 何 形 狀 的 類(GeometricalShapes)后,可以定義一個稱為矩形(Rectangles)的類。矩形是具有額外特征的幾何形狀。多態(tài)多態(tài) 多態(tài)性意味著“多種結(jié)構(gòu)”。在面向?qū)ο竽J街械亩鄳B(tài)性是指我們可以定義一些具有相同名字的操作,而這些操作在相關(guān)類中作不同的事情。 例如,我們定義的兩個類(矩形和圓)都是從幾何形狀類繼承下來的。在這兩個類中定義名字都為area的兩個

8、操作,分別計算矩形和圓的面積。即兩個操作擁有相同的名字,但做不同的事情。典型的面向?qū)ο笳Z言典型的面向?qū)ο笳Z言q C+q Java圖圖 3.6 面向?qū)ο蟮幕咎卣髅嫦驅(qū)ο蟮幕咎卣骱瘮?shù)式模式函數(shù)式模式函數(shù)式模式中程序被看成是一個數(shù)學(xué)函數(shù),將一組輸入映射到一組輸出的黑盒子。圖圖 3.7 函數(shù)式語言中的函數(shù)函數(shù)式語言中的函數(shù)例如,定義一個稱為first的原始函數(shù),由它完成從一個數(shù)據(jù)列表抽取第一個元素的功能;在定義一個函數(shù)rest,由它完成從一個數(shù)據(jù)列表中抽取除第一個元素以外的所有元素的功能。那么通過這兩個函數(shù)的組合使用就可以定義一個函數(shù)來完成對第三個元素的抽取。如圖3.8圖圖 3.8 抽取列表中的第

9、三個元素抽取列表中的第三個元素Some functional languagesq LISP (LISt Programming)q Scheme(first 7 11 8 9 16) 2(rest 7 11 8 9 16 ) 11 8 9 16 (first (rest ( rest List) ) )說明式模式說明式模式 依據(jù)邏輯推理的原則響應(yīng)查詢,后來發(fā)展稱為一級謂詞演算。 邏輯推理以推導(dǎo)為基礎(chǔ)。根據(jù)一些假定正確的已知論斷(事實),運用邏輯推理的可靠準(zhǔn)則推導(dǎo)出新的論斷。如以下著名的邏輯推導(dǎo)準(zhǔn)則:將此原則應(yīng)用于以下事實可推導(dǎo)出下面新的事實:Prolog最著名的說明式語言 由 A. Colm

10、erauer 在1972提出. Prolog程序由事實和規(guī)則構(gòu)成。如前面的例子可用如下的prolog語言描述用戶可進行如下查詢:程序會響應(yīng): yes.示例示例n#include nusing namespace std;nvoid print( float result) coutprice;cost = price*taxMultiplier+2000;print(cost);return 0; /main標(biāo)識符標(biāo)識符數(shù)據(jù)類型數(shù)據(jù)類型變變 量量字面值字面值常常 量量輸入和輸出輸入和輸出表達式表達式語語 句句子程序子程序標(biāo)識符標(biāo)識符 標(biāo)識符就是對象的名稱。它使我們能夠?qū)Τ绦蛑械膶ο筮M行命名。

11、例如,計算機中每個數(shù)據(jù)都存在一個唯一的地址中。如果沒有標(biāo)識符用符號代表數(shù)據(jù)的位置,我們就必須使用數(shù)據(jù)地址來操作這些數(shù)據(jù)。取而代之,只要給出數(shù)據(jù)的名字,編譯器就能夠去跟蹤數(shù)據(jù)實際存放的位置。數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)據(jù)類型定義了一系列值以及一組應(yīng)用于這些值的操作。每種數(shù)據(jù)類型值的集合稱為此數(shù)據(jù)類型的域。大多數(shù)語言定義了兩種數(shù)據(jù)類型:簡單數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型。簡單數(shù)據(jù)類型是不能分解成更小數(shù)據(jù)類型的數(shù)據(jù)類型(C語言int:-32768+32767,2個字節(jié))復(fù)合數(shù)據(jù)類型是一組元素,其中每個元素是簡單數(shù)據(jù)類型或復(fù)合數(shù)據(jù)類型變量變量 變量是存儲單元的名字。雖然計算機內(nèi)部使用地址,但對程序員而言卻十分不方便。

12、不知道數(shù)據(jù)和程序在內(nèi)存中存放的地址數(shù)據(jù)項在內(nèi)存中可能占據(jù)多個地址 程序員可以使用一個變量如score來保存測試中得到的整數(shù)數(shù)值。既然變量含有一個數(shù)據(jù)項,那它就有類型。常量常量與變量一樣,常量也是一個可以存儲值的被命名的位置,但其存儲的值在程序的開始處被定義后就不能改變。字面值字面值字面值是程序中使用的預(yù)定義的值。例如,當(dāng)半徑存儲在變量r中時,如果我們需要計算圓的面積就可以使用表達式3.14 r2, 其中 (pi)的近似值就是被用作字面值。輸入和輸出輸入和輸出 幾乎所有的程序都需要輸入或輸出數(shù)據(jù)。這些操作可能非常復(fù)雜,尤其是對大文件進行讀寫時。大多數(shù)程序設(shè)計語言使用一些預(yù)先定義好的函數(shù)完成輸入和

13、輸出。例如在C語言中數(shù)據(jù)輸入可以通過一條語句或一個預(yù)定義的函數(shù)如scanf來完成, scanf(“%d”, &num)數(shù)據(jù)的輸出也可以通過一條語句或一個預(yù)先定義的函數(shù)如printf來完成, printf(“The value is: %d”,num)表達式表達式表達式是由一系列操作數(shù)和運算符簡化后的一個單一數(shù)值。例如,下面是一個值為13的表達式操作數(shù)接受一個運算符的動作。一個運算符可能有多個操作數(shù)操作符是用來完成一個動作的特定語言的語法標(biāo)記。最為熟悉的運算符都是從數(shù)學(xué)中得到的,表4.1給出了一些用于C、C+和Java中的算數(shù)運算符表表4.1 算數(shù)運算符算數(shù)運算符關(guān)系運算符用于比較兩個數(shù)據(jù)的大小

14、關(guān)系。關(guān)系運算符的結(jié)果是邏輯值(true or false)。 C、C+和Java中使用的六種關(guān)系運算符如表4.2所示表表4.2 關(guān)系運算符關(guān)系運算符邏輯運算符是邏輯值(true or false)組合后得到的一個新值。C語言中使用的三種邏輯運算符如表4.3所示表表4.3 邏輯運算符邏輯運算符語句語句每條語句都使程序執(zhí)行一個相應(yīng)的動作。它被直接翻譯成一條或多條計算機可執(zhí)行的指令。 C、C+和Java中定義了多種類型的語句。賦值語句給變量賦值。換言之,它將一個值存儲在變量中,該變量是在聲明部分已經(jīng)被創(chuàng)建復(fù)合語句是一個0個或多個語句的代碼單元,也被稱為塊。復(fù)合語句將一組語句看成是一個獨立的實體在過

15、程式語言中程序是語句的集合。語句通常是逐句順序執(zhí)行的。執(zhí)行順序的改變是由控制語句完成的。結(jié)構(gòu)化程序設(shè)計推薦使用三種類型的控制語句:順序、選擇和循環(huán)語句。圖圖 4.1 兩路和多路判斷兩路和多路判斷圖圖 4.2 三種類型的循環(huán)三種類型的循環(huán)子程序子程序子程序的概念在過程式語言中極其重要。主要是因為子程序能夠使程序變得更加結(jié)構(gòu)化:完成指定任務(wù)的子程序能夠一次編寫多次調(diào)用,就像編程語言中的預(yù)定義過程一樣。圖圖 4.3 子程序的概念子程序的概念 在過程式語言中,與主程序一樣,子程序能夠調(diào)用預(yù)定義的過程來操作局部對象。這些局部對象或局部局部變量變量在子程序被調(diào)用時創(chuàng)建,當(dāng)控制從子程序返回時被銷毀。局部對象

16、屬于子程序。 子程序僅僅作用于局部對象是非常少見的。多數(shù)情況下主程序需要子程序作用于由主程序創(chuàng)建的一個對象或一組對象。此時,主程序和子程序就需要使用參參數(shù)數(shù),在主程序中稱為實際參數(shù),在子程序中稱為形式參數(shù)。 在傳值參數(shù)中,主程序和子程序創(chuàng)建兩個不同的對象(變量)。在主程序創(chuàng)建的對象屬于主程序,在子程序中創(chuàng)建的對象屬于子程序。因為作用域不同,相應(yīng)的對象名字可以相同也可以不同。此時,主程序和子程序之間的通信是單方向的,從主程序到子程序。傳值傳值例例 4.1圖圖 4.4 傳值的示例傳值的示例例例 4.2例例 4.3例例 4.4圖圖 4.5 傳值不起作用的例子傳值不起作用的例子 傳引用被設(shè)計用來允許子程序改變主程序中變量的值。在傳引用時

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論