第十三章程序相關設計語言和編碼_第1頁
第十三章程序相關設計語言和編碼_第2頁
第十三章程序相關設計語言和編碼_第3頁
第十三章程序相關設計語言和編碼_第4頁
第十三章程序相關設計語言和編碼_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

1.名字說明

2.類型說明

3.初始化

4.程序對象的局部性

5.程序模塊

6.循環(huán)控制結構

7.分支控制給構

8.異常處理

9.獨立編譯

三、程序設計語言的選擇

程序設計語言的選擇常從以下幾個方面考慮: (1)項目的應用領域

(2)算法與計算的復雜性

(3)數(shù)據(jù)結構的復雜性

(4)效率

(5)可移植性

(6)程序設計人員的水平

(7)構造系統(tǒng)的模式編碼風格

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

(1)應先簡化算術和邏輯的表達式。

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

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

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

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

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

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

(2)對輔存(如磁盤),應選用最簡單的訪問方法。

(3)輔存的輸入/輸出,應該以塊為單位進行。

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

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

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

Nexti'關閉數(shù)據(jù)對象

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

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

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

面向對象程序設計過程(1)選擇編程語言:選擇一種合適的面向對象的編程語言

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

溫馨提示

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

最新文檔

評論

0/150

提交評論