第五章詳細設(shè)計講解學習_第1頁
第五章詳細設(shè)計講解學習_第2頁
第五章詳細設(shè)計講解學習_第3頁
第五章詳細設(shè)計講解學習_第4頁
第五章詳細設(shè)計講解學習_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章、詳細設(shè)計結(jié)構(gòu)化程序設(shè)計詳細設(shè)計的工具

Jackson程序設(shè)計方法詳細設(shè)計階段:根本目標是確定應(yīng)該怎樣具體地實現(xiàn)所要求的系統(tǒng)。詳細設(shè)計的任務(wù)不是編寫程序,而是要設(shè)計出程序的“藍圖”,便于以后根據(jù)這個藍圖寫出實際的程序代碼。結(jié)構(gòu)程序設(shè)計結(jié)構(gòu)化程序設(shè)計主要包括兩方面:(1)在設(shè)計程序時,強調(diào)使用幾種基本控制結(jié)構(gòu),通過組合嵌套,形成程序的控制結(jié)構(gòu)。盡可能避免使用GOTO語句。(2)在程序設(shè)計過程中,盡量采用自頂向下和逐步細化的原則,由粗到細,一步步展開。結(jié)構(gòu)化程序設(shè)計的主要原則

使用語言中的順序、選擇、重復(fù)等有限的基本控制結(jié)構(gòu)表示程序邏輯。

選用的控制結(jié)構(gòu)只準許有一個入口和一個出口。

程序語句組成容易識別的塊,每塊只有一個入口和一個出口。

復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn)。結(jié)構(gòu)化程序設(shè)計的主要原則例打印A,B,C三數(shù)中最小者的程序程序1

if(A<

B)

gotob12;

if(

B<

C)gotob11;b10:printf(“%d”,C);

gotob14;b11:printf(“%d”,B);

gotob14;b12:if(A

<

C)gotob13;

gotob10;b13:printf(“%d”,A);b14:…

程序2

if(A

<B

and

A<C)

printf(“%d”,A);

else{ if(A

B

and

B

<C)

printf(“%d”,

B);

else

printf(“%d”,

C);}自頂向下,逐步求精

在詳細設(shè)計和編碼階段,應(yīng)當采取自頂向下,逐步求精的方法。

把一個模塊的功能逐步分解,細化為一系列具體的步驟,進而翻譯成一系列用某種程序設(shè)計語言寫成的程序。自頂向下,逐步求精例,用篩選法求100以內(nèi)的素數(shù)

篩選法就是從2到100中去掉2,3,…,9,10的倍數(shù),剩下的就是100以內(nèi)的素數(shù)。

為了解決這個問題,可先按程序功能寫出一個框架。main

(){//程序框架

建立2到100的數(shù)組A[],其中A[i]=i;

-----------------------------------1

建立2到10的素數(shù)表B[],其中存放2到10以內(nèi)的素數(shù);-----------2

若A[i]=i是B[]中任一數(shù)的倍數(shù),則剔除A[i];---------------------3

輸出A[]中所有沒有被剔除的數(shù);

-----------------------------------4}

main(){

/*建立2到100的數(shù)組A[],其中A[i]=i*/

for(i=2;i<=100;i++)A[i]=i;

/*建立2到10的素數(shù)表B[],其中存放2到10以內(nèi)的素數(shù)*/

B[1]=2;B[2]=3;B[3]=5;B[4]=7;

/*若A[i]=i是B[]中任一數(shù)的倍數(shù),則剔除A[i]*/

for(j=1;j<=4;j++)

檢查A[]所有的數(shù)能否被B[j]整除并將能被整除的數(shù)從A[]中剔除;-----3.1

/*輸出A[]中所有沒有被剔除的數(shù)*/

for(i=2;i<=100;i++)

若A[i]沒有被剔除,則輸出之

---4.1}對框架中的局部再做細化,得到整個程序。main(){

/*建立2到100的數(shù)組A[],其中A[i]=i*/

for(i=2;i<=100;i++)A[i]=i;

/*建立2到10的素數(shù)表B[],其中存放2到10以內(nèi)的素數(shù)*/

B[1]=2;B[2]=3;B[3]=5;B[4]=7;

/*若A[i]=i是B[]中任一數(shù)的倍數(shù),則剔除A[i]*/

for(j=1;j<=4;j++)

/*檢查A[]所有的數(shù)能否被B[j]整除并將能被整除的數(shù)從A[]中剔除*/for(i=2;i<=100;i++)

if(A[i]/B[j]*B[j]==A[i])

A[i]=0;

/*輸出A[]中所有沒有被剔除的數(shù)*/

for(i=2;i<=100;i++)

/*若A[i]沒有被剔除,則輸出之*/

if(A[i]!=0)

printf(

“A[%d]=%d\n”,i,A[i]);

}

