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

下載本文檔

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

文檔簡介

第7章程序設(shè)計(jì)語言和編碼教學(xué)目標(biāo)與要求理解編碼階段的主要任務(wù)掌握程序設(shè)計(jì)語言的類別掌握結(jié)構(gòu)化程序設(shè)計(jì)的主要原則掌握注釋的兩種類型了解程序設(shè)計(jì)風(fēng)格第7章程序設(shè)計(jì)語言和編碼教學(xué)重點(diǎn)與難點(diǎn)理解編碼階段的主要任務(wù)掌握結(jié)構(gòu)化程序設(shè)計(jì)的主要原則了解程序設(shè)計(jì)風(fēng)格第7章程序設(shè)計(jì)語言和編碼做為軟件工程過程的一個(gè)階段,程序編碼是設(shè)計(jì)的繼續(xù)。編碼是在詳細(xì)設(shè)計(jì)的基礎(chǔ)上進(jìn)行的,其主要任務(wù)是將軟件的詳細(xì)設(shè)計(jì)轉(zhuǎn)換成用程序設(shè)計(jì)語言實(shí)現(xiàn)的程序代碼,也就是根據(jù)詳細(xì)設(shè)計(jì)階段給出的程序邏輯結(jié)構(gòu)的描述,選擇某種計(jì)算機(jī)能夠接受的程序語言,按照編程規(guī)范,編寫出高質(zhì)量的、具有一致性、可移植性、可維護(hù)性和高效率的程序代碼。程序設(shè)計(jì)語言的性能和設(shè)計(jì)風(fēng)格對(duì)于程序設(shè)計(jì)的效能和質(zhì)量有著直接的關(guān)系。7.1程序設(shè)計(jì)語言

7.1.1語言類別

1.機(jī)器語言——第一代語言機(jī)器語言是計(jì)算機(jī)硬件系統(tǒng)能夠識(shí)別、執(zhí)行的一組指令。用這種語言編寫的程序,都是二進(jìn)制代碼的形式,且所有的地址分配都是以絕對(duì)地址的形式處理。存儲(chǔ)空間的安排,寄存器、變址的使用都由程序員計(jì)劃。對(duì)于不同的機(jī)器就有相應(yīng)的一套機(jī)器語言。優(yōu)點(diǎn):執(zhí)行效率高,速度快;缺點(diǎn):不易編制、不易理解,出錯(cuò)率高。b6b5b401234567b3b2b1b000000101001110010111011100000NULDLESP0@P、p10001SOHDC1!1AQaq20010STXDC2“2BRbr30011ETXDC3#3CScs40100EOTDC4$4DTdt50101ENQNAK%5EUeu60110ACKSYN&6FVfv70111BELETB‘7GWgw81000BSCAN(8HXhx91001HTEM)9IYiyA1010LFSUB*:JZjzB1011VTESC+;K[k{C1100FFFS,〈L\l|D1101CRGS-=M]m}E1110SORS·〉N↑n~F1111SIUS/?O↓oDELASCII碼表

7.1.1語言類別

2.匯編語言——第二代語言匯編語言是用助記符來代替操作碼,用地址符號(hào)來代替地址碼的語言。存儲(chǔ)空間的安排可由機(jī)器解決,減少了程序員的工作量,也減少了出錯(cuò)率。匯編程序是把匯編語言程序翻譯成機(jī)器語言程序的程序,翻譯的過程成為匯編。匯編語言因使用的機(jī)器不同而不同。優(yōu)點(diǎn):執(zhí)行效率高,速度快,易于理解和記憶。缺點(diǎn):不同指令集的處理器系統(tǒng)就有自己相應(yīng)的匯編語言。舉例:匯編語言計(jì)算1---10的累加和

MVDR1,0;

MVDR2,0A;

MVDR3,0;2066:INCR3;

ADDR1,R3;

CMPR3,R2;

JNZ2066;

RET;

7.1.1語言類別

