【正文】
結(jié)束} 55 55 167。 用計算機語言表示算法 ? 概念: 用計算機實現(xiàn)算法。計算機是無法識別流程圖和偽代碼的。只有用計算機語言編寫的程序才能被計算機執(zhí)行。因此在用流程圖或偽代碼描述出一個算法后,還要將它轉(zhuǎn)換成計算機語言程序。 ? 特點: 用計算機語言表示算法必須嚴(yán)格遵循所用的語言的語法規(guī)則,這是和偽代碼不同的。 ? 用處: 要完成一件工作,包括設(shè)計算法和實現(xiàn)算法兩個部分。設(shè)計算法的目的是為了實現(xiàn)算法。 56 56 include void main( ) {int i,t。 t=1。 i=2。 while(i=5) {t=t*I。 i=i+1。 } printf(“%d \n”,t)。 } 例 將例 法(求 5!)用 C語言表示。 57 57 ? 應(yīng)當(dāng)強調(diào)說明: 寫出了 C程序,仍然只是描述了算法,并未實現(xiàn)算法。只有運行程序才是實現(xiàn)算法。應(yīng)該說,用計算機語言表示的算法是計算機能夠執(zhí)行的算法。 58 58 一、結(jié)構(gòu)化程序的三種基本結(jié)構(gòu) 1966年提出三種基本結(jié)構(gòu),用這三種基本結(jié)構(gòu)作為表 示一種良好算法的基本單元: 順序、選擇、循環(huán) 。任 何復(fù)雜的算法都是由這三種結(jié)構(gòu)按照一定的規(guī)律組成。 ① 順序結(jié)構(gòu) 167。 結(jié)構(gòu)化程序設(shè)計方法 A B A B 操作步驟按照書寫的順序執(zhí)行 ,如: a=3。 b=4。 c=a+b。 59 59 ② 選擇結(jié)構(gòu) P A B T F P T F A B if (x != 0) y=1。 else y=2。 三種基本結(jié)構(gòu) 60 60 ③ 循環(huán)結(jié)構(gòu) 根據(jù)條件 P決定是否重復(fù)執(zhí)行循環(huán)體中的操作。 三種基本結(jié)構(gòu) P A T F 當(dāng) P為真 A 先判斷后執(zhí)行 A 直到 P為真 先執(zhí)行后判斷 P A T F 61 61 二、三種基本結(jié)構(gòu)的共同特點 ① 單入口單出口 ② 結(jié)構(gòu)體內(nèi)的每一部分都有機會被執(zhí)行 ③ 不存在 “ 死循環(huán) ” 三、結(jié)構(gòu)化程序設(shè)計的優(yōu)點 用三種基本結(jié)構(gòu)組成的程序是結(jié)構(gòu)化程序。 優(yōu)點:易編、易讀、易懂、易維護(hù) 62 62 167。 結(jié)構(gòu)化程序設(shè)計方法 ? 自頂向下; ? 逐步細(xì)化; ? 模塊化設(shè)計; ? 結(jié)構(gòu)化編碼。 兩種不同的方法: ? 自頂向下,逐步細(xì)化; ? 63 63 用這種方法逐步分解,直到作者認(rèn)為可以直接將各小段表達(dá)為文字語句為止。這種方法就叫 做 “ 自頂向下,逐步細(xì)化 ” 。 64 64 自頂向下,逐步細(xì)化方法的優(yōu)點: 考慮周全,結(jié)構(gòu)清晰,層次分明,作者容易寫,讀者容易看。如果發(fā)現(xiàn)某一部分中有一段內(nèi)容不妥,需要修改,只需找出該部分修改有關(guān)段落即可,與其它部分無關(guān)。我們提倡用這種方法設(shè)計程序。這就是用工程的方法設(shè)計程序。 65 65 模塊設(shè)計的方法: ?模塊化設(shè)計的思想實際上是一種 “ 分而治之 ” 的思想,把一個大任務(wù)分為若干個子任務(wù),每一個子任務(wù)就相對簡單了。 ?在拿到一個程序模塊以后,根據(jù)程序模塊的功能將它劃分為若干個子模塊,如果這些子模塊的規(guī)模還嫌大,還再可以劃分為更小的模塊。這個過程采用自頂向下方法來實現(xiàn)。 ?子模塊一般不超過 50行 ?劃分子模塊時應(yīng)注意模塊的獨立性,即:使一個模塊完成一項功能,耦合性愈少愈好。 66 66 五、結(jié)構(gòu)化程序設(shè)計過程 ① 確定算法:分析問題,寫出算法描述 ② 編寫程序:用計算機語言實現(xiàn)算法 ③ 上機調(diào)試:編輯、編譯、連接、執(zhí)行、輸出結(jié)果 更加規(guī)范的軟件設(shè)計過程可參見 《 軟件工程 》 ① 需求分析 ② 概要設(shè)計 ③ 詳細(xì)設(shè)計 ④ 編碼 ⑤ 測試 ⑥ 維護(hù)