版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
主要內(nèi)容第6章程序設(shè)計語言歷史回顧傳統(tǒng)的程序設(shè)計概念過程單元語言實現(xiàn)面向?qū)ο蟪绦蛟O(shè)計并發(fā)活動的程序設(shè)計說明型程序設(shè)計歷史回顧早期的程序設(shè)計語言機器語言--最早的程序設(shè)計語言調(diào)試:找到程序的錯誤并改正
20世紀40年代,研究人員開始簡化程序設(shè)計的記號系統(tǒng)
助記符號-->數(shù)字形式的指令例如:MOVR5,R6-->4056一個稍微復(fù)雜的例子:P173L10
標識符匯編語言:是表示程序的助記符系統(tǒng)統(tǒng)稱為匯編語言匯編器:負責(zé)翻譯工作歷史回顧早期的程序設(shè)計語言第一代程序設(shè)計語言:機器語言第二代程序設(shè)計語言:匯編語言它的出現(xiàn)是在研究程序設(shè)計語言技術(shù)方面邁出了巨大的一步匯編語言仍然存在著缺點:匯編語言使用的原語本質(zhì)上與機器語言是一樣的,差別只是在語法上。因此,匯編語言的程序生來就是機器相關(guān)的,即不同的體系架構(gòu)的計算機需要使用不同的匯編語言。
程序員雖然不必使用數(shù)字指令編程序,但是還是必須采用機器指令的模式去思考問題。歷史回顧在設(shè)計一個產(chǎn)品時,最終構(gòu)造一個產(chǎn)品的原語不一定是在設(shè)計該產(chǎn)品時應(yīng)該使用的原材料。比較好的做法是,設(shè)計過程中使用高級原語。設(shè)計完成之后,再把高級原語翻譯成與實現(xiàn)細節(jié)相關(guān)的較低級的原語。按照這種思想,人們開發(fā)了第三代程序設(shè)計語言。
擁有較好的與機器無關(guān)性,即不依賴于特定的計算機例如:FORTRAN、COBOL歷史回顧使用高級語言編寫程序時,我們需要一種稱為翻譯程序的程序。
翻譯程序負責(zé)把高級的原語翻譯成機器語言的程序每一種高級語言都必須要配有一個翻譯程序,它已經(jīng)是語言的一個組成部分翻譯程序有兩類:編譯程序解釋程序目前,編程序通常都使用編譯型的語言編輯程序+編譯程序發(fā)展第三代程序設(shè)計語言的任務(wù)并沒有我們想象的那么簡單。
目標是讓編譯程序越來越智能,程序設(shè)計語言本身越來越簡單程序設(shè)計范型
程序設(shè)計范型代表了在構(gòu)建問題的解決方法時的不同方法。
范型影響了整個軟件的開發(fā)過程。我們應(yīng)該稱為軟件開發(fā)范型。歷史回顧歷史回顧程序設(shè)計范型歷史回顧程序設(shè)計范型-
命令型范型(過程型)
是一種傳統(tǒng)的程序設(shè)計方法
這種范型告訴我們的程序設(shè)計方法是:先找到解決問題的算法,然后用命令序列表示這個算法。C、Pascal、BASIC…歷史回顧程序設(shè)計范型-說明型范型要求程序員描述要解決的問題,而不要求找到解決問題的算法。在這種范型設(shè)計的系統(tǒng)里,首先要發(fā)現(xiàn)一個通用的問題求解算法,一旦這種算法找到了,以后要解決的問題只需要按照與算法相兼容的形式描述,該算法就會自己解決該問題。使用這種范型設(shè)計程序,困難是基礎(chǔ)性的通用算法很難找到。因此,這種范型之應(yīng)用在某些特殊的方面例如:天氣預(yù)報、專家系統(tǒng)歷史回顧程序設(shè)計范型-
函數(shù)型范型這種范型解決問題的方法是,把開發(fā)程序的過程看成將預(yù)先定義好的“黑箱”連接起來的過程。一個“黑箱”的輸出可當(dāng)作另一個“黑箱”的輸入。這些“黑箱”被數(shù)學(xué)家稱為函數(shù),這就是稱為函數(shù)型范型的原因。一個函數(shù)型程序設(shè)計語言的原語由初等函數(shù)(構(gòu)建塊)組成在這種范型里,程序員要做的事就是尋找一種連接初等函數(shù)的方法,使他們構(gòu)成更復(fù)雜的函數(shù),從而計算出想要的結(jié)果。歷史回顧程序設(shè)計范型-
面向?qū)ο笮头缎瓦@種范型里,數(shù)據(jù)單元被看成活動的“對象”。傳統(tǒng)的命令型范型里,數(shù)據(jù)看作被指令操作的對象。自身不具有行為能力。數(shù)據(jù)與控制數(shù)據(jù)的代碼分離。面向?qū)ο蟮姆缎椭校瑪?shù)據(jù)與控制數(shù)據(jù)的代碼結(jié)合到一起。例如:對列表排序命令型范型中,列表被看作數(shù)據(jù)面向?qū)ο蟮姆缎椭?,列表被看作可調(diào)用的對象歷史回顧P216
問題與練習(xí)傳統(tǒng)的程序設(shè)計概念程序設(shè)計語言里的語句分為三類:聲明語句定義了程序中使用的需要自定義的術(shù)語.命令語句用于描述算法里的步驟注釋就是對程序的解釋,提高可讀性注釋語句根據(jù)需要分布在程序的各處傳統(tǒng)的程序設(shè)計概念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è)計概念1.變量和數(shù)據(jù)類型--變量高級程序設(shè)計語言允許存儲單元用描述性的名字來指稱,而不用數(shù)字地址。這種描述性的名字叫做變量。程序中需要用到的所有數(shù)據(jù)都是存儲在主存儲器的存儲單元里的。在機器語言中,是通過存儲單元的地址來實現(xiàn)對存儲單元的讀寫的。在高級程序設(shè)計語言中,變量就相當(dāng)于主存中存儲單元的地址的別名,我們就是通過這些別名來實現(xiàn)對存儲單元的讀寫的。
“把某個值存入某個變量”的含義例如:sum<--0數(shù)據(jù)類型在定義變量時,需要指明將來要存儲到該變量中的數(shù)據(jù)的類別傳統(tǒng)的程序設(shè)計概念1.變量和數(shù)據(jù)類型-基本的數(shù)據(jù)類型整數(shù)(integer)類型用來指稱(存儲)整數(shù)數(shù)據(jù)可以進行算數(shù)運算和比較運算實數(shù)(real)類型(有時稱為浮點(float)類型)用來指稱除整數(shù)之外的數(shù)值數(shù)據(jù)字符(character)類型用來指稱符號組成的數(shù)據(jù)比較、查找、連接等運算布爾(Boolean)類型指稱只有真和假兩種值的數(shù)據(jù)項傳統(tǒng)的程序設(shè)計概念1.變量和數(shù)據(jù)類型-說明變量的一般形式:
數(shù)據(jù)類型變量名;例如:intHeight;intHeight,Width; intheight=100;傳統(tǒng)的程序設(shè)計概念2.數(shù)據(jù)結(jié)構(gòu)抽象的描述:數(shù)據(jù)的概念形態(tài)或布局。通俗的理解:當(dāng)相同類型或不同類型的一組數(shù)據(jù)結(jié)合在一起使用時,可以使用某種方式將它們組織起來,這種數(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è)計概念2.數(shù)據(jù)結(jié)構(gòu)-同構(gòu)數(shù)組具有相同類型元素組成的數(shù)據(jù)塊定義數(shù)組的一般形式:類型名數(shù)組名[i][j][k]…[n]在數(shù)組中,我們是使用下標來標識數(shù)組中的某個元素傳統(tǒng)的程序設(shè)計概念2.數(shù)據(jù)結(jié)構(gòu)--異構(gòu)數(shù)組其元素可以有不同的類型的數(shù)據(jù)塊definetypeStudenttobe{ charName[8]; intAge; floatSkillRating;} (a)Studentstu1,stu2;傳統(tǒng)的程序設(shè)計概念3.常量和字面量程序中需要使用固定的預(yù)先決定的值。一個值的顯式出現(xiàn)稱為字面量(literal)。例如:EffectiveAlt<--Altimeter+645
使用直接量不是一個好的程序設(shè)計習(xí)慣一些程序設(shè)計語言允許給描述性的名字賦以特定的不可改變的值,這樣的名字稱為常量(constant)。傳統(tǒng)的程序設(shè)計概念4.賦值語句賦值語句(assignmentstatement),它把一個值賦給一個變量。這種語句的語法形式通常是,一個變量,跟一個表示賦值運算的符號,最后是指示要賦的值的表達式。 例如:Z=X+Y; Z:=X+Y;運算符優(yōu)先(operatorprecedence) 賦值語句中的表達式的運算次序是借助運算符的優(yōu)先級實現(xiàn)的 例如:2*4+6/2重載(overloading):一個運算符的多重使用稱為運算符的重載 例如:“abc”+“ok”
結(jié)果是:“abcok”傳統(tǒng)的程序設(shè)計概念5.控制語句是改變該程序執(zhí)行順序的命令型語句。最簡單的控制語句是轉(zhuǎn)向語句(goto命令
),它類似于機器指令JUMP采用結(jié)構(gòu)化的程序設(shè)計的方法,即包含系統(tǒng)的組織設(shè)計方法及對控制語句的合理使用。核心是要設(shè)計容易理解且滿足需求規(guī)格說明的程序。常用的:選擇結(jié)構(gòu)(if-then-else)循環(huán)結(jié)構(gòu)(while、for)分情況結(jié)構(gòu)(switch-case)傳統(tǒng)的程序設(shè)計概念5.控制語句控制結(jié)構(gòu)及其在語言C、C++、C#和Java里的表示分情況結(jié)構(gòu)是if-then-else語句的一種擴充傳統(tǒng)的程序設(shè)計概念5.控制語句
for結(jié)構(gòu)及其在語言C、C++、C#和Java里的表示另一種常用的簡化了的循環(huán)結(jié)構(gòu)傳統(tǒng)的程序設(shè)計概念6.注解一種是整個注釋用特殊的記號括起來另一種是注釋用一個特殊的記號開始,該行的后面部分全是注釋。語言C、C++、C#和Java用記號/*和*/括住注釋,用記號//開始一個注釋直至行末。如:/*Thisiscomment.*/和//Thisiscomment.都是合法的注釋語句。傳統(tǒng)的程序設(shè)計概念---注釋語句6.注解傳統(tǒng)的程序設(shè)計概念P188
問題與練習(xí)過程單元1.過程過程(procedure)是實現(xiàn)一個任務(wù)的一組指令,它可以作為其他程序單元的抽象工具。過程單元1.過程過程內(nèi)部可以定義變量,過程也可以使用在過程之外定義的變量。在一個過程中說明的變量是局部變量(localvariable),這意味著它們只能在該過程內(nèi)部引用。不限制在一個程序特定部分使用的變量稱為全局變量(globalvariable),它們在該程序的任何地方都是可存取的。過程單元過程的編寫方法:編寫過程時,使用過程首部作為開始語句,隨后是過程的實現(xiàn)細節(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)部的類屬項形式參數(shù)(formalparameter)
定義一個過程的時候使用的參數(shù)實在參數(shù)(actualparameter)
調(diào)用一個過程時使用的參數(shù)過程單元2.參數(shù)------過程舉例過程單元2.參數(shù)如果某個過程有多個參數(shù),在調(diào)用該過程時,實在參數(shù)要與形式參數(shù)必須一一對應(yīng)
即二者的個數(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)生一個值,而不是一個動作。
例如:求1到N的累加和的過程將一個列表排序的過程當(dāng)過程的目的是要產(chǎn)生一個值的時候,“過程”通常是作為函數(shù)實現(xiàn)的。函數(shù)(function)是指類似于過程的程序單元,它把一個值作為“該函數(shù)的值”傳遞給調(diào)用程序單元。過程單元3.函數(shù)過程與函數(shù)的區(qū)別:P192過程單元P193
問題與練習(xí)語言實現(xiàn)如何將高級語言轉(zhuǎn)化為機器語言的過程。這個過程包含兩個大的步驟: 翻譯 連接與裝入語言實現(xiàn)1.翻譯過程語言實現(xiàn)(1)詞法分析:
詞法分析是從源程序中辨認構(gòu)成單個實體的符號串的過程。
例如:proceduremax(x,y)
if(x<y)then(t←x;x←y;y←t;)max←x;逐個符號的讀取源程序,然后辨認出哪些符號構(gòu)成一個單元為每個單元生成一個標記語言實現(xiàn)(2)語法分析:語法分析比較麻煩。早期,語法分析技術(shù)不太先進,所以程序設(shè)計語言曾經(jīng)是固定格式語言。今天,大多是自由格式語言。
語法分析的單位是語句,因此必須區(qū)分出一個程序中的每條語句。在自由格式語言中,區(qū)分語句的方法:
通常使用一些特殊的符號來標明程序的開始和結(jié)束,以及程序中每條語句的開始和結(jié)束。還可以使用類似if、then、else之類的關(guān)鍵字(保留字)來標明單個語句的開始語言實現(xiàn)(2)語法分析:
語法的分析是基于語法規(guī)則的。表達這些規(guī)則的方法是借助于語法圖。它是語言的語法結(jié)構(gòu)的圖形表示。
例如if語句的語法圖規(guī)定了if語句的一般格式:if-then-else偽代碼語句的語法圖需要進一步描述的項(非終結(jié)符)不需要進一步描述的項(終結(jié)符)語言實現(xiàn)(2)語法分析:
判斷一個特定的串是否符合一組語法圖的方法是根據(jù)語法圖為其構(gòu)造語法分析樹例如,使用圖6.15來分析表達式x+y*z是否合法語言實現(xiàn)表達式的語法圖語言實現(xiàn)語言實現(xiàn)(2)語法分析:
一個程序語法分析的過程實際上就是根據(jù)事先定義好的語法圖為源程序構(gòu)造語法分析樹。實際上,語法分析樹就是語法分析程序?qū)σ粋€程序的語法構(gòu)成的理解。因此,對于一條語句不允許有兩種不同的語法分析樹。下面這種情況是不允許的。
ifB1thenifB2thenS1elseS2if-then-else偽代碼語句的語法圖語言實現(xiàn)語句ifB1thenifB2thenS1elseS2的兩個不同的語法分析樹→
ifB1then(ifB2thenS1)
elseS2IfB1then(ifB2thenS1elseS2)語言實現(xiàn)(2)語法分析:當(dāng)語法分析程序分析聲明語句時,它把這些語句里的聲明信息記錄在稱為符號表的表里。
符號表里包含的信息:變量的名稱、類型、變量的數(shù)據(jù)結(jié)構(gòu)等符號表是語法分析程序后來判定某個語句是否有意義的依據(jù)例如:z←x+y
有些語言允許強制類型轉(zhuǎn)換,即類型之間的隱式轉(zhuǎn)換
大多數(shù)語言不允許,凡是不允許進行強制類型會轉(zhuǎn)換的語言被稱為是強類型的程序設(shè)計語言語言實現(xiàn)(3)代碼生成:語法分析階段完成后,已經(jīng)將各條語句分解成一些基本的因子。
代碼生成階段只需要將這些因子替換為事先準備好的機器代碼即可。
代碼生成階段涉及到很多具體問題,其中之一是代碼優(yōu)化代碼優(yōu)化就是如何使得這一階段生成的目標程序有較高的執(zhí)行效率。
例如:
x←y+z; w←x+z;語言實現(xiàn)翻譯過程的三個步驟并不是嚴格的按照順序執(zhí)行的。語言實現(xiàn)2.連接和裝入 翻譯過程生成的目標程序,雖然已經(jīng)是機器語言表達的了,但很少具有計算機可以執(zhí)行的形式。一個理由:大多數(shù)程序設(shè)計環(huán)境都允許一個程序的各個模塊可以作為單個程序單元在不同的時間開發(fā)和翻譯。另外,即使一個程序作為一個單元被完整的翻譯,它的目標程序仍很少能夠單獨執(zhí)行。因為絕大多程序都包含對一些使用程序或者操作系統(tǒng)的服務(wù)的請求。語言實現(xiàn)語言實現(xiàn)3.軟件開發(fā)包軟件開發(fā)過程中,需要用到的程序的集合,我們稱之為軟件開發(fā)系統(tǒng)(軟件開發(fā)包)。
編輯程序、翻譯程序、連接程序、調(diào)試程序等。語言實現(xiàn)P199
問題與練習(xí)本章小節(jié)---歷史回顧、傳統(tǒng)程序設(shè)計概念、過程單元、語言實現(xiàn)歷史回顧三代程序設(shè)計語言、程序設(shè)計語言的發(fā)展趨勢匯編程序、編譯程序、解釋程序四種程序設(shè)計范型傳統(tǒng)的程序設(shè)計概念說明語句變量、直接量、常量數(shù)據(jù)類型(
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外墻保溫細節(jié)施工方案
- 變電站一次設(shè)備
- 廣東省惠州市博羅縣2024-2025學(xué)年八年級上學(xué)期期末教學(xué)質(zhì)量階段性診斷英語試題(原卷版)
- 二零二五年房地產(chǎn)企業(yè)勞動合同及售后服務(wù)協(xié)議2篇
- 課標版高考語文二輪復(fù)習(xí)題一論述類文本閱讀課件
- 2024年浙江宇翔職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2024年泉州工藝美術(shù)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 2024年阜新市礦務(wù)局精神病醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年江門職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 二零二五年物流倉儲項目保證擔(dān)保協(xié)議3篇
- 教師培訓(xùn)的教師專業(yè)知識與技能
- 人工智能在體育訓(xùn)練與競技分析中的應(yīng)用
- 2024版幼兒園哲學(xué)思考與人生觀主題班會課件
- 2023年拓展加盟經(jīng)理年終總結(jié)及下一年計劃
- 比賽對陣表模板
- 混凝土技術(shù)規(guī)格書
- 醫(yī)美藥品基本管理制度范本
- 吳茱萸熱奄包
- 思想道德與法治2023版教學(xué)設(shè)計第六章 學(xué)習(xí)法治思想 提升法治素養(yǎng)
- 霍尼韋爾1900 Honeywell條碼掃描槍設(shè)置
- 公司年度工作總結(jié)會議議程
評論
0/150
提交評論