3.高級(jí)語言——第三代語言高級(jí)語言不依賴于實(shí)現(xiàn)這種語言的計(jì)算機(jī)。一條語句往往對(duì)應(yīng)多條機(jī)器指令,因而用高級(jí)語言編寫程序使工作量大為減少。翻譯方法:編譯:先翻譯,后執(zhí)行解釋:逐條翻譯,逐條執(zhí)行分類:通用語言:適用性強(qiáng),應(yīng)用面廣,可移植性強(qiáng)專用語言:面向特定的應(yīng)用領(lǐng)域舉例:C語言計(jì)算1---10的累加和

Main(){

intsum=0;

for(inti=1;i<=10;i++)sum=sum+i;printf(“1-10的累加和是:”)+sum;}舉例:JAVA語言計(jì)算1---10的累加和publicclassForPrime

{

publicstaticvoidmain(String[]args){

intsum=0;

for(inti=1;i<=10;i++)sum=sum+i;

System.out.println("Thesumis:"+sum);

}}

7.1.2語言的選擇為什么要選擇編碼語言

“程序設(shè)計(jì)語言不是引起軟件問題的原因,也不是用它來解決軟件問題,但是由于語言在一切軟件活動(dòng)中所處的中心位置,它們能使現(xiàn)存的問題變得較易解決或更加嚴(yán)重”。這段話揭示了語言在軟件開發(fā)中的作用,提醒我們重視在編碼前選好適當(dāng)?shù)恼Z言。

7.1.2語言的選擇當(dāng)衡量某一語言是否可選作編碼語言時(shí),通常要考慮的因素有:1.項(xiàng)目的應(yīng)用領(lǐng)域2.算法和計(jì)算復(fù)雜性3.軟件的開發(fā)環(huán)境4.性能因素5.軟件開發(fā)人員的水平1.項(xiàng)目的應(yīng)用領(lǐng)域——關(guān)鍵因素各種語言都有自己的適用領(lǐng)域2.算法和計(jì)算復(fù)雜性

FORTRAN及現(xiàn)代語言都支持較復(fù)雜計(jì)算和算法。要根據(jù)各個(gè)語言的特點(diǎn),選取能夠適應(yīng)軟件項(xiàng)目算法和計(jì)算復(fù)雜性的語言。3.軟件的開發(fā)環(huán)境良好的編程環(huán)境不但有效提高軟件生產(chǎn)率,同時(shí)能減少錯(cuò)誤,有效提高軟件質(zhì)量??梢暬能浖砷_發(fā)環(huán)境,提供了強(qiáng)有力的調(diào)試工具,可以快速生成高質(zhì)量的軟件,降低軟件開發(fā)和維護(hù)的成本。軟件可移植性要求。如果目標(biāo)系統(tǒng)將在幾臺(tái)不同的計(jì)算機(jī)上運(yùn)行,那么應(yīng)選用可移植性好的語言。4.性能因素有些實(shí)時(shí)應(yīng)用要求具有快速的響應(yīng)速度,此時(shí)可選用匯編語言或Ada語言。有時(shí)為提高效率,一部分程序用匯編語言書寫,其余大部分仍用高級(jí)語言來書寫。5.軟件開發(fā)人員的水平新的更強(qiáng)有力的語言,雖然對(duì)于應(yīng)用有很強(qiáng)的吸引力,但是因?yàn)橐延械恼Z言已經(jīng)積累了大量的久經(jīng)使用的程序,具有完整的資料、支撐軟件和軟件開發(fā)工具,程序設(shè)計(jì)人員比較熟悉,而且有過類似項(xiàng)目的開發(fā)經(jīng)驗(yàn)和成功的先例。由于心理因素,人們往往寧愿選用原有的語種,所以應(yīng)徹底地分析、評(píng)價(jià),介紹新的語言,以便從原有語言過渡到新的語言。如果條件允許,應(yīng)盡量選用程序員所熟悉的語言。7.2SP方法與編程結(jié)構(gòu)化程序的三個(gè)要點(diǎn):自頂向下和逐步細(xì)化順序、選擇、循環(huán)等基本結(jié)構(gòu)對(duì)三種基本結(jié)構(gòu)可以組合嵌套結(jié)構(gòu)化程序的特點(diǎn)單入口,單出口不用GOTO語句層次分明,易于理解;易于驗(yàn)證、易于測試、易于維護(hù)結(jié)構(gòu)化程序設(shè)計(jì)的主要原則使用語言中的順序、選擇、循環(huán)等有限的基本控制結(jié)構(gòu)表示程序邏輯。選用的控制結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口。程序語句組成容易識(shí)別的塊,每塊只有一個(gè)入口和一個(gè)出口。復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進(jìn)行組合嵌套來實(shí)現(xiàn)。例1打印A,B,C三數(shù)中最小者的程序if(A

<B)and(A<C)thenwrite(A)

