【正文】
后的 Jones記錄寫入新的主文件記錄了。 圖 改正錯(cuò)誤后的第三步求精 為簡(jiǎn)單起見,當(dāng)針對(duì)同一個(gè)訂戶有多個(gè)事務(wù)時(shí),僅考慮了在修改事務(wù)之后又有修改事務(wù)或刪除事務(wù)的情況。然而,在后面的求精步驟中,打開和關(guān)閉文件變得重要起來,必須加以處理。 從上述敘述可知,“計(jì)算多個(gè)地點(diǎn)的日平均溫度”、“讀取地點(diǎn)、時(shí)間和溫度”、“創(chuàng)建新的溫度記錄”、“計(jì)算特定地點(diǎn)的日平均溫度”和“存儲(chǔ)溫度記錄”等 5個(gè)模塊,每個(gè)都完成一個(gè)單一的功能,模塊內(nèi)所有元素都為完成同一個(gè)功能服務(wù),彼此結(jié)合的十分緊密,因此,這 5個(gè)模塊的內(nèi)聚類型都是功能內(nèi)聚。當(dāng)模塊 q把控制返還給模塊 p時(shí),它傳回一個(gè)狀態(tài)標(biāo)志。模塊 q和 s之間(接口 4)的耦合情況與此類似?!皩徍藬?shù)據(jù)”僅僅對(duì)收集來的事務(wù)數(shù)據(jù)進(jìn)行校核,并不對(duì)數(shù)據(jù)進(jìn)行加工處理,它的基本功能是確保輸入的事務(wù)數(shù)據(jù)時(shí)合理的,因此,也應(yīng)該歸入輸入流的行列。 圖 工資支付系統(tǒng)的第一級(jí)分解 再下一步設(shè)計(jì)步驟是,完成“第二級(jí)分解”。 圖 優(yōu)化后的工資支付軟件結(jié)構(gòu) :計(jì)算環(huán)形復(fù)雜度的方法主要有下述 3種。 代碼中包含的各種操作數(shù)的個(gè)數(shù)如下列: 操作數(shù) 個(gè)數(shù) Z 4 0 2 X 3 Y 2 1 1 因此,操作數(shù)的總個(gè)數(shù)為 N2=12。 圖 描述手續(xù)費(fèi)計(jì) 算方法的判定樹 :( 1)從該偽碼程序轉(zhuǎn)變成的程序流程圖示于圖 。因?yàn)樵趫D “印出緩沖 區(qū)的內(nèi)容”這個(gè)處理框有兩個(gè)入口;此外,循環(huán)結(jié)構(gòu)有兩個(gè)出口: I≤ T為假和 MATCH=N為真時(shí)都結(jié)束循環(huán)。 但 是,同樣的控制流程可以用不同的偽碼來描述,因此,由程序流程圖轉(zhuǎn)變成的偽碼不是唯一的。 圖 進(jìn)一步簡(jiǎn)化后的結(jié)構(gòu)化程序 15.答: Jackson 圖善于描繪復(fù)雜事物的組成。當(dāng)執(zhí)行完最內(nèi)層的 IF語句之后,把 I賦值為可執(zhí)行的最大標(biāo)號(hào)值加 1,而 DOUNTIL循環(huán)的結(jié)束條件就是 I等于這個(gè)值。 :( 1)圖 : START Loop:IF P1 THEN S1 IF P2 THEN S2 IF P3 THEN S3 IF P4 THEN S4 GO TO Loop ELSE GO TO Exit END ELSE GO TO Exit END ELSE GO TO Exit END Exit: STOP (2)使用附加的標(biāo)志變量 flag,設(shè)計(jì)出的等價(jià)的結(jié)構(gòu)化程序偽碼如下: START flag=TRUE DO UNTIL(NOT P4) OR (NOT flag) IF P1 THEN S1 ELSE flag=FALSE END IF P2 AND flag THEN S2 ELSE flag=FALSE END IF P3 AND flag THEN S3 ELSE flag=FALSE END IF P4 AND flag THEN S4 ELSE flag=FALSE END END STOP (3)不使用附加的標(biāo)志變量 flag的等價(jià)的結(jié)構(gòu)化程序偽碼如下: START DO UNTIL (NOT P1) OR (NOT P2) OR (NOT P3) OR (NOT P4) IF P1 THEN S1 IF P2 THEN S2 IF P3 THEN S3 IF P4 THEN S4 END END END END END STOP 13.答:偽碼準(zhǔn)確地描述了程序的控制流程。 圖 與圖 (不用 flag) : (1)根據(jù)這個(gè)偽碼程序畫出的程序流程圖如圖 。 判定表的每一列是一條計(jì)算規(guī)則。 按照慣例,把所有總是成對(duì)出現(xiàn)或以 3個(gè)一組方式出現(xiàn)的符號(hào)視為一個(gè)運(yùn)算符。此外,完成具體輸出功能的模塊只有一個(gè),無須再額外設(shè)置一個(gè)輸出信息處理控制模塊,因此應(yīng)該去掉“印出計(jì)算結(jié)果”模塊。所謂第一級(jí)分解就是確定系統(tǒng)的總體控制結(jié)構(gòu)。 接下來應(yīng)該分析確定輸入流和輸出流的邊界,以孤立出變換中心。 圖 右側(cè)文字說明,模塊 p、 t 和 u 更新同一個(gè)數(shù)據(jù)庫,因此,它們之間具有公共環(huán)境耦合。 :綜合分析圖 。重復(fù)調(diào)用“讀取地點(diǎn)、時(shí)間和溫度”、“創(chuàng)建新的溫度記錄”、“計(jì)算特定地點(diǎn)的日平均溫度”和“存儲(chǔ)溫度記錄”等模塊,直至計(jì)算出并保存好所有指定地點(diǎn)的日平均溫度。在設(shè)計(jì)的早期階段,設(shè)計(jì)者集中精力關(guān)注的 7 個(gè)左右問題是不 應(yīng)該包括打開和關(guān)閉文件這樣的細(xì)節(jié)問題的。由于事務(wù)文件是預(yù)先排好序的,當(dāng)新讀出的事務(wù)記錄與主文件記錄有相同的關(guān)鍵字時(shí),也就是新讀出的事務(wù)記錄與前一個(gè)事務(wù)記錄是針對(duì)同一個(gè)訂戶的事務(wù)的,新讀出的事務(wù)記錄的類型只可能是“修改”或“刪除”(已知前一個(gè)事務(wù)記錄的類型是“修改”)。在圖 ,因?yàn)槭聞?wù)記錄 的關(guān)鍵字與舊的主文件記錄的關(guān)鍵字相同,沿最左邊的路徑到底“測(cè)試事務(wù)類型”判定框。圖中連到“輸入”和“輸出”方框的虛線表示把如何處理輸入和輸出的設(shè)計(jì)決定推遲到較晚的求精步驟中再做出,該圖其余部分是實(shí)現(xiàn)“處理”的流程圖,或者說是對(duì)處理事務(wù)的算法的初步求精結(jié)果。接下來讀取下一個(gè)事務(wù)記錄( Harris)和下一個(gè)舊的主文件記錄( James),分別在各自的緩沖區(qū)里覆蓋 Brown記錄,因?yàn)?Harris和 James之前,而且事務(wù)類型為 1(插入),所以把 Harris 記錄寫到新的主文件中以實(shí)現(xiàn)插入。 作為對(duì)“更新主文件”的第一步求精,我們把它分解為 3個(gè)處理框,分別稱為“輸入”、“處理”和“輸出”,如圖 。 圖 順序主文件更新系統(tǒng)概貌 然后用逐步求精方法設(shè)計(jì)圖 “更新主文件”的實(shí)現(xiàn)算法。隨著不斷 試驗(yàn)、糾錯(cuò)、使用、評(píng)價(jià)和修改,獲得新的原型版本,如此周而復(fù)始,逐步減少分析和通信中的誤解,彌補(bǔ)不足之處,進(jìn)一步確定各種需求細(xì)節(jié),適應(yīng)需求的變更,從而提高了最終產(chǎn)品的質(zhì)量。此外,軟件需求分析階段只確定軟件系統(tǒng)要“做什么”,完成對(duì)重要功能、性能、確認(rèn)準(zhǔn)則的描述,至于“怎么做”由后續(xù)的設(shè)計(jì)階段完成,對(duì)算法的詳細(xì)過程性描述也是在設(shè)計(jì)階段給出。 需要能夠表達(dá)和理解問題的信息域和功能域; 167?;疖囶^既可能是內(nèi)燃機(jī)車也可能是電氣機(jī)車。 11. 研究下面給出的偽碼程序,要求: (1)畫出它的程序流程圖; (2)它是結(jié)構(gòu)化的還是非結(jié)構(gòu)化的?說明你的理由; (3)若是非結(jié)構(gòu)化的,則 (a)把它改造成僅用三種控制結(jié)構(gòu)的結(jié)構(gòu)化程序; (b)寫出這個(gè)結(jié)構(gòu)化設(shè)計(jì)的偽碼; (c)用盒圖表示這個(gè)結(jié)構(gòu)化程序。 圖 程序流程圖 8. 某交易所規(guī)定給經(jīng)紀(jì)人的手續(xù)費(fèi)計(jì)算方法如下:總手續(xù)費(fèi)等于基本手續(xù)費(fèi)加上與交