《計(jì)算機(jī)科學(xué)概論》第6章-程序設(shè)計(jì)語言_第1頁
《計(jì)算機(jī)科學(xué)概論》第6章-程序設(shè)計(jì)語言_第2頁
《計(jì)算機(jī)科學(xué)概論》第6章-程序設(shè)計(jì)語言_第3頁
《計(jì)算機(jī)科學(xué)概論》第6章-程序設(shè)計(jì)語言_第4頁
《計(jì)算機(jī)科學(xué)概論》第6章-程序設(shè)計(jì)語言_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

主要內(nèi)容第6章程序設(shè)計(jì)語言歷史回顧傳統(tǒng)的程序設(shè)計(jì)概念過程單元語言實(shí)現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)并發(fā)活動(dòng)的程序設(shè)計(jì)說明型程序設(shè)計(jì)歷史回顧早期的程序設(shè)計(jì)語言機(jī)器語言--最早的程序設(shè)計(jì)語言調(diào)試:找到程序的錯(cuò)誤并改正

20世紀(jì)40年代,研究人員開始簡(jiǎn)化程序設(shè)計(jì)的記號(hào)系統(tǒng)

助記符號(hào)-->數(shù)字形式的指令例如:MOVR5,R6-->4056一個(gè)稍微復(fù)雜的例子:P173L10

標(biāo)識(shí)符匯編語言:是表示程序的助記符系統(tǒng)統(tǒng)稱為匯編語言匯編器:負(fù)責(zé)翻譯工作歷史回顧早期的程序設(shè)計(jì)語言第一代程序設(shè)計(jì)語言:機(jī)器語言第二代程序設(shè)計(jì)語言:匯編語言它的出現(xiàn)是在研究程序設(shè)計(jì)語言技術(shù)方面邁出了巨大的一步匯編語言仍然存在著缺點(diǎn):匯編語言使用的原語本質(zhì)上與機(jī)器語言是一樣的,差別只是在語法上。因此,匯編語言的程序生來就是機(jī)器相關(guān)的,即不同的體系架構(gòu)的計(jì)算機(jī)需要使用不同的匯編語言。

程序員雖然不必使用數(shù)字指令編程序,但是還是必須采用機(jī)器指令的模式去思考問題。歷史回顧在設(shè)計(jì)一個(gè)產(chǎn)品時(shí),最終構(gòu)造一個(gè)產(chǎn)品的原語不一定是在設(shè)計(jì)該產(chǎn)品時(shí)應(yīng)該使用的原材料。比較好的做法是,設(shè)計(jì)過程中使用高級(jí)原語。設(shè)計(jì)完成之后,再把高級(jí)原語翻譯成與實(shí)現(xiàn)細(xì)節(jié)相關(guān)的較低級(jí)的原語。按照這種思想,人們開發(fā)了第三代程序設(shè)計(jì)語言。

擁有較好的與機(jī)器無關(guān)性,即不依賴于特定的計(jì)算機(jī)例如:FORTRAN、COBOL歷史回顧使用高級(jí)語言編寫程序時(shí),我們需要一種稱為翻譯程序的程序。

翻譯程序負(fù)責(zé)把高級(jí)的原語翻譯成機(jī)器語言的程序每一種高級(jí)語言都必須要配有一個(gè)翻譯程序,它已經(jīng)是語言的一個(gè)組成部分翻譯程序有兩類:編譯程序解釋程序目前,編程序通常都使用編譯型的語言編輯程序+編譯程序發(fā)展第三代程序設(shè)計(jì)語言的任務(wù)并沒有我們想象的那么簡(jiǎn)單。

目標(biāo)是讓編譯程序越來越智能,程序設(shè)計(jì)語言本身越來越簡(jiǎn)單程序設(shè)計(jì)范型

程序設(shè)計(jì)范型代表了在構(gòu)建問題的解決方法時(shí)的不同方法。

范型影響了整個(gè)軟件的開發(fā)過程。我們應(yīng)該稱為軟件開發(fā)范型。歷史回顧歷史回顧程序設(shè)計(jì)范型歷史回顧程序設(shè)計(jì)范型-

命令型范型(過程型)

是一種傳統(tǒng)的程序設(shè)計(jì)方法