符合人們解決復(fù)雜問題的普遍規(guī)律??商岣哕浖_發(fā)的成功率和生產(chǎn)率

用先全局后局部,先整體后細節(jié),先抽象后具體的逐步求精的過程開發(fā)出來的程序具有清晰的層次結(jié)構(gòu),程序容易閱讀和理解自頂向下,逐步求精方法的優(yōu)點:

程序自頂向下,逐步細化,分解成一個樹形結(jié)構(gòu)。在同一層的節(jié)點上的細化工作相互獨立。有利于編碼、測試和集成

程序清晰和模塊化,使得在修改和重新設(shè)計一個軟件時,可復(fù)用的代碼量最大

每一步工作僅在上層節(jié)點的基礎(chǔ)上做不多的設(shè)計擴展,便于檢查

有利于設(shè)計的分工和組織工作。自頂向下,逐步求精方法的優(yōu)點:

在詳細設(shè)計階段,要決定各個模塊的實現(xiàn)算法,并精確地表達這些算法。表達過程規(guī)格說明的工具叫做詳細設(shè)計工具,它可以分為以下三類:圖形工具表格工具語言工具詳細設(shè)計的工具

程序流程圖也稱為程序框圖,程序流程圖使用五種基本控制結(jié)構(gòu)是:程序流程圖示例程序流程圖的標準符號循環(huán)的標準符號注解的使用多出口判斷實例分析:在一個只能用2個字節(jié)表示整數(shù)的計算機上,求10000!是多少位數(shù)N-S圖:1973年,Nassi和Shneiderman發(fā)表了題為“結(jié)構(gòu)化程序的流程圖技術(shù)”的文章,提出用方框圖(blockdiagram)來代替?zhèn)鹘y(tǒng)的流程圖,引起了人們的重視,根據(jù)這兩位創(chuàng)始人的名字,許多人把它簡稱為N-S圖(N-Schart)。N-S的主要特色,就是只能描述結(jié)構(gòu)化程序所允許的標準結(jié)構(gòu),根本取消了表現(xiàn)諸如含有GOTO語句的非標準結(jié)構(gòu)的手段。N-S圖:優(yōu)點是:(1)所有的程序結(jié)構(gòu)均用方框來表示,無論并列或者嵌套,程序的結(jié)構(gòu)清晰可見。(2).不可能任意轉(zhuǎn)移控制。

(3).很容易確認局部和全局數(shù)據(jù)的作用域。

(4).很容易表示嵌套關(guān)系。

N-S圖也叫做盒圖。五種基本控制結(jié)構(gòu)由五種圖形構(gòu)件表示。N-S圖:示例N-S圖的嵌套定義形式實例分析:在一個只能用2個字節(jié)表示整數(shù)的計算機上,求10000!是多少位數(shù)問題分析圖(PAD)PAD圖是日本日立公司于1979年提出的一種算法描述工具,它是一種由左往右展開的二維樹型結(jié)構(gòu)。PAD圖的控制流程為自上而下,從左往右地執(zhí)行。優(yōu)點:(1)清晰地反映了程序的層次結(jié)構(gòu)。(2)支持逐步求精的設(shè)計方法,左邊層次中的內(nèi)容可以抽象,然后由左到右逐步細化。(3)易讀易寫,使用方便。(4)支持結(jié)構(gòu)化的程序設(shè)計原理。(5)可自動生成程序。問題分析圖(PAD)

