程序設(shè)計(jì)語言_第1頁
程序設(shè)計(jì)語言_第2頁
程序設(shè)計(jì)語言_第3頁
程序設(shè)計(jì)語言_第4頁
程序設(shè)計(jì)語言_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第09章程序設(shè)計(jì)語言

-2-本章內(nèi)容安排演化翻譯編程模式共同概念-3-計(jì)算機(jī)語言的演化計(jì)算機(jī)語言是指編寫程序時(shí),根據(jù)事先定義的規(guī)則(語法)而寫出的預(yù)定語句的集合,這些語句組成了程序。計(jì)算機(jī)語言從機(jī)器語言發(fā)展到高級(jí)語言。-4-1、機(jī)器語言在計(jì)算機(jī)發(fā)展的早期,唯一的程序設(shè)計(jì)語言是機(jī)器語言,每臺(tái)計(jì)算機(jī)都有自己的機(jī)器語言。機(jī)器語言由”0”和”1”的字符串構(gòu)成,機(jī)器語言是計(jì)算機(jī)硬件唯一能夠理解的語言。計(jì)算機(jī)唯一識(shí)別的語言是機(jī)器語言。-5-機(jī)器語言的示例-6-機(jī)器語言的問題用機(jī)器語言編寫的程序真實(shí)地表示了數(shù)據(jù)是如何被計(jì)算機(jī)操縱的。兩個(gè)缺點(diǎn)依賴于具體計(jì)算機(jī),如果使用不同的硬件,一臺(tái)計(jì)算機(jī)的機(jī)器語言與另一臺(tái)計(jì)算機(jī)的機(jī)器語言就不同;用機(jī)器語言編程序非常單調(diào)乏味,難以發(fā)現(xiàn)錯(cuò)誤。-7-2、匯編語言機(jī)器語言之后,開始出現(xiàn)匯編語言,匯編語言使用符號(hào)和助記符代替二進(jìn)制機(jī)器語言代碼。采用符號(hào)寫的程序,計(jì)算機(jī)并不能理解,必須借助稱為匯編程序的特定程序?qū)⒎?hào)代碼翻譯為機(jī)器語言代碼。-8-匯編語言示例-9-3、高級(jí)語言符號(hào)語言大大提高了編程效率,但它仍然是機(jī)器語言的近似。符號(hào)語言與計(jì)算機(jī)硬件相關(guān),按單條指令編碼比較煩瑣。高級(jí)語言適用于許多不同的計(jì)算機(jī),使程序員只關(guān)注要解決的問題,不用關(guān)心計(jì)算機(jī)硬件實(shí)現(xiàn)細(xì)節(jié)和復(fù)雜性上。高級(jí)語言必須要轉(zhuǎn)化為機(jī)器語言才能執(zhí)行,將高級(jí)語言轉(zhuǎn)化為機(jī)器語言的過程稱為編譯或解釋。-10-高級(jí)語言示例-11-本章內(nèi)容安排演化翻譯編程模式共同概念-12-翻譯現(xiàn)在的程序員編程多數(shù)使用高級(jí)語言,必須將高級(jí)語言轉(zhuǎn)化為可執(zhí)行(機(jī)器語言)文件,計(jì)算機(jī)才能執(zhí)行它們。高級(jí)語言程序被稱為源程序,翻譯后的機(jī)器語言程序稱為目標(biāo)程序。兩種翻譯方式:編譯和解釋。-13-編譯和解釋編譯:將整個(gè)源程序翻譯成目標(biāo)程序。解釋:使用解釋器把源程序翻譯成目標(biāo)程序。Java之前的解釋方式:逐行翻譯,立即執(zhí)行,遇到錯(cuò)誤后停止執(zhí)行;Java:首先將Java源程序編譯為字節(jié)碼(不是特定機(jī)器的目標(biāo)代碼),由虛擬機(jī)(JVM)編譯或解釋執(zhí)行字節(jié)碼。字節(jié)碼能被任何運(yùn)行虛擬機(jī)的計(jì)算機(jī)編譯或解釋,實(shí)現(xiàn)跨平臺(tái)應(yīng)用。-14-翻譯過程編譯:在執(zhí)行前翻譯整個(gè)源代碼;解釋:一次只翻譯和執(zhí)行源代碼中的一行。-15-翻譯過程詞法分析器讀取源代碼,創(chuàng)建源語言中的助記符;語法分析器分析助記符,找出指令或語句;語義分析器檢查語法分析器創(chuàng)建的語句或指令,確保不含有二義性代碼生成器將語義分析后創(chuàng)建的指令,轉(zhuǎn)化為特定計(jì)算機(jī)的機(jī)器語言。-16-本章內(nèi)容安排演化翻譯編程模式共同概念-17-編程模式基于一種計(jì)算機(jī)語言看待要解決問題的方式來劃分。-18-過程式模式將程序看成操縱被動(dòng)對(duì)象的活動(dòng)主體。程序使用稱為數(shù)據(jù)或數(shù)據(jù)項(xiàng)的被動(dòng)對(duì)象,數(shù)據(jù)存儲(chǔ)在計(jì)算機(jī)內(nèi)存中。活動(dòng)主體(程序)發(fā)布動(dòng)作,稱為過程。程序通常由許多過程調(diào)用構(gòu)成。-19-過程式模式-20-程序構(gòu)成對(duì)象創(chuàng)建一組過程調(diào)用過程代碼語言預(yù)定義過程自定義過程-21-常見過程語言Fortran:科學(xué)與工程應(yīng)用;Cobol:面向商業(yè)應(yīng)用的語言;Pascal:適合教學(xué)的結(jié)構(gòu)化編程語言;C:Ada:-22-面向?qū)ο竽J矫嫦驅(qū)ο竽J教幚砘顒?dòng)對(duì)象,在這些對(duì)象上執(zhí)行的動(dòng)作包含在對(duì)象中,對(duì)象接收到刺激后執(zhí)行其中的一個(gè)動(dòng)作。-23-面向?qū)ο筇卣鞣庋b:數(shù)據(jù)和可在數(shù)據(jù)上執(zhí)行的操作隱藏在對(duì)象內(nèi)部。對(duì)象使用者不直接訪問數(shù)據(jù)而是通過接口間接訪問數(shù)據(jù),調(diào)用者關(guān)心對(duì)象能做什么卻不關(guān)心是如何實(shí)現(xiàn)的。繼承:一個(gè)對(duì)象可以從另一個(gè)對(duì)象繼承一般特征。是代碼可重用的重要機(jī)制。多態(tài):不同層次的對(duì)象可以擁有相同名稱的操作,這些操作可以完成不同的功能。-24-典型面向?qū)ο笳Z言C++:C++是C語言的擴(kuò)展,支持面向?qū)ο缶幊毯瓦^程化編程。Java:在C和C++基礎(chǔ)上發(fā)展而來,移除了C++中一些復(fù)雜的和容易出錯(cuò)的特征,使得Java更加健壯;Java是純面向?qū)ο笳Z言。使用Java可以開發(fā)應(yīng)用程序和小程序(applet),小程序嵌入在網(wǎng)頁中,可以由瀏覽器下載到本地運(yùn)行。-25-函數(shù)式模式在函數(shù)式模式中,程序被看成一個(gè)數(shù)學(xué)函數(shù),函數(shù)是把一組輸入映射到一組輸出的黑盒子。-26-函數(shù)型語言系統(tǒng)定義一系列可供程序員調(diào)用的基本(原子)函數(shù)。允許程序通過組合若干基本函數(shù)創(chuàng)建新的函數(shù)。示例:First基本函數(shù)完成從列表中抽取第一元素;Rest函數(shù)完成從列表中抽取除第一個(gè)元素之外的所有元素;則抽取第三個(gè)元素可以由兩個(gè)Rest和一個(gè)First組合而成。-27-抽取第三個(gè)元素函數(shù)型語言鼓勵(lì)模塊化編程;程序能夠利用已經(jīng)存在的函數(shù),循序漸進(jìn)開發(fā)出不易出錯(cuò)的復(fù)雜程序。-28-典型函數(shù)型語言LISP:是一種把列表作為處理對(duì)象的程序設(shè)計(jì)語言。Scheme:LISP語言沒有統(tǒng)一標(biāo)準(zhǔn)化,版本眾多,實(shí)際使用的標(biāo)準(zhǔn)稱為Scheme。該語言定義了一系列基本函數(shù),函數(shù)名和函數(shù)的輸入列表寫在括號(hào)內(nèi),函數(shù)的執(zhí)行結(jié)果也是列表,可用做其它函數(shù)的輸入。-29-Scheme示例函數(shù)car,從列表中提取第一個(gè)元素;函數(shù)cdr,從列表中提取除第一個(gè)以外的所有元素。(car2348111720)==>2(cdr237811)==>37811(car(cdr

(cdrlist)))用于提取列表的第三個(gè)元素。如果將函數(shù)應(yīng)用于列表237811,則結(jié)果為7。-30-說明式模式依據(jù)邏輯推理的原則響應(yīng)查詢。是在由希臘數(shù)學(xué)家定義的規(guī)范邏輯的基礎(chǔ)上發(fā)展而來的。說明性語言往往針對(duì)特定的領(lǐng)域,需要收集大量的該領(lǐng)域的知識(shí)(已知的事實(shí)),還要定義邏輯上嚴(yán)謹(jǐn)?shù)囊?guī)則,使得程序能夠根據(jù)邏輯推理的可靠準(zhǔn)則推導(dǎo)出新的論斷(事實(shí))。說明性語言目前只局限于人工智能領(lǐng)域。-31-簡(jiǎn)單推理依據(jù)的兩個(gè)事實(shí)推理得到的事實(shí)-32-Prolog最著名的說明性語言之一是Prolog。Prolog中的程序全部由事實(shí)和規(guī)則構(gòu)成。