這種范型告訴我們的程序設(shè)計(jì)方法是:先找到解決問題的算法,然后用命令序列表示這個(gè)算法。C、Pascal、BASIC…歷史回顧程序設(shè)計(jì)范型-說明型范型要求程序員描述要解決的問題,而不要求找到解決問題的算法。在這種范型設(shè)計(jì)的系統(tǒng)里,首先要發(fā)現(xiàn)一個(gè)通用的問題求解算法,一旦這種算法找到了,以后要解決的問題只需要按照與算法相兼容的形式描述,該算法就會(huì)自己解決該問題。使用這種范型設(shè)計(jì)程序,困難是基礎(chǔ)性的通用算法很難找到。因此,這種范型之應(yīng)用在某些特殊的方面例如:天氣預(yù)報(bào)、專家系統(tǒng)歷史回顧程序設(shè)計(jì)范型-

函數(shù)型范型這種范型解決問題的方法是,把開發(fā)程序的過程看成將預(yù)先定義好的“黑箱”連接起來的過程。一個(gè)“黑箱”的輸出可當(dāng)作另一個(gè)“黑箱”的輸入。這些“黑箱”被數(shù)學(xué)家稱為函數(shù),這就是稱為函數(shù)型范型的原因。一個(gè)函數(shù)型程序設(shè)計(jì)語言的原語由初等函數(shù)(構(gòu)建塊)組成在這種范型里,程序員要做的事就是尋找一種連接初等函數(shù)的方法,使他們構(gòu)成更復(fù)雜的函數(shù),從而計(jì)算出想要的結(jié)果。歷史回顧程序設(shè)計(jì)范型-

面向?qū)ο笮头缎瓦@種范型里,數(shù)據(jù)單元被看成活動(dòng)的“對(duì)象”。傳統(tǒng)的命令型范型里,數(shù)據(jù)看作被指令操作的對(duì)象。自身不具有行為能力。數(shù)據(jù)與控制數(shù)據(jù)的代碼分離。面向?qū)ο蟮姆缎椭?,?shù)據(jù)與控制數(shù)據(jù)的代碼結(jié)合到一起。例如:對(duì)列表排序命令型范型中,列表被看作數(shù)據(jù)面向?qū)ο蟮姆缎椭?,列表被看作可調(diào)用的對(duì)象歷史回顧P216

問題與練習(xí)傳統(tǒng)的程序設(shè)計(jì)概念程序設(shè)計(jì)語言里的語句分為三類:聲明語句定義了程序中使用的需要自定義的術(shù)語.命令語句用于描述算法里的步驟注釋就是對(duì)程序的解釋,提高可讀性注釋語句根據(jù)需要分布在程序的各處傳統(tǒng)的程序設(shè)計(jì)概念1.Num1002.while(Num<=999)do ( gwNum除以10取余數(shù)

swNum除以100取余數(shù)后再除以

bwNum除以100取整

if(gw*gw*gw+sw*sw*sw+bw*bw*bw=Num)then (

輸出Num ) NumNum+1 )3.結(jié)束說明Num、gw、sw、bw傳統(tǒng)的程序設(shè)計(jì)概念1.變量和數(shù)據(jù)類型--變量高級(jí)程序設(shè)計(jì)語言允許存儲(chǔ)單元用描述性的名字來指稱,而不用數(shù)字地址。這種描述性的名字叫做變量。程序中需要用到的所有數(shù)據(jù)都是存儲(chǔ)在主存儲(chǔ)器的存儲(chǔ)單元里的。在機(jī)器語言中,是通過存儲(chǔ)單元的地址來實(shí)現(xiàn)對(duì)存儲(chǔ)單元的讀寫的。在高級(jí)程序設(shè)計(jì)語言中,變量就相當(dāng)于主存中存儲(chǔ)單元的地址的別名,我們就是通過這些別名來實(shí)現(xiàn)對(duì)存儲(chǔ)單元的讀寫的。

“把某個(gè)值存入某個(gè)變量”的含義例如:sum<--0數(shù)據(jù)類型在定義變量時(shí),需要指明將來要存儲(chǔ)到該變量中的數(shù)據(jù)的類別傳統(tǒng)的程序設(shè)計(jì)概念1.變量和數(shù)據(jù)類型-基本的數(shù)據(jù)類型整數(shù)(integer)類型用來指稱(存儲(chǔ))整數(shù)數(shù)據(jù)可以進(jìn)行算數(shù)運(yùn)算和比較運(yùn)算實(shí)數(shù)(real)類型(有時(shí)稱為浮點(diǎn)(float)類型)用來指稱除整數(shù)之外的數(shù)值數(shù)據(jù)字符(character)類型用來指稱符號(hào)組成的數(shù)據(jù)比較、查找、連接等運(yùn)算布爾(Boolean)類型指稱只有真和假兩種值的數(shù)據(jù)項(xiàng)傳統(tǒng)的程序設(shè)計(jì)概念1.變量和數(shù)據(jù)類型-說明變量的一般形式:

