第十三章程序相關(guān)設(shè)計(jì)語言和編碼_第1頁(yè)
第十三章程序相關(guān)設(shè)計(jì)語言和編碼_第2頁(yè)
第十三章程序相關(guān)設(shè)計(jì)語言和編碼_第3頁(yè)
第十三章程序相關(guān)設(shè)計(jì)語言和編碼_第4頁(yè)
第十三章程序相關(guān)設(shè)計(jì)語言和編碼_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第十三章程序相關(guān)設(shè)計(jì)語言和編碼軟件工程編碼階段的任務(wù)是將詳細(xì)設(shè)計(jì)翻譯成計(jì)算機(jī)可以“理解”并且最終可運(yùn)行的代碼。編碼的過程就是把詳細(xì)設(shè)計(jì)翻譯成可執(zhí)行代碼的過程,也是人借助編程語言與計(jì)算機(jī)通信的過程。相對(duì)于軟件生命周期的其他階段,編碼耗費(fèi)較少。程序設(shè)計(jì)語言的分類大體上,程序設(shè)計(jì)語言分為以下幾類:(1)機(jī)器語言(2)匯編語言(3)高級(jí)語言由于高級(jí)語言種類繁多,我們可以從應(yīng)用特點(diǎn)、語言內(nèi)在特點(diǎn)和對(duì)客觀系統(tǒng)的描述三個(gè)不同的角度來對(duì)高級(jí)語言進(jìn)行分類。程序設(shè)計(jì)語言1.機(jī)器語言(MachineLanguage) 機(jī)器語言,是一種用二進(jìn)制代碼表示的低級(jí)語言,是計(jì)算機(jī)直接使用的指令代碼。機(jī)器語言沒有通用性、不能移植、因機(jī)器而異,因?yàn)樘幚頇C(jī)不同指令系統(tǒng)就不同。用機(jī)器語言編寫程序,都采用二進(jìn)制代碼形式,且所有的地址分配都以絕對(duì)地址的形式處理,存儲(chǔ)空間的安排、寄存器、變址的使用也都由程序員自己計(jì)劃。2.匯編語言(AssembleLanguage) 匯編語言,是一種使用助記符表示的低級(jí)語言。某一種匯編語言也是專門為某種特定的計(jì)算機(jī)系統(tǒng)而設(shè)計(jì)的。用匯編語言寫成的程序,需經(jīng)匯編程序翻譯成機(jī)器語言程序才能執(zhí)行。 匯編語言中的每條符號(hào)指令都與相應(yīng)的機(jī)器指令有對(duì)應(yīng)關(guān)系,同時(shí)又增加了一些諸如宏、符號(hào)地址等功能。雖然這種語言的命令比機(jī)器語言好記,但它并沒有改變機(jī)器語言功能弱、指令少、繁瑣、易出錯(cuò)、不能移植等的缺點(diǎn)。3.高級(jí)語言(HighlevelLanguage) 高級(jí)語言是面向用戶的、基本上獨(dú)立于計(jì)算機(jī)種類和結(jié)構(gòu)的語言。高級(jí)語言最大的優(yōu)點(diǎn)是:形式上接近于算術(shù)語言和自然語言,概念上又接近于人們通常使用的概念。高級(jí)語言的一個(gè)命令可以代替幾條、幾十條甚至幾百條匯編語言的指令,因此,高級(jí)語言易學(xué)易用,通用性強(qiáng)且應(yīng)用廣泛。4.第四代語言(FourthGenerationlanguage,簡(jiǎn)稱4GL) 第四代語言(4GL)的出現(xiàn),將語言的抽象層次又提高到一個(gè)新的高度。第四代語言雖然也用不同的文法表示程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),但第四代語言是在更高一級(jí)抽象的層次上表示這些結(jié)構(gòu)。用第四代語言編碼時(shí)只需說明“做什么”,而不需描述算法細(xì)節(jié)。(1)基礎(chǔ)語言(例:FORTRAN,BASIC,COBOL和ALGOL)(2)結(jié)構(gòu)化語言(例:ALGOL,PL/1,PASCAL,C,Ada)(3)專用語言(例:APL,LISP,PROLOG,BLISS,F(xiàn)ORTH)1、從應(yīng)用特點(diǎn)的角度來分(1)系統(tǒng)實(shí)現(xiàn)語言(例:C語言)(2)靜態(tài)高級(jí)語言(例:FORTRAN、COBOL)(3)塊結(jié)構(gòu)高級(jí)語言(例:PASCAL,ALGOL)(4)動(dòng)態(tài)高級(jí)語言2、從語言內(nèi)在特點(diǎn)的角度來分(2)面向?qū)ο笳Z言對(duì)象+消息(1)面向過程語言數(shù)據(jù)結(jié)構(gòu)+算法3、從描述客觀系統(tǒng)的角度來分例:Delphi、VisualBasic、JAVA、C++。二、程序設(shè)計(jì)語言的特點(diǎn)