human(John) mortal(human) ?-mortal(John)

程序會(huì)應(yīng)答(yes)-33-本章內(nèi)容安排演化翻譯編程模式共同概念-34-1、標(biāo)識(shí)符高級(jí)語言編寫的程序,編譯后加載到內(nèi)存中運(yùn)行時(shí),指令和數(shù)據(jù)都加載到內(nèi)存中,每一個(gè)數(shù)據(jù)都存儲(chǔ)在唯一的地址中。高級(jí)語言中采用符號(hào)化的名稱,即標(biāo)識(shí)符表示數(shù)據(jù)的位置;否則的話我們必須直接使用數(shù)據(jù)的地址來操作它們,實(shí)際上很難知道數(shù)據(jù)到底存放在內(nèi)存何處。通過標(biāo)識(shí)符,你只要知道數(shù)據(jù)的名字就可以訪問它們,跟蹤數(shù)據(jù)地址的工作便交給編譯器。-35-2、數(shù)據(jù)類型數(shù)據(jù)類型定義了一系列值以及應(yīng)用于這些值的一系列操作。每種數(shù)據(jù)類型的值的集合稱為數(shù)據(jù)類型的域。簡(jiǎn)單數(shù)據(jù)類型:整數(shù)、實(shí)數(shù)、字符、布爾等復(fù)合數(shù)據(jù)類型:數(shù)組、記錄-36-3、變量在計(jì)算機(jī)內(nèi)部,使用地址標(biāo)識(shí)一個(gè)數(shù)據(jù)在內(nèi)存中的位置,程序員卻難以直接使用地址,程序員并不能確定數(shù)據(jù)和程序放在內(nèi)存的什么位置。通常使用符號(hào)化的名字標(biāo)識(shí)一個(gè)存儲(chǔ)位置。程序員可以使用一個(gè)變量(符號(hào)化的名稱),表示并引用內(nèi)存中的一個(gè)數(shù)據(jù);至于數(shù)據(jù)到底存儲(chǔ)在何處,交給操作系統(tǒng)和編譯器協(xié)同解決。-37-變量的示例-38-字面值字面值是程序中使用的預(yù)定義的值。多數(shù)語言中,支持整數(shù)、實(shí)數(shù)、字符和布爾字面值,還支持字符串字面值。