PAD也設(shè)置了五種基本控制結(jié)構(gòu)的圖式,并允許遞歸使用。PAD描述的示例

對應(yīng)于增量型循環(huán)結(jié)構(gòu)

for

i:=n1

to

n2

step

n3

do

在PAD中有相應(yīng)的循環(huán)控制結(jié)構(gòu)PAD的擴充控制結(jié)構(gòu)

判定表用于表示程序的靜態(tài)邏輯

在判定表中的條件部分給出所有的兩分支判斷的列表,動作部分給出相應(yīng)的處理

要求將程序流程圖中的多分支判斷都改成兩分支判斷

能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系

判定表無多分支判斷結(jié)構(gòu)

列出與一個具體過程(或模塊)有關(guān)的所有處理。

列出過程執(zhí)行期間的所有條件(或所有判斷)。

將特定條件取值組合與特定的處理相匹配,消去不可能發(fā)生的條件取值組合。

將右部每一縱列規(guī)定為一個處理規(guī)則,即對于某一條件取值組合將有什么動作。

建立判定表的步驟:判定樹

判定樹是判定表的變種,也能清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系。

優(yōu)點在于,它的形式簡單到不需要任何說明,一眼說可以看出其含義

易于掌握和理解

判定樹實例分析:假設(shè)某航空公司規(guī)定,乘客可以免費托運重量不超過30公斤的行李。當行李重量超過30公斤時,對頭等倉的國內(nèi)乘客超重部分每公斤收費4元,對其他倉的國內(nèi)乘客超重部分每公斤收費6元,國外乘客加收1倍,殘疾乘客減半行李費算法行李重量W>30行李重量W<=30免費國內(nèi)乘客國外乘客頭等艙其他艙頭等艙其他艙殘疾乘客正常乘客(w-30)*2(w-30)*4殘疾乘客正常乘客(w-30)*3(w-30)*6殘疾乘客正常乘客(w-30)*4(w-30)*8殘疾乘客正常乘客(w-30)*6(w-30)*12PDL(ProgramDesignLanguage)也稱程序描述語言(ProgramDescriptionLanguage,PDL),又稱為偽碼(pseudocode)。屬于文字形式的表達工具。它并非真正的代碼,也不能在計算機上執(zhí)行,但形式上與代碼相似。它是一種用于描述模塊算法設(shè)計和處理細節(jié)的語言。PDL具有嚴格的關(guān)鍵字外層語法,用于定義控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和模塊接口,而它表示實際操作和條件的內(nèi)層語法又是靈活自由的,使用自然語言的詞匯。

PDL是一種用于描述功能模塊的算法設(shè)計和加工細節(jié)的語言。稱為設(shè)計程序用語言。它是一種偽碼。

偽碼的語法規(guī)則分為“外語法”和“內(nèi)語法”。

PDL具有嚴格的關(guān)鍵字外語法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),同時它的表示實際操作和條件的內(nèi)語法又是靈活自由的,可使用自然語言的詞匯。

PDL(ProgramDesignLanguage)PROCEDURE

spellcheck

IS

BEGIN

splitdocumentintosinglewords

loodupwordsindictionary

displaywordswhicharenotindictionary

createanewdictionary

END

spellcheck

示例:拼詞檢查程序

提供全部結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊特征。能對PDL正文進行結(jié)構(gòu)分割,使之變得易于理解。

為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律大寫,其它單詞一律小寫?;蛘咭?guī)定關(guān)鍵字加下劃線,或者規(guī)定它們?yōu)楹隗w字。PDL的特點:

內(nèi)語法使用自然語言來描述處理特性。內(nèi)語法比較靈活,只要寫清楚就可以,不必考慮語法錯,以利于人們可把主要精力放在描述算法的邏輯上。

有數(shù)據(jù)說明機制,包括簡單的(如標量和數(shù)組)與復(fù)雜的(如鏈表和層次結(jié)構(gòu))的數(shù)據(jù)結(jié)構(gòu)。

有子程序定義與調(diào)用機制,用以表達各種方式的接口說明。PDL的特點:PROCEDUREspellcheckBEGIN

--*splitdocumentintosinglewords

LOOP

getnextword