elseif(A

B)and(B

<C)then

write(B)

else

write(C)

endifendif7.3程序內(nèi)部文檔程序內(nèi)部帶有的說明性材料就是程序的內(nèi)部文檔,它是直接寫在代碼中的描述性材料。內(nèi)部文檔可用注釋語句書寫。夾在程序中的注釋是程序員與日后的程序讀者之間通信的重要手段。注釋是不可執(zhí)行的。一些正規(guī)的程序文本中,注釋行的數(shù)量占到整個(gè)源程序的1/3到1/2,甚至更多。注釋分為序言性注釋和描述性注釋。序言性注釋序言性注釋通常放在每個(gè)程序模塊的開頭部分,它應(yīng)當(dāng)給出程序模塊的整體說明,對(duì)于理解程序模塊具有引導(dǎo)作用。描述:

①程序標(biāo)題:有關(guān)該模塊的功能和目的說明;②接口說明:包括調(diào)用形式,參數(shù)描述,子程序清單;③有關(guān)數(shù)據(jù)描述(重要的變量及其用途,約束或限制條件,以及其他有關(guān)信息);④模塊位置(在哪一個(gè)源文件中,或隸屬于哪一個(gè)軟件包);⑤開發(fā)簡歷:模塊設(shè)計(jì)者,復(fù)審者,復(fù)審日期,修改日期及有關(guān)說明等。描述性注釋描述性注釋嵌在源程序體中,用以描述其后的語句或程序段是在做什么工作,或是執(zhí)行了下面的語句會(huì)怎么樣。描述:

①用于描述一段程序,而不是每一個(gè)語句;②用縮進(jìn)或空行或其它顏色,使程序與注釋容易區(qū)別;③注釋要正確。7.4程序設(shè)計(jì)風(fēng)格程序設(shè)計(jì)風(fēng)格是指書寫源程序的習(xí)慣、程序代碼的邏輯結(jié)構(gòu)與習(xí)慣的編程技術(shù)。程序設(shè)計(jì)風(fēng)格在很大程度上影響著程序的可讀性、可測試性和可維護(hù)性。7.4.1編碼原則要寫清楚使用括號(hào)以避免二義性使用縮排格式顯示程序的邏輯結(jié)構(gòu)采用3種基本控制結(jié)構(gòu)模塊化,使用子程序使用有意義的變量名所有的變量在使用前應(yīng)初始化7.4.2編碼風(fēng)格1、符號(hào)名的選擇符號(hào)名即標(biāo)識(shí)符,包括模塊名、變量名、常量名、標(biāo)號(hào)名、子程序名、數(shù)據(jù)區(qū)名以及緩沖區(qū)名等。這些名字應(yīng)能反映它所代表的實(shí)際東西,應(yīng)有一定實(shí)際意義。顯示聲明一切變量。通常在一個(gè)程序中,一個(gè)變量只應(yīng)用于一種用途,即一個(gè)變量不能身兼幾種含義。名字不是越長越好,應(yīng)當(dāng)選擇精煉的意義明確的名字。必要時(shí)可使用縮寫名字,但這時(shí)要注意縮寫規(guī)則要一致,并且要給每一個(gè)名字加注釋。2、程序的視覺組織恰當(dāng)?shù)乩每崭?,可以突出運(yùn)算的優(yōu)先性,避免發(fā)生運(yùn)算的錯(cuò)誤。例如,將表達(dá)式