數(shù)據(jù)類型變量名;例如:intHeight;intHeight,Width; intheight=100;傳統(tǒng)的程序設(shè)計(jì)概念2.數(shù)據(jù)結(jié)構(gòu)抽象的描述:數(shù)據(jù)的概念形態(tài)或布局。通俗的理解:當(dāng)相同類型或不同類型的一組數(shù)據(jù)結(jié)合在一起使用時(shí),可以使用某種方式將它們組織起來,這種數(shù)據(jù)的組織方式就叫做數(shù)據(jù)結(jié)構(gòu)。一種常用的數(shù)據(jù)結(jié)構(gòu)----數(shù)組,數(shù)組有:同構(gòu)數(shù)組(homogeneousarray)異構(gòu)數(shù)組(heterogeneousarray)傳統(tǒng)的程序設(shè)計(jì)概念2.數(shù)據(jù)結(jié)構(gòu)-同構(gòu)數(shù)組具有相同類型元素組成的數(shù)據(jù)塊定義數(shù)組的一般形式:類型名數(shù)組名[i][j][k]…[n]在數(shù)組中,我們是使用下標(biāo)來標(biāo)識(shí)數(shù)組中的某個(gè)元素傳統(tǒng)的程序設(shè)計(jì)概念2.數(shù)據(jù)結(jié)構(gòu)--異構(gòu)數(shù)組其元素可以有不同的類型的數(shù)據(jù)塊definetypeStudenttobe{ charName[8]; intAge; floatSkillRating;} (a)Studentstu1,stu2;傳統(tǒng)的程序設(shè)計(jì)概念3.常量和字面量程序中需要使用固定的預(yù)先決定的值。一個(gè)值的顯式出現(xiàn)稱為字面量(literal)。例如:EffectiveAlt<--Altimeter+645

使用直接量不是一個(gè)好的程序設(shè)計(jì)習(xí)慣一些程序設(shè)計(jì)語言允許給描述性的名字賦以特定的不可改變的值,這樣的名字稱為常量(constant)。傳統(tǒng)的程序設(shè)計(jì)概念4.賦值語句賦值語句(assignmentstatement),它把一個(gè)值賦給一個(gè)變量。這種語句的語法形式通常是,一個(gè)變量,跟一個(gè)表示賦值運(yùn)算的符號(hào),最后是指示要賦的值的表達(dá)式。 例如:Z=X+Y; Z:=X+Y;運(yùn)算符優(yōu)先(operatorprecedence) 賦值語句中的表達(dá)式的運(yùn)算次序是借助運(yùn)算符的優(yōu)先級(jí)實(shí)現(xiàn)的 例如:2*4+6/2重載(overloading):一個(gè)運(yùn)算符的多重使用稱為運(yùn)算符的重載 例如:“abc”+“ok”

結(jié)果是:“abcok”傳統(tǒng)的程序設(shè)計(jì)概念5.控制語句是改變?cè)摮绦驁?zhí)行順序的命令型語句。最簡(jiǎn)單的控制語句是轉(zhuǎn)向語句(goto命令

),它類似于機(jī)器指令JUMP采用結(jié)構(gòu)化的程序設(shè)計(jì)的方法,即包含系統(tǒng)的組織設(shè)計(jì)方法及對(duì)控制語句的合理使用。核心是要設(shè)計(jì)容易理解且滿足需求規(guī)格說明的程序。常用的:選擇結(jié)構(gòu)(if-then-else)循環(huán)結(jié)構(gòu)(while、for)分情況結(jié)構(gòu)(switch-case)傳統(tǒng)的程序設(shè)計(jì)概念5.控制語句控制結(jié)構(gòu)及其在語言C、C++、C#和Java里的表示分情況結(jié)構(gòu)是if-then-else語句的一種擴(kuò)充傳統(tǒng)的程序設(shè)計(jì)概念5.控制語句

for結(jié)構(gòu)及其在語言C、C++、C#和Java里的表示另一種常用的簡(jiǎn)化了的循環(huán)結(jié)構(gòu)傳統(tǒng)的程序設(shè)計(jì)概念6.注解一種是整個(gè)注釋用特殊的記號(hào)括起來另一種是注釋用一個(gè)特殊的記號(hào)開始,該行的后面部分全是注釋。語言C、C++、C#和Java用記號(hào)/*和*/括住注釋,用記號(hào)//開始一個(gè)注釋直至行末。如:/*Thisiscomment.*/和//Thisiscomment.都是合法的注釋語句。傳統(tǒng)的程序設(shè)計(jì)概念---注釋語句6.注解傳統(tǒng)的程序設(shè)計(jì)概念P188