addwordtowordlistinsortorder

EXITWHEN

allwordsprocessed

ENDLOOP

--*lookupwordsindictionary

LOOP

getwordfromwordlist

使用PDL語言,逐步求精:

IF

wordnotindictionary

THEN

--*displaywordsnotindictionary

displayword

promptonuserterminal

IF

userresponsesayswordOK

THEN

addwordtogoodwordlist

ELSE

addwordtobadwordlist

ENDIF

ENDIF

EXITWHEN

allwordsprocessed

ENDLOOP

使用PDL語言,逐步求精:--*createanewwordsdictionary

dictionary:=

mergedictionaryandgoodwordlistEND

spellcheck使用PDL語言,逐步求精:模塊開發(fā)文件夾是組織和保存在軟件開發(fā)過程中不斷產(chǎn)生出來的文檔資料的一種有效方法,用這種方法保存和管理文檔既方便又容易查閱。文件夾名(1)文件夾說明(工程項目名稱、模塊名稱、程序人員、完成日期、源程序、模塊的描述、設(shè)計、編碼、測試文檔名)(2).文檔:模塊詳細設(shè)計、程序清單、測試方案、測試分析報告

概要設(shè)計中面向數(shù)據(jù)流的設(shè)計方法與之對應(yīng)的詳細設(shè)計還可以采用面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法

Jackson方法的主要工具-Jackson圖

Jackson圖表示數(shù)據(jù)結(jié)構(gòu)的三種邏輯關(guān)系(順序,選擇,循環(huán))。Jackson程序設(shè)計方法ABCDAB。.C。AB*順序,選擇,循環(huán)D。順序選擇循環(huán)改進的JACKSON順序,選擇,循環(huán)ABCDAB。.C。D。順序結(jié)構(gòu)選擇結(jié)構(gòu)S(i)AB。._。AB*循環(huán)I(i)

無論數(shù)據(jù)結(jié)構(gòu)還是程序結(jié)構(gòu),都限于三種基本結(jié)構(gòu)及它們的組合,因此他給出了三種基本結(jié)構(gòu)的表示。這三種基本結(jié)構(gòu)不僅可以表示數(shù)據(jù)結(jié)構(gòu),還可以表示程序結(jié)構(gòu)。

便于表示層次結(jié)構(gòu),而且是對結(jié)構(gòu)進行自頂向下分解的有力工具

形象直觀JACKSON的優(yōu)點:Jackson方法一般通過以下五個步驟來完成設(shè)計:

分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson結(jié)構(gòu)圖表示這些數(shù)據(jù)結(jié)構(gòu)。

找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。“對應(yīng)關(guān)系”指這些數(shù)據(jù)單元在數(shù)據(jù)內(nèi)容上、數(shù)量上和順序上有直接的因果關(guān)系,對于重復(fù)的數(shù)據(jù)單元,重復(fù)的次序和次數(shù)都相同才有對應(yīng)關(guān)系。

按一定的規(guī)則由輸入、輸出的數(shù)據(jù)結(jié)構(gòu)導出程序結(jié)構(gòu)。

列出基本操作與條件,并把它們分配到程序結(jié)構(gòu)圖的適當位置。