(A<-17)ANDNOT(B<=49)ORC

寫成

(A<-17)ANDNOT(B<=49)ORC自然的程序段之間可用空行隔開;2、程序的視覺組織移行也叫做向右縮格。它是指程序中的各行不必都在左端對(duì)齊,都從第一格起排列。對(duì)于選擇語句和循環(huán)語句,把其中的程序段語句向右做階梯式移行。使程序的邏輯結(jié)構(gòu)更加清晰。階梯式移行示例IF(…)THENIF(…)THEN

……

ELSE

……

ENDIF

……ELSE

…ENDIF3、表達(dá)式的書寫(1)盡量少用中間變量(2)注意添加括號(hào)澄清計(jì)算意圖(3)注意浮點(diǎn)運(yùn)算的誤差(4)注意整數(shù)運(yùn)算的特點(diǎn)4、數(shù)據(jù)說明

數(shù)據(jù)說明的次序應(yīng)當(dāng)規(guī)范化。例如:常量說明→簡單變量類型說明→數(shù)組說明→公共數(shù)據(jù)塊說明→所有的文件說明。例如:整型量說明→實(shí)型量說明→字符量說明→邏輯量說明。當(dāng)多個(gè)變量名用一個(gè)語句說明時(shí),應(yīng)當(dāng)對(duì)這些變量按字母的順序排列。如果設(shè)計(jì)了一個(gè)復(fù)雜數(shù)據(jù)結(jié)構(gòu),應(yīng)使用注釋說明在程序?qū)崿F(xiàn)時(shí)這個(gè)數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)。5、語句構(gòu)造在設(shè)計(jì)階段確定了軟件的邏輯結(jié)構(gòu),但構(gòu)造單個(gè)語句則是編碼階段的任務(wù)。語句構(gòu)造力求簡單,直接,不能為了片面追求效率而使語句復(fù)雜化。語句構(gòu)造的規(guī)則①在一行內(nèi)只寫一條語句,并且采取適當(dāng)?shù)囊菩懈袷?,使程序的邏輯和功能變得更加明確。FORI:=1TON-1DOBEGINT:=I;FORJ:=I+1TONDOIFA[J]<A[T]THENT:=J;IFT≠ITHENBEGINWORK:=A[T];A[T]:=A[I];A[I]:=WORK;ENDEND;數(shù)組的排序示例FORI:=1TON-1DO//改進(jìn)布局

BEGIN

T:=I;

FORJ:=I+1TONDO

IFA[J]<A[T]THENT:=J;

IFT≠ITHEN

BEGIN

WORK:=A[T];

A[T]:=A[I];

A[I]:=WORK;

END

END;語句構(gòu)造的規(guī)則②盡量避免復(fù)雜的條件測試。③避免大量使用循環(huán)嵌套和條件嵌套。④利用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序清晰直觀。6、輸入/輸出輸入和輸出信息是與用戶的使用直接相關(guān)的。輸入和輸出的方式和格式應(yīng)當(dāng)盡可能方便用戶的使用。一定要避免因設(shè)計(jì)不當(dāng)給用戶帶來的麻煩。因此,在軟件需求分析階段和設(shè)計(jì)階段,就應(yīng)基本確定輸入和輸出的風(fēng)格。系統(tǒng)能否被用戶接受,有時(shí)就取決于輸入和輸出的風(fēng)格。輸入/輸出風(fēng)格還受到許多其他因素的影響,如輸入/輸出設(shè)備、用戶的熟練程度

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論