問題與練習(xí)過程單元1.過程過程(procedure)是實(shí)現(xiàn)一個(gè)任務(wù)的一組指令,它可以作為其他程序單元的抽象工具。過程單元1.過程過程內(nèi)部可以定義變量,過程也可以使用在過程之外定義的變量。在一個(gè)過程中說明的變量是局部變量(localvariable),這意味著它們只能在該過程內(nèi)部引用。不限制在一個(gè)程序特定部分使用的變量稱為全局變量(globalvariable),它們?cè)谠摮绦虻娜魏蔚胤蕉际强纱嫒〉?。過程單元過程的編寫方法:編寫過程時(shí),使用過程首部作為開始語句,隨后是過程的實(shí)現(xiàn)細(xì)節(jié)語句;過程首部中給出了過程的名字,例如:proceduresum(N);

過程的使用方法:過程的使用,稱之為“調(diào)用”

可以使用過程的名字來調(diào)用過程proceduremax(x,y)

if(x<y)thenm←y;elsem←x;returnma←5;b←7;c←max(a,b);過程單元2.參數(shù)----過程內(nèi)部的類屬項(xiàng)形式參數(shù)(formalparameter)

定義一個(gè)過程的時(shí)候使用的參數(shù)實(shí)在參數(shù)(actualparameter)

調(diào)用一個(gè)過程時(shí)使用的參數(shù)過程單元2.參數(shù)------過程舉例過程單元2.參數(shù)如果某個(gè)過程有多個(gè)參數(shù),在調(diào)用該過程時(shí),實(shí)在參數(shù)要與形式參數(shù)必須一一對(duì)應(yīng)

即二者的個(gè)數(shù)與類型必須完全一致實(shí)在參數(shù)與形式參數(shù)之間傳遞數(shù)據(jù)的方式:按值傳遞(passedbyvalue)按引用傳遞(passedbyreference)過程單元2.參數(shù)過程單元2.參數(shù)

參數(shù)傳遞的例子:proceduremax(x,y)

if(x<y)then(t←x;x←y;y←t;)returnxa←5;b←7;c←max(a,b);a,b,c的值是多少?過程單元3.函數(shù)

過程的目的是要產(chǎn)生一個(gè)值,而不是一個(gè)動(dòng)作。

例如:求1到N的累加和的過程將一個(gè)列表排序的過程當(dāng)過程的目的是要產(chǎn)生一個(gè)值的時(shí)候,“過程”通常是作為函數(shù)實(shí)現(xiàn)的。函數(shù)(function)是指類似于過程的程序單元,它把一個(gè)值作為“該函數(shù)的值”傳遞給調(diào)用程序單元。過程單元3.函數(shù)過程與函數(shù)的區(qū)別:P192過程單元P193

問題與練習(xí)語言實(shí)現(xiàn)如何將高級(jí)語言轉(zhuǎn)化為機(jī)器語言的過程。這個(gè)過程包含兩個(gè)大的步驟: 翻譯 連接與裝入語言實(shí)現(xiàn)1.翻譯過程語言實(shí)現(xiàn)(1)詞法分析:

詞法分析是從源程序中辨認(rèn)構(gòu)成單個(gè)實(shí)體的符號(hào)串的過程。

例如:proceduremax(x,y)

if(x<y)then(t←x;x←y;y←t;)max←x;逐個(gè)符號(hào)的讀取源程序,然后辨認(rèn)出哪些符號(hào)構(gòu)成一個(gè)單元為每個(gè)單元生成一個(gè)標(biāo)記語言實(shí)現(xiàn)(2)語法分析:語法分析比較麻煩。早期,語法分析技術(shù)不太先進(jìn),所以程序設(shè)計(jì)語言曾經(jīng)是固定格式語言。今天,大多是自由格式語言。

語法分析的單位是語句,因此必須區(qū)分出一個(gè)程序中的每條語句。在自由格式語言中,區(qū)分語句的方法:

通常使用一些特殊的符號(hào)來標(biāo)明程序的開始和結(jié)束,以及程序中每條語句的開始和結(jié)束。還可以使用類似if、then、else之類的關(guān)鍵字(保留字)來標(biāo)明單個(gè)語句的開始語言實(shí)現(xiàn)(2)語法分析:

語法的分析是基于語法規(guī)則的。表達(dá)這些規(guī)則的方法是借助于語法圖。它是語言的語法結(jié)構(gòu)的圖形表示。