用偽代碼寫出程序。改進的JACKSON順序,選擇,循環(huán)及偽碼ABCD順序結(jié)構(gòu)AseqBCDAendKeywordsAB。.C。D。選擇結(jié)構(gòu)Aselectcond1BAorcond2CAorcond3DAendSelectorandend為keywords,cond1、cond2、cond3為條件AB*循環(huán)I(i)Aiteruntil(或while)condBAendIteruntilwhileend是關(guān)鍵詞Cond為條件實例分析一個正文文件有若干記錄組成。每個記錄是一個字符串。要求統(tǒng)計每個記錄中的空格個數(shù),以及文件中空格字符的總數(shù)。要求的輸入數(shù)據(jù)的格式是:每復(fù)制一行字符串之后,另起一行打印出這個串中的空格數(shù),最后打印出字符的總數(shù)。正文文件字符串*字符*空格。非空格。輸出表格表格體空格總數(shù)串信息*字符串空格數(shù)IISI輸入數(shù)據(jù)結(jié)構(gòu)輸出數(shù)據(jù)結(jié)構(gòu)步驟1+2統(tǒng)計空格程序體印總數(shù)處理字符串*印字符串分析字符串印空格數(shù)分析字符*處理空格*處理非空格*IIS步驟3步驟4(1).停止(2).打開文件(3).關(guān)閉文件(4)印字符串(5).印出空格數(shù)目(6)印空格總數(shù)(7).Sum:=Sum+1(8).Totalsum:=Totalsum+Sum(9)讀入字符串(10).Sum:=0(11).Totalsum:=0(12).Pointer:=1(13).Pointer:=Pointer+1I(1)文件結(jié)束I(2)字符串結(jié)束S(3)字符是空格程序復(fù)雜性度量程序復(fù)雜性主要指模塊內(nèi)程序的復(fù)雜性。它直接關(guān)聯(lián)到軟件開發(fā)費用的多少,開發(fā)周期的長短和軟件內(nèi)部潛伏錯誤的多少。減少程序復(fù)雜性,可提高軟件的簡單性和可理解性,并使軟件開發(fā)費用減少,開發(fā)周期縮短,軟件內(nèi)部潛藏錯誤減少。復(fù)雜性度量需要滿足的假設(shè)為了度量程序復(fù)雜性,要求:它可以用來計算任何一個程序的復(fù)雜性;對于不合理的程序,例如對于長度動態(tài)增長的程序,或者對于原則上無法排錯的程序,不應(yīng)當使用它進行復(fù)雜性計算;如果程序中指令條數(shù)、附加存儲量、計算時間增多,不會減少程序的復(fù)雜性。

三種程序復(fù)雜度度量方法代碼行度量法McCabe度量法Halstead的軟件科學代碼行度量法源代碼行數(shù)度量法基于兩個前提:

程序復(fù)雜性隨著程序規(guī)模的增加不均衡地增長;控制程序規(guī)模的方法最好是采用分而治之的辦法。將一個大程序分解成若干個簡單的可理解的程序段。方法的基本考慮是統(tǒng)計一個程序模塊的源代碼行數(shù)目,并以源代碼行數(shù)做為程序復(fù)雜性的度量。設(shè)每行代碼的出錯率為每100行源程序中可能有的錯誤數(shù)目。Thayer曾指出,程序出錯率的估算范圍是從0.04%~7%之間,即每100行源程序中可能存在0.04~7個錯誤。他還指出,每行代碼的出錯率與源程序行數(shù)之間不存在簡單的線性關(guān)系。

Lipow指出,對于小程序,每行代碼出錯率為1.3%~1.8%;對于大程序,每行代碼的出錯率增加到2.7%~3.2%之間,這只是考慮了程序的可執(zhí)行部分,沒有包括程序中的說明部分。Lipow及其他研究者得出一個結(jié)論:對于少于100個語句的小程序,源代碼行數(shù)與出錯率是線性相關(guān)的。隨著程序的增大,出錯率以非線性方式增長。

McCabe度量法McCabe度量法,又稱環(huán)路復(fù)雜性度量,是一種基于程序控制流的復(fù)雜性度量方法。它基于一個程序模塊的程序圖中環(huán)路的個數(shù),因此計算它先要畫出程序圖。程序圖是退化的程序流程圖。流程圖中每個處理都退化成一個結(jié)點,流線變成連接不同結(jié)點的有向弧。程序圖僅描述程序內(nèi)部的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作,以及分支和循環(huán)的具體條件。計算環(huán)路復(fù)雜性的方法:根據(jù)圖論,在一個強連通的有向圖G中,環(huán)的個數(shù)由以下公式給出:

V(G)=m-n+p

其中,V(G)是有向圖G中環(huán)路個數(shù),m是圖G中弧數(shù),n是圖G中結(jié)點數(shù),p是圖G中的強連通分量個數(shù)。為使圖成為強連通圖,從圖的入口點到出口點加一條用虛線表示的有向邊,使圖成為強連通圖。這樣就可以使用上式計算環(huán)路復(fù)雜性。在例示中,結(jié)點數(shù)n=11,弧數(shù)m=13,p=1,則有