3.14×r2

“Anne”-39-常量字面值是一種不好的編程實(shí)踐,尤其是會(huì)隨時(shí)間變化的字面值,應(yīng)避免使用。通過定義常量解決該問題,常量是一個(gè)可以存儲(chǔ)值的命名位置。-40-4、輸入和輸出多數(shù)語言使用預(yù)先定義好的函數(shù)實(shí)現(xiàn)輸入輸出。輸出:printf函數(shù)voidmain(){ intage=5; printf(“I’m%dyearold.\n”,age);}運(yùn)行結(jié)果I’m5yearold.

-41-輸入和輸出輸入:scanfvoidmain(){ inta,b; scanf(“%d%d”,&a,&b); printf(“%d,%d\n”,a,b);}當(dāng)用戶輸入:123456↙運(yùn)行結(jié)果123,456

-42-5、表達(dá)式表達(dá)式是由一系列操作數(shù)和運(yùn)算符構(gòu)成的運(yùn)算式,運(yùn)算結(jié)果是一個(gè)單一值。1)運(yùn)算符:完成特定運(yùn)算的語法記號(hào)算術(shù)運(yùn)算符:算術(shù)運(yùn)算關(guān)系運(yùn)算符:比較兩個(gè)數(shù)據(jù)的大小關(guān)系,結(jié)果是邏輯值,true或false邏輯運(yùn)算符:組合邏輯值,得到一個(gè)新的邏輯值賦值運(yùn)算符:向變量中存入值-43-表達(dá)式2)操作數(shù):參與運(yùn)算的數(shù)據(jù),可以是常量、變量或函數(shù)調(diào)用的返回值。操作數(shù)接受運(yùn)算符的動(dòng)作,不同運(yùn)算符要求的操作數(shù)個(gè)數(shù)不同,可能有1、2個(gè)或更多。-44-算術(shù)運(yùn)算符-45-關(guān)系運(yùn)算符-46-邏輯運(yùn)算符-47-6、語句語句使程序執(zhí)行相應(yīng)的動(dòng)作。語句被翻譯成一條或多條計(jì)算機(jī)可以執(zhí)行的指令。C語言要求在語句后加分號(hào)(;)做標(biāo)記。賦值語句:給變量賦值,將一個(gè)值保存到變量中復(fù)合語句:包含0或多條語句的代碼單元,也稱為塊

{ x=1; y=20; }控制語句:控制程序執(zhí)行順序的語句-48-選擇結(jié)構(gòu)-49-循環(huán)結(jié)構(gòu)-50-7、子程序過程式語言編寫的程序通常預(yù)先定義一組過程將哪些完成單一任務(wù)的過程放在獨(dú)立的程序單元中,稱為子程序(C和C++中的函數(shù))子程序一次編寫,多次調(diào)用子程序使得程序結(jié)構(gòu)更加清晰子程序使得程序更易于開發(fā)-51-子程序的概念局部變量可以在子程序中定義局部變量子程序每次被調(diào)用時(shí),局部變量被創(chuàng)建,當(dāng)控制從子程序返回后,局部變量被銷毀參數(shù)多數(shù)情況下,主程序希望被調(diào)用子程序處理由主程序創(chuàng)建的數(shù)據(jù),往往通過參數(shù)傳遞給子程序。主程序中稱為實(shí)參,子程序中稱為形式參數(shù)返回值子程序被調(diào)用時(shí),可以向主程序返回一個(gè)或多個(gè)值。-52-參數(shù)的值傳遞在值傳遞過程中,主程序和子程序創(chuàng)建各自不同的變量,子程序中的變量(實(shí)參)將

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論