例如if語句的語法圖規(guī)定了if語句的一般格式:if-then-else偽代碼語句的語法圖需要進(jìn)一步描述的項(xiàng)(非終結(jié)符)不需要進(jìn)一步描述的項(xiàng)(終結(jié)符)語言實(shí)現(xiàn)(2)語法分析:

判斷一個(gè)特定的串是否符合一組語法圖的方法是根據(jù)語法圖為其構(gòu)造語法分析樹例如,使用圖6.15來分析表達(dá)式x+y*z是否合法語言實(shí)現(xiàn)表達(dá)式的語法圖語言實(shí)現(xiàn)語言實(shí)現(xiàn)(2)語法分析:

一個(gè)程序語法分析的過程實(shí)際上就是根據(jù)事先定義好的語法圖為源程序構(gòu)造語法分析樹。實(shí)際上,語法分析樹就是語法分析程序?qū)σ粋€(gè)程序的語法構(gòu)成的理解。因此,對(duì)于一條語句不允許有兩種不同的語法分析樹。下面這種情況是不允許的。

ifB1thenifB2thenS1elseS2if-then-else偽代碼語句的語法圖語言實(shí)現(xiàn)語句ifB1thenifB2thenS1elseS2的兩個(gè)不同的語法分析樹→

ifB1then(ifB2thenS1)

elseS2IfB1then(ifB2thenS1elseS2)語言實(shí)現(xiàn)(2)語法分析:當(dāng)語法分析程序分析聲明語句時(shí),它把這些語句里的聲明信息記錄在稱為符號(hào)表的表里。

符號(hào)表里包含的信息:變量的名稱、類型、變量的數(shù)據(jù)結(jié)構(gòu)等符號(hào)表是語法分析程序后來判定某個(gè)語句是否有意義的依據(jù)例如:z←x+y

有些語言允許強(qiáng)制類型轉(zhuǎn)換,即類型之間的隱式轉(zhuǎn)換

大多數(shù)語言不允許,凡是不允許進(jìn)行強(qiáng)制類型會(huì)轉(zhuǎn)換的語言被稱為是強(qiáng)類型的程序設(shè)計(jì)語言語言實(shí)現(xiàn)(3)代碼生成:語法分析階段完成后,已經(jīng)將各條語句分解成一些基本的因子。

代碼生成階段只需要將這些因子替換為事先準(zhǔn)備好的機(jī)器代碼即可。

代碼生成階段涉及到很多具體問題,其中之一是代碼優(yōu)化代碼優(yōu)化就是如何使得這一階段生成的目標(biāo)程序有較高的執(zhí)行效率。

例如:

x←y+z; w←x+z;語言實(shí)現(xiàn)翻譯過程的三個(gè)步驟并不是嚴(yán)格的按照順序執(zhí)行的。語言實(shí)現(xiàn)2.連接和裝入 翻譯過程生成的目標(biāo)程序,雖然已經(jīng)是機(jī)器語言表達(dá)的了,但很少具有計(jì)算機(jī)可以執(zhí)行的形式。一個(gè)理由:大多數(shù)程序設(shè)計(jì)環(huán)境都允許一個(gè)程序的各個(gè)模塊可以作為單個(gè)程序單元在不同的時(shí)間開發(fā)和翻譯。另外,即使一個(gè)程序作為一個(gè)單元被完整的翻譯,它的目標(biāo)程序仍很少能夠單獨(dú)執(zhí)行。因?yàn)榻^大多程序都包含對(duì)一些使用程序或者操作系統(tǒng)的服務(wù)的請(qǐng)求。語言實(shí)現(xiàn)語言實(shí)現(xiàn)3.軟件開發(fā)包軟件開發(fā)過程中,需要用到的程序的集合,我們稱之為軟件開發(fā)系統(tǒng)(軟件開發(fā)包)。

編輯程序、翻譯程序、連接程序、調(diào)試程序等。語言實(shí)現(xiàn)P199

問題與練習(xí)本章小節(jié)---歷史回顧、傳統(tǒng)程序設(shè)計(jì)概念、過程單元、語言實(shí)現(xiàn)歷史回顧三代程序設(shè)計(jì)語言、程序設(shè)計(jì)語言的發(fā)展趨勢(shì)匯編程序、編譯程序、解釋程序四種程序設(shè)計(jì)范型傳統(tǒng)的程序設(shè)計(jì)概念說明語句變量、直接量、常量數(shù)據(jù)類型(

溫馨提示

  • 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)論