版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
詳細(xì)設(shè)計(jì)5.1
詳細(xì)設(shè)計(jì)階段概述5.2
詳細(xì)設(shè)計(jì)階段的描述工具第5章詳細(xì)設(shè)計(jì)5.1詳細(xì)設(shè)計(jì)階段概述第5章15.1詳細(xì)設(shè)計(jì)階段概述詳細(xì)設(shè)計(jì)的目的:為軟件結(jié)構(gòu)圖(SC)中的每一個(gè)模塊確定采用的算法和模塊內(nèi)數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具給出清晰的描述。詳細(xì)設(shè)計(jì)階段的主要任務(wù):編寫軟件的“詳細(xì)設(shè)計(jì)說(shuō)明書”5.1詳細(xì)設(shè)計(jì)階段概述詳細(xì)設(shè)計(jì)的目的:為軟件結(jié)2需求分析問(wèn)題定義可性行研究計(jì)劃時(shí)期概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼測(cè)試開發(fā)時(shí)期運(yùn)行與維護(hù)運(yùn)行時(shí)期需求分析問(wèn)題定義可性行研究計(jì)劃概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼測(cè)3詳細(xì)設(shè)計(jì)階段的主要任務(wù)為每一模塊確定算法確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu)確定模塊的外部接口和用戶界面為每一模塊設(shè)計(jì)一組測(cè)試用例詳細(xì)設(shè)計(jì)階段的主要任務(wù)為每一模塊確定算法確定每一模塊使用的數(shù)4描述工具程序流程圖N-S圖PAD圖PDL偽代碼5.2詳細(xì)設(shè)計(jì)階段的描述工具描述工具程序流程圖N-S圖PAD圖PDL偽代碼5.25A1、順序型一、程序流程圖B幾個(gè)連續(xù)的加工依次序排列expFTAB2、選擇型由某個(gè)判斷式的取值決定選擇兩個(gè)加工中的一個(gè)。A1、順序型一、程序流程圖B幾個(gè)連續(xù)的加工依次序排列exp63、當(dāng)型循環(huán)型當(dāng)循環(huán)控制條件成立時(shí),重復(fù)執(zhí)行特定的加工。expFTS4、直到型循環(huán)型重復(fù)執(zhí)行特定的加工,直到循環(huán)控制條件成立時(shí)。expFTS3、當(dāng)型循環(huán)型當(dāng)循環(huán)控制條件成立時(shí),重復(fù)執(zhí)行特定的加75、多情況選擇型列出多種加工情況,根據(jù)控制變量的取值,選擇執(zhí)行其一。exp=1FTS1exp=2exp=nS2TSnTFF5、多情況選擇型列出多種加工exp=1FTS1exp8-----具有嵌套形式的程序流程圖X1FTaX4cTfTFF入口bX2X3deghiX5X6FTFT=1=2=3-----具有嵌套形式的程序流程圖X1FTaX4cTfTF9標(biāo)準(zhǔn)化程序流程圖規(guī)定符號(hào)X1
起止端點(diǎn)輸入/輸出一般處理準(zhǔn)備或預(yù)處理預(yù)定義處理?xiàng)l件判斷循環(huán)上界循環(huán)下界文件或文檔外接內(nèi)接流程線虛線省略線并行方式注解或注釋標(biāo)準(zhǔn)化程序流程圖規(guī)定符號(hào)X1起止端點(diǎn)輸入/輸出一般10流程符號(hào)的使用規(guī)則1、循環(huán)符號(hào)的使用循環(huán)名進(jìn)入循環(huán)條件循環(huán)體循環(huán)名
i=1,100S=S+i
i
S=0S=S+iS=0,i=1i>100i=i+1
F
T循環(huán)體-----循環(huán)流程符號(hào)的使用流程符號(hào)的使用規(guī)則1、循環(huán)符號(hào)的使用循環(huán)名循環(huán)體循環(huán)112、判斷有一個(gè)入口,但也允許有多個(gè)可選出口A:B
A=B
A<BA>BX=?x=1x=2x=3x=4X=?=1=2=3=4=5-----多出口判斷流程符號(hào)的使用2、判斷有一個(gè)入口,但也允許有多個(gè)可選出口A:BA=B12請(qǐng)利用程序流程圖描述下列問(wèn)題的程序結(jié)構(gòu)練習(xí)某汽車修配廠,有一個(gè)存有汽車零件的倉(cāng)庫(kù),其中存有若干種零件,請(qǐng)編寫一個(gè)查詢程序,用于查詢?cè)搸?kù)中某零件的庫(kù)存量為多少。設(shè)該模塊為查詢模塊。請(qǐng)?jiān)O(shè)計(jì)該模塊的程序結(jié)構(gòu)。具體要求:1、應(yīng)具有重復(fù)查詢功能;2、應(yīng)具有數(shù)據(jù)檢測(cè)功能;3、請(qǐng)利用程序流程圖描述該模塊的算法。請(qǐng)利用程序流程圖描述下列問(wèn)題的程序結(jié)構(gòu)練習(xí)某汽車13順序型二、N-S圖AB選擇型-------NassiandShneideman
BpFTA
ApFT
p=1=2…=nA1A2…Andowhile(p)Sdountil(p)S當(dāng)型循環(huán)型直到型循環(huán)型多分支選擇型順序型二、N-S圖AB選擇型-------Nass14零件號(hào)100011000210003100041000510006庫(kù)存量100012508866920203450建立零件庫(kù)(s數(shù)組),i=0輸入零件號(hào)xdowhile(x!=s[0][i])i++i++x==s[0][i])
Y
Ns[0][i]輸出s[1][i]
輸入錯(cuò)誤!
繼續(xù)查詢?
Y
N
跳出循環(huán)
零件號(hào)10001100021000310004100051015三、PAD圖直到型循環(huán)型ABAB
pA
pWhileP
SUntilP
S當(dāng)型循環(huán)型順序型選擇型A1
pA2An
=1
=2
=n多分支選擇型循環(huán)型-------ProblemAnalysisDiagram三、PAD圖直到型循環(huán)型ABABpApWhile16s[17]~s[22]=0whilenum(1-1000)
輸入age
age
=17
s[17]++
s[18]++
=18
s[19]++
=19
s[20]++
=20
s[21]++
=21
s[22]++
=22whilei(17-22)
輸出s[i]beginend舉例s[17]~s[22]=0while輸入ageage17練習(xí)請(qǐng)為學(xué)生成績(jī)管理系統(tǒng)中的學(xué)生成績(jī)統(tǒng)計(jì)模塊設(shè)計(jì)程序結(jié)構(gòu)。要求:1、統(tǒng)計(jì)各專業(yè)、各班級(jí)的高等數(shù)學(xué)平均分;2、并將統(tǒng)計(jì)結(jié)果輸出;3、按平均成績(jī)以班級(jí)為單位由高到低排序;4、請(qǐng)利用PAD圖描述該模塊的算法。練習(xí)請(qǐng)為學(xué)生成績(jī)管理系統(tǒng)中的學(xué)生成績(jī)統(tǒng)計(jì)模塊18四、PDL-------ProgramDdesignLanguagePDL是一種用于描述功能模塊的算法設(shè)計(jì)和加工細(xì)節(jié)的語(yǔ)言。稱為設(shè)計(jì)程序用語(yǔ)言。它是一種偽代碼(Pseudocode)
PDL-----關(guān)鍵詞+自然語(yǔ)言四、PDL-------ProgramDdesign19(1)、數(shù)據(jù)說(shuō)明:格式:TYPE<變量名>AS<限定詞1><限定詞2>其功能是定義數(shù)據(jù)的類型和作用域說(shuō)明:1.變量名:是一個(gè)模塊內(nèi)部使用的變量或模塊間共用的全局變量名。2.限定詞1:標(biāo)明數(shù)據(jù)類型3.限定詞2:標(biāo)明該變量的作用域TYPEnumberASSTRINGLENGTH(12)(1)、數(shù)據(jù)說(shuō)明:格式:TYPE<變量名>AS<限定20(2)、程序塊:PDL的過(guò)程成分是由塊結(jié)構(gòu)構(gòu)成的,而塊將作為一個(gè)單個(gè)的實(shí)體來(lái)執(zhí)行。BEGIN<塊名><一組偽代碼語(yǔ)句>END(2)、程序塊:PDL的過(guò)程成分是由塊結(jié)構(gòu)構(gòu)成的,而塊將作為21(3)、子程序結(jié)構(gòu):把PDL中的過(guò)程稱為子程序。PROCEDURE<子程序名><一組屬性>INTERFACE<參數(shù)表><程序塊或一組偽代碼語(yǔ)句>END(3)、子程序結(jié)構(gòu):把PDL中的過(guò)程稱為子程序。PRO22(4)、基本控制結(jié)構(gòu):IF<條件>THEN<程序塊/偽代碼語(yǔ)句組>;ELSE<程序塊/偽代碼語(yǔ)句組>;ENDIF---選擇型結(jié)構(gòu)
(4)、基本控制結(jié)構(gòu):IF<條件>---選擇型結(jié)構(gòu)23DOWHILE<條件描述><程序塊/偽代碼語(yǔ)句組>;ENDDOREPEATUNTIL<條件描述><程序塊/偽代碼語(yǔ)句組>;ENDREP---重復(fù)型結(jié)構(gòu)
DOWHILE<條件描述>REPEATUNTIL24DOLOOP<條件描述><程序塊/偽代碼語(yǔ)句組>;EXITWHENENDLOOPDOFOR<下標(biāo)=下標(biāo)表,表達(dá)式><程序塊/偽代碼語(yǔ)句組>;ENDFOR---重復(fù)型結(jié)構(gòu)
DOLOOP<條件描述>DOFOR<下標(biāo)=下標(biāo)表25-----多路選擇結(jié)構(gòu)
CASEOF<case變量名>;WHEN<case條件1>SELECT<程序塊/偽代碼語(yǔ)句組>;WHEN<case條件2>SELECT<程序塊/偽代碼語(yǔ)句組>;……DEFAULT:<缺省或錯(cuò)誤case:<程序塊/偽代碼語(yǔ)句組>;ENDCASE-----多路選擇結(jié)構(gòu)CASEOF<case變26READ/WRITETO<設(shè)備><I/O表>---輸入/輸出結(jié)構(gòu)
READ/WRITETO<設(shè)備><I/O表>27EnteravectorSetMaximumtothevalueofthefirstelementinthevectorDOforeachsecondonetothelastIFvalueofTHENelementisgreaterthantheMaximumvalueSetMaximumtovalueoftheelementENDDOPrinttheMaximumvalueInputarrayAMax=A(1)DOforI=2toNIFMax<A(I)SetMax=A(I)ENDIFENDDOPrintMaxEnteravectorInputarrayA28三、程序復(fù)雜性的度量程序復(fù)雜性主要是指模塊內(nèi)部程序的復(fù)雜性。它直接關(guān)系到軟件開發(fā)費(fèi)用的多少,開發(fā)周期的長(zhǎng)短和軟件和軟件內(nèi)部潛伏錯(cuò)誤的多少。同時(shí)它也是軟件可理解性的另一種度量。三、程序復(fù)雜性的度量程序復(fù)雜性主要是指模塊內(nèi)部程序29它可以用來(lái)計(jì)算任何一個(gè)程序的復(fù)雜性;對(duì)于不合理的程序,例如對(duì)于長(zhǎng)度動(dòng)態(tài)增長(zhǎng)的程序,或者對(duì)于原則上無(wú)法排錯(cuò)的程序,不應(yīng)當(dāng)使用它進(jìn)行復(fù)雜性計(jì)算;如果程序中指令條數(shù)、附加存儲(chǔ)量、計(jì)算時(shí)間增多,不會(huì)減少程序的復(fù)雜性。為了度量程序復(fù)雜性,要求復(fù)雜性度量應(yīng)滿足以下假設(shè):它可以用來(lái)計(jì)算任何一個(gè)程序的復(fù)雜性;對(duì)30如果設(shè)每行代碼的出錯(cuò)率為每100行源程序中可能的錯(cuò)誤數(shù)目。例如,每行代碼的出錯(cuò)率為1%,也就是說(shuō),每100行源程序中就可能有一個(gè)錯(cuò)誤。1、代碼行度量法:統(tǒng)計(jì)程序中的源代碼的行數(shù)較小的程序---1.3%~1.8%/行較大的程序---2.7%~3.2%/行如果設(shè)每行代碼的出錯(cuò)率為每100行源程序中可能的1、31該方法是利用程序模塊的程序圖中環(huán)路的個(gè)數(shù),來(lái)計(jì)算程序的復(fù)雜性的。為此,該方法也稱為環(huán)路復(fù)雜度計(jì)算法。2、McCabe度量法:利用程序的控制流來(lái)度量程序的復(fù)雜性它是一種退化了的程序流程圖。即:把程序流程圖中每個(gè)處理符號(hào)都退化成一個(gè)結(jié)點(diǎn),而原來(lái)流程圖中的流程線,則變成連接不同結(jié)點(diǎn)的有向弧。該方法是利用程序模塊的程序圖中環(huán)路的個(gè)數(shù),來(lái)2、Mc32(1)程序圖符號(hào)(1)程序圖符號(hào)33軟件工程學(xué)概述第5章詳細(xì)設(shè)計(jì)課件34TC1C2CABED(2)從流程圖導(dǎo)出程序圖A開始C1BCED結(jié)束C2TFTC1C2CABED(2)從流程圖導(dǎo)出程序圖A開始C1BC35(3)環(huán)路復(fù)雜性的計(jì)算方法V(G)=m-n+p說(shuō)明:V(G)是有向圖G中環(huán)路數(shù);m:為圖G中弧數(shù);n:為圖G中節(jié)點(diǎn)數(shù);p:為圖G中強(qiáng)連通分量個(gè)數(shù);
A
B
C
D
E
F
G
H
K
L
IV(G)=13-11+1=3McCabe的環(huán)路復(fù)雜性度量值為3(3)環(huán)路復(fù)雜性的計(jì)算方法V(G)=m-n+p說(shuō)明36習(xí)題1請(qǐng)將右側(cè)給出的程序流程圖轉(zhuǎn)換為程序圖并計(jì)算其環(huán)路值。a<=100FTb>=20b%3==1b+=3a++b-=5TFFTa=0,b=1習(xí)題1請(qǐng)將右側(cè)給出的a<=100FTb>=20b%3==137程序的環(huán)路復(fù)雜度則取決于程序控制流的復(fù)雜度,也就是取決于程序結(jié)構(gòu)的復(fù)雜程度。當(dāng)程序內(nèi)分支或循環(huán)個(gè)數(shù)增加時(shí),則相應(yīng)地環(huán)域復(fù)雜度也隨之增加。因此,它是對(duì)測(cè)試難度的一種定量度量,也能對(duì)軟件最終的可靠性給出某種預(yù)測(cè)。(4)、環(huán)路復(fù)雜度的用途V(G)<=10程序的環(huán)路復(fù)雜度則取決于程序控制流的復(fù)雜度,也就(38習(xí)題2請(qǐng)用程序流程圖描述下列問(wèn)題的算法,再將其轉(zhuǎn)換為程序圖并計(jì)算其環(huán)路值。請(qǐng)定義一個(gè)數(shù)組a,要求找出數(shù)組中最大數(shù)和最小數(shù),并把最大數(shù)和a[0]中的數(shù)對(duì)調(diào)、最小數(shù)和a[1]
中的數(shù)對(duì)調(diào)。習(xí)題2請(qǐng)用程序流程圖描述下列問(wèn)題的算法,再將其轉(zhuǎn)換為39習(xí)題3請(qǐng)畫出下列偽代碼程序的流程圖、程序圖并計(jì)算它的環(huán)路復(fù)雜度。
LOOP:DoWhileZ>0A=A+1IFA>10THENX=AELSEY=ZENDIFIFY<5THENPRINTX,YELSEIFY=2THENGOTOLOOPELSEC=3ENDIFENDIFG=H+RENDDOIFF>0THENPRINTGELSEPRINTKENDIFSTOP習(xí)題3請(qǐng)畫出下列偽代碼程序的流程圖、程L40設(shè)某模塊的功能是:讀入任意長(zhǎng)的一段英文課文,將其分解為單字。然后輸出一個(gè)單詞表,并指出每個(gè)單詞在課文中所出現(xiàn)的次數(shù)。習(xí)題4請(qǐng)按下列給出的文字要求,用PDL描述其該模塊的算法設(shè)某模塊的功能是:讀入任意長(zhǎng)的習(xí)題4請(qǐng)按下列給出的41……executeprocessaREPEATUNTILconditionX8executeprocessbIFconditionX1THENBEGINexecuteprocessfIFconditionX6THENREPEATUNTILconditionX7executeprocessiENDREPELSEBEGINexecuteprocessgexecuteprocesshENDENDIFEND習(xí)題5請(qǐng)將下列的PDL表示的某模塊的過(guò)程性描述,改為用:1、N-S圖2、PAD圖表示……習(xí)題5請(qǐng)將下列的PDL表示的某模塊的過(guò)程性42
ELSECASEOFXiWHENconditionX2SELECTDOWHILEconditionX5executeprocessCENDDOWHENconditionX3SELECTprocessdWHENconditionX4SELECTprocesseENDCASEENDIFENDREPexecuteprocessjEND
435-1假設(shè)只有SEQUENCE和DO-WHILE兩種控制結(jié)構(gòu),怎樣利用它們完成IF-THEN-ELSE操作?5-2假設(shè)只允許使用SEQUENCE和IF-THEN-ELSE兩種控制結(jié)構(gòu),怎樣利用它們完成DO-WHILE操作?5-3畫出下列偽碼程序的程序流程圖和盒圖: START IFpTHEN WHILEqDO f習(xí)題5-1假設(shè)只有SEQUENCE和DO-WHILE兩種控制結(jié)44 ENDDO ELSE BLOCK g n ENDBLOCK ENDIF STOP5-4圖6.18給出的程序流程圖代表一個(gè)非結(jié)構(gòu)化的程序,請(qǐng)問(wèn):(1)為什么說(shuō)它是非結(jié)構(gòu)化的?(2)設(shè)計(jì)一個(gè)等價(jià)的結(jié)構(gòu)化程序。 ENDDO45圖6.18一個(gè)非結(jié)構(gòu)化程序軟件工程學(xué)概述第5章詳細(xì)設(shè)計(jì)課件46(3)在(2)題的設(shè)計(jì)中你使用附加的標(biāo)志變量flag了嗎?若沒(méi)用,請(qǐng)?jiān)僭O(shè)計(jì)一個(gè)使用flag的程序;若用了,再設(shè)計(jì)一個(gè)不用flag的程序。5-5研究下面的偽碼程序(見(jiàn)書131頁(yè)):要求:(1)畫出程序流程圖。(2)程序是結(jié)構(gòu)化的嗎?說(shuō)明理由。(3)若程序是非結(jié)構(gòu)化的,請(qǐng)?jiān)O(shè)計(jì)一個(gè)等價(jià)的結(jié)構(gòu)化程序并且畫出程序流程圖。(4)此程序的功能是什么?它完成預(yù)定功能有什么隱含的前提條件嗎?(3)在(2)題的設(shè)計(jì)中你使用附加的標(biāo)志變量flag了嗎?475-6用Ashcroft_Manna技術(shù)可以將非結(jié)構(gòu)化的程序轉(zhuǎn)換為結(jié)構(gòu)化程序,圖6.19(見(jiàn)書132頁(yè))是一個(gè)轉(zhuǎn)換的例子。(1)你能否從這個(gè)例子總結(jié)出Ashcroft-Manna技術(shù)的一些基本方法?(2)進(jìn)一步簡(jiǎn)化圖6.19(b)給出的結(jié)構(gòu)化設(shè)計(jì)。5-7某交易所規(guī)定給經(jīng)紀(jì)人的手續(xù)費(fèi)計(jì)算方法如下:總手續(xù)費(fèi)等于基本手續(xù)費(fèi)加上與交易中的每股價(jià)格和股數(shù)有關(guān)的附加手續(xù)費(fèi)。如果交易總金額少于1000元,則基本手續(xù)費(fèi)為交易金額的8.4%;如果交易總金額在1000元到10000元之間,則基本手續(xù)費(fèi)為交易金額的5%,再加34元;5-6用Ashcroft_Manna技術(shù)可以將非結(jié)構(gòu)化的程48如果交易總金額超過(guò)10000元,則基本手續(xù)費(fèi)為交易金額的4%加上134元。當(dāng)每股售價(jià)低于14元時(shí),附加手續(xù)費(fèi)為基本手續(xù)費(fèi)的5%,除非買進(jìn)、賣出的股數(shù)不是100的倍數(shù),在這種情況下附加手續(xù)費(fèi)為基本手續(xù)費(fèi)的9%。當(dāng)每股售價(jià)在14元到25元之間時(shí),附加手續(xù)費(fèi)為基本手續(xù)費(fèi)的2%,除非交易的股數(shù)不是100的倍數(shù),在這種情況下附加手續(xù)費(fèi)為基本手續(xù)費(fèi)的6%。當(dāng)每股售價(jià)超過(guò)25元時(shí),如果交易的股數(shù)零散(即,不是100的倍數(shù)),則附加手續(xù)費(fèi)為基本手續(xù)費(fèi)的4%,否則附加手續(xù)費(fèi)為基本手續(xù)費(fèi)的1%。要求:如果交易總金額超過(guò)10000元,則基本手續(xù)費(fèi)為交易金額的4%49(1)用判定表表示手續(xù)費(fèi)的計(jì)算方法;(2)用判定樹表示手續(xù)費(fèi)的計(jì)算方法。5-8畫出下列偽碼程序(見(jiàn)書132頁(yè))的流圖,計(jì)算它的環(huán)形復(fù)雜度。你覺(jué)得這個(gè)程序的邏輯有什么問(wèn)題嗎?5-9把統(tǒng)計(jì)空格程序的Jackson圖(圖6.13)改畫為等價(jià)的程序流程圖和盒圖。5-10人機(jī)對(duì)話由操作員信息和系統(tǒng)信息交替組成。假設(shè)一段對(duì)話總是由操作員信息開始以系統(tǒng)信息結(jié)束,請(qǐng)用Jackson圖描繪這樣的人機(jī)對(duì)話過(guò)程。(1)用判定表表示手續(xù)費(fèi)的計(jì)算方法;50詳細(xì)設(shè)計(jì)5.1
詳細(xì)設(shè)計(jì)階段概述5.2
詳細(xì)設(shè)計(jì)階段的描述工具第5章詳細(xì)設(shè)計(jì)5.1詳細(xì)設(shè)計(jì)階段概述第5章515.1詳細(xì)設(shè)計(jì)階段概述詳細(xì)設(shè)計(jì)的目的:為軟件結(jié)構(gòu)圖(SC)中的每一個(gè)模塊確定采用的算法和模塊內(nèi)數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具給出清晰的描述。詳細(xì)設(shè)計(jì)階段的主要任務(wù):編寫軟件的“詳細(xì)設(shè)計(jì)說(shuō)明書”5.1詳細(xì)設(shè)計(jì)階段概述詳細(xì)設(shè)計(jì)的目的:為軟件結(jié)52需求分析問(wèn)題定義可性行研究計(jì)劃時(shí)期概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼測(cè)試開發(fā)時(shí)期運(yùn)行與維護(hù)運(yùn)行時(shí)期需求分析問(wèn)題定義可性行研究計(jì)劃概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼測(cè)53詳細(xì)設(shè)計(jì)階段的主要任務(wù)為每一模塊確定算法確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu)確定模塊的外部接口和用戶界面為每一模塊設(shè)計(jì)一組測(cè)試用例詳細(xì)設(shè)計(jì)階段的主要任務(wù)為每一模塊確定算法確定每一模塊使用的數(shù)54描述工具程序流程圖N-S圖PAD圖PDL偽代碼5.2詳細(xì)設(shè)計(jì)階段的描述工具描述工具程序流程圖N-S圖PAD圖PDL偽代碼5.255A1、順序型一、程序流程圖B幾個(gè)連續(xù)的加工依次序排列expFTAB2、選擇型由某個(gè)判斷式的取值決定選擇兩個(gè)加工中的一個(gè)。A1、順序型一、程序流程圖B幾個(gè)連續(xù)的加工依次序排列exp563、當(dāng)型循環(huán)型當(dāng)循環(huán)控制條件成立時(shí),重復(fù)執(zhí)行特定的加工。expFTS4、直到型循環(huán)型重復(fù)執(zhí)行特定的加工,直到循環(huán)控制條件成立時(shí)。expFTS3、當(dāng)型循環(huán)型當(dāng)循環(huán)控制條件成立時(shí),重復(fù)執(zhí)行特定的加575、多情況選擇型列出多種加工情況,根據(jù)控制變量的取值,選擇執(zhí)行其一。exp=1FTS1exp=2exp=nS2TSnTFF5、多情況選擇型列出多種加工exp=1FTS1exp58-----具有嵌套形式的程序流程圖X1FTaX4cTfTFF入口bX2X3deghiX5X6FTFT=1=2=3-----具有嵌套形式的程序流程圖X1FTaX4cTfTF59標(biāo)準(zhǔn)化程序流程圖規(guī)定符號(hào)X1
起止端點(diǎn)輸入/輸出一般處理準(zhǔn)備或預(yù)處理預(yù)定義處理?xiàng)l件判斷循環(huán)上界循環(huán)下界文件或文檔外接內(nèi)接流程線虛線省略線并行方式注解或注釋標(biāo)準(zhǔn)化程序流程圖規(guī)定符號(hào)X1起止端點(diǎn)輸入/輸出一般60流程符號(hào)的使用規(guī)則1、循環(huán)符號(hào)的使用循環(huán)名進(jìn)入循環(huán)條件循環(huán)體循環(huán)名
i=1,100S=S+i
i
S=0S=S+iS=0,i=1i>100i=i+1
F
T循環(huán)體-----循環(huán)流程符號(hào)的使用流程符號(hào)的使用規(guī)則1、循環(huán)符號(hào)的使用循環(huán)名循環(huán)體循環(huán)612、判斷有一個(gè)入口,但也允許有多個(gè)可選出口A:B
A=B
A<BA>BX=?x=1x=2x=3x=4X=?=1=2=3=4=5-----多出口判斷流程符號(hào)的使用2、判斷有一個(gè)入口,但也允許有多個(gè)可選出口A:BA=B62請(qǐng)利用程序流程圖描述下列問(wèn)題的程序結(jié)構(gòu)練習(xí)某汽車修配廠,有一個(gè)存有汽車零件的倉(cāng)庫(kù),其中存有若干種零件,請(qǐng)編寫一個(gè)查詢程序,用于查詢?cè)搸?kù)中某零件的庫(kù)存量為多少。設(shè)該模塊為查詢模塊。請(qǐng)?jiān)O(shè)計(jì)該模塊的程序結(jié)構(gòu)。具體要求:1、應(yīng)具有重復(fù)查詢功能;2、應(yīng)具有數(shù)據(jù)檢測(cè)功能;3、請(qǐng)利用程序流程圖描述該模塊的算法。請(qǐng)利用程序流程圖描述下列問(wèn)題的程序結(jié)構(gòu)練習(xí)某汽車63順序型二、N-S圖AB選擇型-------NassiandShneideman
BpFTA
ApFT
p=1=2…=nA1A2…Andowhile(p)Sdountil(p)S當(dāng)型循環(huán)型直到型循環(huán)型多分支選擇型順序型二、N-S圖AB選擇型-------Nass64零件號(hào)100011000210003100041000510006庫(kù)存量100012508866920203450建立零件庫(kù)(s數(shù)組),i=0輸入零件號(hào)xdowhile(x!=s[0][i])i++i++x==s[0][i])
Y
Ns[0][i]輸出s[1][i]
輸入錯(cuò)誤!
繼續(xù)查詢?
Y
N
跳出循環(huán)
零件號(hào)10001100021000310004100051065三、PAD圖直到型循環(huán)型ABAB
pA
pWhileP
SUntilP
S當(dāng)型循環(huán)型順序型選擇型A1
pA2An
=1
=2
=n多分支選擇型循環(huán)型-------ProblemAnalysisDiagram三、PAD圖直到型循環(huán)型ABABpApWhile66s[17]~s[22]=0whilenum(1-1000)
輸入age
age
=17
s[17]++
s[18]++
=18
s[19]++
=19
s[20]++
=20
s[21]++
=21
s[22]++
=22whilei(17-22)
輸出s[i]beginend舉例s[17]~s[22]=0while輸入ageage67練習(xí)請(qǐng)為學(xué)生成績(jī)管理系統(tǒng)中的學(xué)生成績(jī)統(tǒng)計(jì)模塊設(shè)計(jì)程序結(jié)構(gòu)。要求:1、統(tǒng)計(jì)各專業(yè)、各班級(jí)的高等數(shù)學(xué)平均分;2、并將統(tǒng)計(jì)結(jié)果輸出;3、按平均成績(jī)以班級(jí)為單位由高到低排序;4、請(qǐng)利用PAD圖描述該模塊的算法。練習(xí)請(qǐng)為學(xué)生成績(jī)管理系統(tǒng)中的學(xué)生成績(jī)統(tǒng)計(jì)模塊68四、PDL-------ProgramDdesignLanguagePDL是一種用于描述功能模塊的算法設(shè)計(jì)和加工細(xì)節(jié)的語(yǔ)言。稱為設(shè)計(jì)程序用語(yǔ)言。它是一種偽代碼(Pseudocode)
PDL-----關(guān)鍵詞+自然語(yǔ)言四、PDL-------ProgramDdesign69(1)、數(shù)據(jù)說(shuō)明:格式:TYPE<變量名>AS<限定詞1><限定詞2>其功能是定義數(shù)據(jù)的類型和作用域說(shuō)明:1.變量名:是一個(gè)模塊內(nèi)部使用的變量或模塊間共用的全局變量名。2.限定詞1:標(biāo)明數(shù)據(jù)類型3.限定詞2:標(biāo)明該變量的作用域TYPEnumberASSTRINGLENGTH(12)(1)、數(shù)據(jù)說(shuō)明:格式:TYPE<變量名>AS<限定70(2)、程序塊:PDL的過(guò)程成分是由塊結(jié)構(gòu)構(gòu)成的,而塊將作為一個(gè)單個(gè)的實(shí)體來(lái)執(zhí)行。BEGIN<塊名><一組偽代碼語(yǔ)句>END(2)、程序塊:PDL的過(guò)程成分是由塊結(jié)構(gòu)構(gòu)成的,而塊將作為71(3)、子程序結(jié)構(gòu):把PDL中的過(guò)程稱為子程序。PROCEDURE<子程序名><一組屬性>INTERFACE<參數(shù)表><程序塊或一組偽代碼語(yǔ)句>END(3)、子程序結(jié)構(gòu):把PDL中的過(guò)程稱為子程序。PRO72(4)、基本控制結(jié)構(gòu):IF<條件>THEN<程序塊/偽代碼語(yǔ)句組>;ELSE<程序塊/偽代碼語(yǔ)句組>;ENDIF---選擇型結(jié)構(gòu)
(4)、基本控制結(jié)構(gòu):IF<條件>---選擇型結(jié)構(gòu)73DOWHILE<條件描述><程序塊/偽代碼語(yǔ)句組>;ENDDOREPEATUNTIL<條件描述><程序塊/偽代碼語(yǔ)句組>;ENDREP---重復(fù)型結(jié)構(gòu)
DOWHILE<條件描述>REPEATUNTIL74DOLOOP<條件描述><程序塊/偽代碼語(yǔ)句組>;EXITWHENENDLOOPDOFOR<下標(biāo)=下標(biāo)表,表達(dá)式><程序塊/偽代碼語(yǔ)句組>;ENDFOR---重復(fù)型結(jié)構(gòu)
DOLOOP<條件描述>DOFOR<下標(biāo)=下標(biāo)表75-----多路選擇結(jié)構(gòu)
CASEOF<case變量名>;WHEN<case條件1>SELECT<程序塊/偽代碼語(yǔ)句組>;WHEN<case條件2>SELECT<程序塊/偽代碼語(yǔ)句組>;……DEFAULT:<缺省或錯(cuò)誤case:<程序塊/偽代碼語(yǔ)句組>;ENDCASE-----多路選擇結(jié)構(gòu)CASEOF<case變76READ/WRITETO<設(shè)備><I/O表>---輸入/輸出結(jié)構(gòu)
READ/WRITETO<設(shè)備><I/O表>77EnteravectorSetMaximumtothevalueofthefirstelementinthevectorDOforeachsecondonetothelastIFvalueofTHENelementisgreaterthantheMaximumvalueSetMaximumtovalueoftheelementENDDOPrinttheMaximumvalueInputarrayAMax=A(1)DOforI=2toNIFMax<A(I)SetMax=A(I)ENDIFENDDOPrintMaxEnteravectorInputarrayA78三、程序復(fù)雜性的度量程序復(fù)雜性主要是指模塊內(nèi)部程序的復(fù)雜性。它直接關(guān)系到軟件開發(fā)費(fèi)用的多少,開發(fā)周期的長(zhǎng)短和軟件和軟件內(nèi)部潛伏錯(cuò)誤的多少。同時(shí)它也是軟件可理解性的另一種度量。三、程序復(fù)雜性的度量程序復(fù)雜性主要是指模塊內(nèi)部程序79它可以用來(lái)計(jì)算任何一個(gè)程序的復(fù)雜性;對(duì)于不合理的程序,例如對(duì)于長(zhǎng)度動(dòng)態(tài)增長(zhǎng)的程序,或者對(duì)于原則上無(wú)法排錯(cuò)的程序,不應(yīng)當(dāng)使用它進(jìn)行復(fù)雜性計(jì)算;如果程序中指令條數(shù)、附加存儲(chǔ)量、計(jì)算時(shí)間增多,不會(huì)減少程序的復(fù)雜性。為了度量程序復(fù)雜性,要求復(fù)雜性度量應(yīng)滿足以下假設(shè):它可以用來(lái)計(jì)算任何一個(gè)程序的復(fù)雜性;對(duì)80如果設(shè)每行代碼的出錯(cuò)率為每100行源程序中可能的錯(cuò)誤數(shù)目。例如,每行代碼的出錯(cuò)率為1%,也就是說(shuō),每100行源程序中就可能有一個(gè)錯(cuò)誤。1、代碼行度量法:統(tǒng)計(jì)程序中的源代碼的行數(shù)較小的程序---1.3%~1.8%/行較大的程序---2.7%~3.2%/行如果設(shè)每行代碼的出錯(cuò)率為每100行源程序中可能的1、81該方法是利用程序模塊的程序圖中環(huán)路的個(gè)數(shù),來(lái)計(jì)算程序的復(fù)雜性的。為此,該方法也稱為環(huán)路復(fù)雜度計(jì)算法。2、McCabe度量法:利用程序的控制流來(lái)度量程序的復(fù)雜性它是一種退化了的程序流程圖。即:把程序流程圖中每個(gè)處理符號(hào)都退化成一個(gè)結(jié)點(diǎn),而原來(lái)流程圖中的流程線,則變成連接不同結(jié)點(diǎn)的有向弧。該方法是利用程序模塊的程序圖中環(huán)路的個(gè)數(shù),來(lái)2、Mc82(1)程序圖符號(hào)(1)程序圖符號(hào)83軟件工程學(xué)概述第5章詳細(xì)設(shè)計(jì)課件84TC1C2CABED(2)從流程圖導(dǎo)出程序圖A開始C1BCED結(jié)束C2TFTC1C2CABED(2)從流程圖導(dǎo)出程序圖A開始C1BC85(3)環(huán)路復(fù)雜性的計(jì)算方法V(G)=m-n+p說(shuō)明:V(G)是有向圖G中環(huán)路數(shù);m:為圖G中弧數(shù);n:為圖G中節(jié)點(diǎn)數(shù);p:為圖G中強(qiáng)連通分量個(gè)數(shù);
A
B
C
D
E
F
G
H
K
L
IV(G)=13-11+1=3McCabe的環(huán)路復(fù)雜性度量值為3(3)環(huán)路復(fù)雜性的計(jì)算方法V(G)=m-n+p說(shuō)明86習(xí)題1請(qǐng)將右側(cè)給出的程序流程圖轉(zhuǎn)換為程序圖并計(jì)算其環(huán)路值。a<=100FTb>=20b%3==1b+=3a++b-=5TFFTa=0,b=1習(xí)題1請(qǐng)將右側(cè)給出的a<=100FTb>=20b%3==187程序的環(huán)路復(fù)雜度則取決于程序控制流的復(fù)雜度,也就是取決于程序結(jié)構(gòu)的復(fù)雜程度。當(dāng)程序內(nèi)分支或循環(huán)個(gè)數(shù)增加時(shí),則相應(yīng)地環(huán)域復(fù)雜度也隨之增加。因此,它是對(duì)測(cè)試難度的一種定量度量,也能對(duì)軟件最終的可靠性給出某種預(yù)測(cè)。(4)、環(huán)路復(fù)雜度的用途V(G)<=10程序的環(huán)路復(fù)雜度則取決于程序控制流的復(fù)雜度,也就(88習(xí)題2請(qǐng)用程序流程圖描述下列問(wèn)題的算法,再將其轉(zhuǎn)換為程序圖并計(jì)算其環(huán)路值。請(qǐng)定義一個(gè)數(shù)組a,要求找出數(shù)組中最大數(shù)和最小數(shù),并把最大數(shù)和a[0]中的數(shù)對(duì)調(diào)、最小數(shù)和a[1]
中的數(shù)對(duì)調(diào)。習(xí)題2請(qǐng)用程序流程圖描述下列問(wèn)題的算法,再將其轉(zhuǎn)換為89習(xí)題3請(qǐng)畫出下列偽代碼程序的流程圖、程序圖并計(jì)算它的環(huán)路復(fù)雜度。
LOOP:DoWhileZ>0A=A+1IFA>10THENX=AELSEY=ZENDIFIFY<5THENPRINTX,YELSEIFY=2THENGOTOLOOPELSEC=3ENDIFENDIFG=H+RENDDOIFF>0THENPRINTGELSEPRINTKENDIFSTOP習(xí)題3請(qǐng)畫出下列偽代碼程序的流程圖、程L90設(shè)某模塊的功能是:讀入任意長(zhǎng)的一段英文課文,將其分解為單字。然后輸出一個(gè)單詞表,并指出每個(gè)單詞在課文中所出現(xiàn)的次數(shù)。習(xí)題4請(qǐng)按下列給出的文字要求,用PDL描述其該模塊的算法設(shè)某模塊的功能是:讀入任意長(zhǎng)的習(xí)題4請(qǐng)按下列給出的91……executeprocessaREPEATUNTILconditionX8executeprocessbIFconditionX1THENBEGINexecuteprocessfIFconditionX6THENREPEATUNTILconditionX7executeprocessiENDREPELSEBEGINexecuteprocessgexecuteprocesshENDENDIFEND習(xí)題5請(qǐng)將下列的PDL表示的某模塊的過(guò)程性描述,改為用:1、N-S圖
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合伙養(yǎng)殖協(xié)議書標(biāo)準(zhǔn)范本
- 工程試車與施工合同條款的互動(dòng)關(guān)系
- 版權(quán)許可協(xié)議范本
- 出租車駕駛員聘用合同2024年
- 信用擔(dān)保協(xié)議書
- 2024汽車運(yùn)輸合同范本簡(jiǎn)單簡(jiǎn)單版汽車維修合同范本
- 2024標(biāo)準(zhǔn)委托借款合同范本
- 北京市車輛過(guò)戶協(xié)議
- 昆明短期勞動(dòng)合同
- 2024年飯莊轉(zhuǎn)讓協(xié)議書范本
- 燃?xì)獍踩A(yù)警與應(yīng)急處理
- 煤焦酚-安全技術(shù)說(shuō)明書MSDS
- 涉僑法律知識(shí)講座
- 腦血管病三級(jí)預(yù)防
- 苗木出庫(kù)入庫(kù)管理制度
- DB32-4043-2021 池塘養(yǎng)殖尾水排放標(biāo)準(zhǔn)
- (許濟(jì)洛平)洛陽(yáng)市2023-2024學(xué)年高三第二次質(zhì)量檢測(cè) 英語(yǔ)試卷(含答案)
- 醫(yī)院培訓(xùn)課件:《重癥患者安全轉(zhuǎn)運(yùn)》
- 金屬切削機(jī)床課件
- 陜西師范大學(xué)學(xué)士學(xué)位英語(yǔ)考試題
- 4.3平面鏡成像導(dǎo)學(xué)案人教版八年級(jí)物理上冊(cè)
評(píng)論
0/150
提交評(píng)論