V(G)=m-n+p=13-11+1=3.等于程序圖中弧所封閉的區(qū)域數(shù)。

幾點說明環(huán)路復(fù)雜度取決于程序控制結(jié)構(gòu)的復(fù)雜度。當程序的分支數(shù)目或循環(huán)數(shù)目增加時其復(fù)雜度也增加。環(huán)路復(fù)雜度與程序中覆蓋的路徑條數(shù)有關(guān)。環(huán)路復(fù)雜度是可加的。例如,模塊A的復(fù)雜度為3,模塊B的復(fù)雜度為4,則模塊A與模塊B的復(fù)雜度是7。

McCabe建議,對于復(fù)雜度超過10的程序,應(yīng)分成幾個小程序,以減少程序中的錯誤。Walsh用實例證實了這個建議的正確性。在McCabe復(fù)雜度為10的附近,存在出錯率的間斷躍變。McCabe環(huán)路復(fù)雜度隱含的前提是:錯誤與程序的判定加上例行子程序的調(diào)用數(shù)目成正比。加工復(fù)雜性、數(shù)據(jù)結(jié)構(gòu)、錄入與打亂輸入卡片的錯誤可以忽略不計。這種度量的缺點是:對于不同種類的控制流的復(fù)雜性不能區(qū)分

簡單IF語句與循環(huán)語句的復(fù)雜性同等看待

嵌套IF語句與簡單CASE語句的復(fù)雜性是一樣的

模塊間接口當成一個簡單分支一樣處理一個具有1000行的順序程序與一行語句的復(fù)雜性相同

Halstead的軟件科學Halstead軟件科學研究確定計算機軟件開發(fā)中的一些定量規(guī)律,它采用以下一組基本的度量值。這些度量值通常在程序產(chǎn)生之后得出,或者在設(shè)計完成之后估算出。程序長度(預(yù)測的Halstead長度)

令n1表示程序中不同運算符(包括保留字)的個數(shù),令n2表示程序中不同運算對象的個數(shù),令H表示“程序長度”,則有

H=n1

log2n1+n2

log2n2這里,H是程序長度的預(yù)測值,它不等于程序中語句個數(shù)。

在定義中,運算符包括:算術(shù)運算符賦值符(=或:=)邏輯運算符分界符(,或;或:)關(guān)系運算符括號運算符子程序調(diào)用符數(shù)組操作符循環(huán)操作符等。特別地,成對的運算符,例如

“BEGIN…END”、“FOR…TO”、“REPEAT…UNTIL”、“WHILE…DO”、“IF…THEN…ELSE”、“(…)”等都當做單一運算符。

運算對象包括變量名和常數(shù)。實際的Halstead長度

設(shè)N1為程序中實際出現(xiàn)的運算符總個數(shù),N2為程序中實際出現(xiàn)的運算對象總個數(shù),N為實際的Halstead長度,則有

N=

N1+

N2

程序的詞匯表

Halstead定義程序的詞匯表為不同的運算符種類數(shù)n1和不同的運算對象種類數(shù)n2的總和。若令n為程序的詞匯表,則有

n=

n1+n2

例如,用FORTRAN語言寫出的交換排序的例子

SUBROUTINESORT(X,N)

DIMENSIONX(N)

IF(N.LT.2)RETURN

DO20I=2,N

DO10J=1,I

IF(X(I).GE.X(J))GOTO10

SAVE=X(I)

X(I)=X(J)

X(J)=SAVE

10CONTINE

20CONTINE

RETURN

END

程序量程序量

V可用下式得到

V

=

N

log2n

它表明了程序在詞匯上的復(fù)雜性。其最小值為

V*=(2+n2*)

log2(2+n2*)V

這里,2表明程序中至少有兩個運算符:賦值符=和函數(shù)調(diào)用符

f(),n2*表示輸入/輸出變量個數(shù)。

對于上面的例子,利用n1,N1,n2,N2,可以計算得

H=10

log210+7

log27=52.87N=28+22=50

V=(28+22)

log2(10+7)=204等效的匯編語言程序的V=328。這說明匯編語言比FO

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論