1.名字說明

2.類型說明

3.初始化

4.程序?qū)ο蟮木植啃?/p>

5.程序模塊

6.循環(huán)控制結(jié)構(gòu)

7.分支控制給構(gòu)

8.異常處理

9.獨(dú)立編譯

三、程序設(shè)計(jì)語言的選擇

程序設(shè)計(jì)語言的選擇常從以下幾個(gè)方面考慮: (1)項(xiàng)目的應(yīng)用領(lǐng)域

(2)算法與計(jì)算的復(fù)雜性

(3)數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性

(4)效率

(5)可移植性

(6)程序設(shè)計(jì)人員的水平

(7)構(gòu)造系統(tǒng)的模式編碼風(fēng)格

編碼風(fēng)格實(shí)際上是一種編碼原則。從20世紀(jì)70年代以來,編碼的目標(biāo)從強(qiáng)調(diào)效率轉(zhuǎn)變到強(qiáng)調(diào)清晰。與此相應(yīng),編碼風(fēng)格也從追求“聰明”和“技巧”,變?yōu)樘岢昂?jiǎn)明”和“直接”。人們逐漸認(rèn)識(shí)到,良好的編碼風(fēng)格能在一定程度上彌補(bǔ)程序設(shè)計(jì)語言存在的缺點(diǎn)。反之,如果不注意編碼風(fēng)格,即使使用了結(jié)構(gòu)化的現(xiàn)代語言,也很難寫出高質(zhì)量的程序。一、代碼文檔化:指編碼時(shí)適當(dāng)選擇標(biāo)識(shí)符的名字、適當(dāng)安排注釋和注重程序的整個(gè)組織形式。二、數(shù)據(jù)說明:程序或模塊在其可執(zhí)行部分的前面都集中了一些說明語句,出于閱讀理解和維護(hù)的要求,最好使其規(guī)范化,使說明的先后次序固定。三、語句構(gòu)造:每條語句都應(yīng)當(dāng)簡(jiǎn)單而直接,同時(shí)也不應(yīng)為了追求運(yùn)行效率而使代碼復(fù)雜化,這樣會(huì)減低程序的可讀性。四、輸入/輸出:源程序的輸入輸出風(fēng)格必須滿足運(yùn)行工程學(xué)的需要。通常,效率主要指占用處理機(jī)時(shí)間和主存區(qū)域兩個(gè)方面。好的編碼可以提高效率,在我們進(jìn)一步討論這個(gè)問題之前,應(yīng)該記住三條原則:第一、效率是一個(gè)性能要求,因而應(yīng)該在需求分析階段確定代碼效率方面的要求;第二、通過好的設(shè)計(jì)可以提高效率;第三、程序的效率和程序的簡(jiǎn)明程度是一致的,不應(yīng)該為了提高代碼效率而犧牲程序的清晰性和可讀性。效率一、代碼效率

(1)應(yīng)先簡(jiǎn)化算術(shù)和邏輯的表達(dá)式。

(2)仔細(xì)研究嵌套的循環(huán),以確定是否有語句可以從內(nèi)層往外移。

(3)盡量避免使用多維數(shù)組。

(4)盡量避免使用指針和復(fù)雜的列表。

(5)使用執(zhí)行時(shí)間短的算術(shù)運(yùn)算。

(6)即使語言允許,一般也不要采用混合數(shù)據(jù)類型。

(7)盡量使用整數(shù)表達(dá)式和布爾表達(dá)式。二、存儲(chǔ)器效率 采用結(jié)構(gòu)化程序設(shè)計(jì),將程序功能合理分塊,使每個(gè)模塊或一組密切相關(guān)模塊的程序體積大小與每頁(yè)的容量相匹配,可減少頁(yè)面調(diào)度、減少內(nèi)外存交換,提高存儲(chǔ)器效率。 在微型計(jì)算機(jī)系統(tǒng)中,存儲(chǔ)器的容量對(duì)軟件設(shè)計(jì)和編碼的制約比較大。因此要選擇可生成較短目標(biāo)代碼且存儲(chǔ)壓縮性能優(yōu)良的編譯程序,有時(shí)需要采用匯編語言編程。三、輸入/輸出的效率(1)所有輸入/輸出都應(yīng)該有緩沖,以減少過多的通信次數(shù)。

(2)對(duì)輔存(如磁盤),應(yīng)選用最簡(jiǎn)單的訪問方法。

(3)輔存的輸入/輸出,應(yīng)該以塊為單位進(jìn)行。

(4)終端和打印機(jī)的輸入/輸出,應(yīng)當(dāng)考慮設(shè)備的特性,以提高輸入/輸出的質(zhì)量和速度。

(5)不應(yīng)當(dāng)采用不能被人們所理解的超高效的輸入/輸出。程序內(nèi)部的文檔包括:恰當(dāng)?shù)臉?biāo)識(shí)符(變量和標(biāo)號(hào))的名字;適當(dāng)?shù)淖⑨?;程序的視覺組織。程序內(nèi)部的文檔標(biāo)識(shí)符包括模塊名、變量名、常量名、標(biāo)號(hào)名、子程序名以及數(shù)據(jù)區(qū)名、緩沖區(qū)名等。這些名字的選取應(yīng)含義鮮明,能正確地提示程序?qū)ο笏淼膶?shí)體。這對(duì)于幫助閱讀者理解程序是很重要的。例如,表示次數(shù)用times,表示總量用total等。名字的長(zhǎng)度不應(yīng)限制,但也不宜過長(zhǎng),太長(zhǎng)了容易出錯(cuò),應(yīng)選擇精煉且意義明確的名字,這樣才能簡(jiǎn)化程序語句,改善對(duì)程序功能的理解。如果名字使用縮寫,那么縮寫規(guī)則應(yīng)該一致,并且應(yīng)該給每個(gè)名字加上注解,以方便閱讀。1、標(biāo)識(shí)符的命名程序的注釋分為兩種:序言性注釋和功能性注釋。2、程序的注釋序言性注釋通常安排在每個(gè)程序模塊的起始部分,它是對(duì)程序的整體說明,對(duì)于理解程序本身具有引導(dǎo)作用。其格式如下:有關(guān)本模塊功能說明;主要算法;接口描述:包括調(diào)用形式,參數(shù)描述以及子模塊清單;有關(guān)數(shù)據(jù)描述:包括重要的變量及其用途、約束或限制條件,以及其它有關(guān)信息;模塊位置:在哪一個(gè)源文件中,或隸屬于哪一個(gè)軟件包;開發(fā)簡(jiǎn)歷:包括模塊設(shè)計(jì)者姓名,復(fù)審人姓名,復(fù)審日期,修改日期及有關(guān)說明等。功能性注釋嵌入在源程序體內(nèi),用以描述其后的語句或程序段的處理功能。書寫功能性注釋,要注意以下幾點(diǎn):描述的對(duì)象是一段程序,而不是每一個(gè)語句;適當(dāng)使用縮進(jìn)和空行,使程序與注釋容易區(qū)別;注釋一定要準(zhǔn)確。不精確的甚至是錯(cuò)誤的注釋不僅對(duì)理解程序毫無幫助,反而會(huì)妨礙對(duì)程序的理解。PrivateSubForm_Load()DimtxtSQLAsStringDimMsgTextAsStringDimiAsInteger

comboSex.AddItem"男"comboSex.AddItem"女"txtSQL="select*frommanrecord"Setmrc=ExecuteSQL(txtSQL,MsgText)'添加內(nèi)容到列表框

Nexti'關(guān)閉數(shù)據(jù)對(duì)象

EndSub程序中代碼的布局對(duì)于程序的可讀性也有很大影響。適當(dāng)?shù)睦每崭?、空行和移行能使程序的邏輯結(jié)構(gòu)更加清晰??崭竦暮侠響?yīng)用還可以突出運(yùn)算的優(yōu)先性,避免發(fā)生運(yùn)算的錯(cuò)誤。3、程序的視覺組織Fori=0To1cboYear(i).ListIndex=0Nexti

Fori=0To1Forj=1To12cboMonth(i).AddItemjNextjNextiFori=0To1cboMonth(i).Text=Month(Now())NextiElsecmdCX.Enabled=FalseEndIf為了使數(shù)據(jù)更容易理解和維護(hù),應(yīng)遵循一些簡(jiǎn)單的原則:(1)數(shù)據(jù)說明的次序應(yīng)當(dāng)規(guī)范化。(2)當(dāng)多個(gè)變量名在一個(gè)語句中說明時(shí),應(yīng)該按字母順序排列這些變量。(3)如果設(shè)計(jì)時(shí)使用了一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),則應(yīng)注解說明用程序設(shè)計(jì)語言實(shí)現(xiàn)這個(gè)數(shù)據(jù)結(jié)構(gòu)的方法和特點(diǎn)。數(shù)據(jù)說明語句構(gòu)造應(yīng)遵循的原則是:每條語句應(yīng)該簡(jiǎn)單而直接,不應(yīng)為了片面追求效率而使代碼變得過于復(fù)雜。語句構(gòu)造人們?cè)陂L(zhǎng)期的實(shí)踐中總結(jié)了以下一些規(guī)則:不要為了節(jié)省空間而把多個(gè)語句寫在同一行;用空格或可讀的符號(hào)使語句的內(nèi)容更加清晰;盡量避免復(fù)雜的條件測(cè)試;盡量避免使用“非”條件的條件語句;避免過多使用循環(huán)嵌套和條件嵌套;利用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序清晰直觀;盡可能使用庫(kù)函數(shù);讓編譯程序作簡(jiǎn)單的優(yōu)化。在設(shè)計(jì)和程序編碼時(shí),應(yīng)考慮輸入和輸出風(fēng)格原則:對(duì)所有輸入數(shù)據(jù)都進(jìn)行校驗(yàn),以保證每個(gè)數(shù)據(jù)的有效性;檢查重要的輸入項(xiàng)組合的合法性;使得輸入的步驟和操作盡可能簡(jiǎn)單,并保持簡(jiǎn)單的輸入格式;輸入一批數(shù)據(jù)時(shí),使用輸入結(jié)束指示符,不要要求用戶說明輸入項(xiàng)數(shù);在以交互式輸入/輸出方式進(jìn)行輸入時(shí),要指明可以使用的選擇值或界限值;應(yīng)允許缺省值;當(dāng)程序設(shè)計(jì)語言對(duì)輸入/輸出格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式與輸入語句的要求一致;給所有的輸出加注釋,并設(shè)計(jì)輸出報(bào)表格式。輸入/輸出為了提高編碼的效率,保證程序的可靠性,我們經(jīng)常使用一些編碼工具。首先要用的當(dāng)然是編輯工具了。選用合適的編輯工具可以大大方便編程,提高效率。編譯程序的好壞也會(huì)影響編碼的效率。一方面,好的編譯程序應(yīng)該是程序員的好助手,能夠幫助程序員及時(shí)準(zhǔn)確地診斷出程序中的差錯(cuò),減少程序開發(fā)的成本。另一方面,編譯程序還應(yīng)該能夠生成高效率的機(jī)器代碼,也就是代碼優(yōu)化。編碼工具現(xiàn)在的軟件系統(tǒng)往往是集體開發(fā),一個(gè)大的軟件系統(tǒng)往往包含許多模塊,這些不同的模塊可能分散在幾個(gè)不同的文件或庫(kù)里。為了得到最終的可執(zhí)行代碼,必須先將各個(gè)模塊進(jìn)行分別編譯,然后再進(jìn)行連接。由于模塊的數(shù)量很多,而且這些模塊往往都是相互影響和制約的,如果某個(gè)模塊的源代碼改變了,那么受此模塊影響的所有其它模塊都必須進(jìn)行再編譯、再連接。我們可以借助一些工具來完成這項(xiàng)工作。如UNIX的MAKE工具。利用MAKE程序能保持模塊間的協(xié)調(diào)關(guān)系。程序員將程序不同模塊之間的依賴關(guān)系以及更新模塊時(shí)必須進(jìn)行的操作告訴MAKE程序,這樣,MAKE程序就能夠自動(dòng)檢索出那些“過時(shí)”了的,需要進(jìn)行再編譯的模塊,并對(duì)所發(fā)現(xiàn)的過時(shí)模塊執(zhí)行說明信息中規(guī)定的更新操作,從而使目標(biāo)文件永遠(yuǎn)保持最新的版本。面向?qū)ο蟪绦蛟O(shè)計(jì)語言的特點(diǎn)

面向?qū)ο笳Z言支持面向?qū)ο蟮母拍?,如封裝、繼承、多態(tài)、將數(shù)據(jù)抽象化等特點(diǎn)。如C++中一般用類來實(shí)現(xiàn)封裝;Java的類有層次之分,子類繼承父類的屬性和方法,重用性較好。大多數(shù)面向?qū)ο笳Z言都提供一個(gè)實(shí)用的類庫(kù)。某些語言本身并沒有規(guī)定提供什么樣的類庫(kù),而是由實(shí)現(xiàn)這種語言的編譯系統(tǒng)自行提供類庫(kù)。

面向?qū)ο蟪绦蛟O(shè)計(jì)過程(1)選擇編程語言:選擇一種合適的面向?qū)ο蟮木幊陶Z言

(2)編碼:用選定語言編碼實(shí)現(xiàn)軟件設(shè)計(jì)步驟所得到的公式、圖表、說明和規(guī)則等軟件系統(tǒng)各對(duì)象類的詳盡描述。(3)集成:將編寫好的各個(gè)類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論