1.3 結(jié)構(gòu)化程序設(shè)計(jì)和模塊化結(jié)構(gòu)
1.3.1 結(jié)構(gòu)化程序
結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成。
1.順序結(jié)構(gòu)。在本書(shū)第3章中將要介紹的如賦值語(yǔ)句、輸入、輸出語(yǔ)句都可構(gòu)成順序結(jié)構(gòu)。當(dāng)執(zhí)行由這些語(yǔ)句構(gòu)成的程序時(shí),將按這些語(yǔ)句在程序中的先后順序逐條執(zhí)行,沒(méi)有分支,沒(méi)有轉(zhuǎn)移。順序結(jié)構(gòu)可用圖1.3所示的流程圖表示,其中(a)是一般的流程圖,(b)是N-S流程圖。
2.選擇結(jié)構(gòu)。在本書(shū)第4章中將要介紹的if語(yǔ)句、switch語(yǔ)句都可構(gòu)成選擇結(jié)構(gòu)。當(dāng)執(zhí)行到這些語(yǔ)句時(shí),將根據(jù)不同的條件去執(zhí)行不同分支中的語(yǔ)句。選擇結(jié)構(gòu)可用圖1.4所示的流程圖表示,其中(a)是一般的流程圖,(b)是N-S流程圖。
3.循環(huán)結(jié)構(gòu)。在本書(shū)第5章中將介紹不同形式的循環(huán)結(jié)構(gòu)。它們將根據(jù)各自的條件,使同一組語(yǔ)句重復(fù)執(zhí)行多次或一次也不執(zhí)行。循環(huán)結(jié)構(gòu)的流程圖如圖1.5和圖1.6所示,每個(gè)圖中(a)是一般的流程圖,(b)是N-S流程圖。圖1.5是當(dāng)型循環(huán)流程圖。當(dāng)型循環(huán)的特點(diǎn)是:當(dāng)指定的條件滿(mǎn)足(成立)時(shí),就執(zhí)行循環(huán)體,否則就不執(zhí)行。圖1.6是直到型循環(huán)流程圖。直到型循環(huán)的特點(diǎn)是:執(zhí)行循環(huán)體直到指定的條件滿(mǎn)足(成立)時(shí)就不再執(zhí)行循環(huán)體。
已經(jīng)證明,由三種基本結(jié)構(gòu)組成的算法可以解決J任何復(fù)雜的問(wèn)題。由三種基本結(jié)構(gòu)所構(gòu)成的算法稱(chēng)為結(jié)構(gòu)化算法;由三種基本結(jié)構(gòu)所構(gòu)成的程序稱(chēng)為結(jié)構(gòu)化程序。
例1.1 先后輸人若干個(gè)整數(shù),要求打印出其中最大的數(shù),當(dāng)輸入的數(shù)小于0時(shí)結(jié)束。用N-S流程圖表示算法。
解題的思路是:先輸人一個(gè)數(shù),在沒(méi)有其他數(shù)參加比較之前,它顯然是當(dāng)前最大的數(shù),把它放到變量ma:中。讓max始終存放當(dāng)前已比較過(guò)的數(shù)中的最大值。然后輸入第二個(gè)數(shù),并與max比較,如果第二個(gè)數(shù)大于max,則用第二個(gè)數(shù)取代max中原來(lái)的值。如此先后輸人和比較,每次比較后都將值大者放在max中,直到輸入的數(shù)小于0時(shí)結(jié)束。最后max中的值就是所有輸入數(shù)中的最大值。
根據(jù)此思路,畫(huà)出N-S流程圖(見(jiàn)圖1.7)。變量x用來(lái)控制循環(huán)次數(shù),當(dāng)x>0時(shí),執(zhí)行循環(huán)體;在循環(huán)體內(nèi)進(jìn)行兩個(gè)數(shù)的比較和輸入x值。從圖1.7可見(jiàn),在循環(huán)體的矩形框內(nèi)包含一個(gè)選擇結(jié)構(gòu)。
1.3.2 模塊化結(jié)構(gòu)
當(dāng)計(jì)算機(jī)在處理較復(fù)雜的任務(wù)時(shí),所編寫(xiě)的程序經(jīng)常由上萬(wàn)條語(yǔ)句組成,需要由許多人來(lái)共同完成。這時(shí)常常把這個(gè)復(fù)雜的任務(wù)分解為若干個(gè)子任務(wù),每個(gè)子任務(wù)又分成很多個(gè)小子任務(wù),每個(gè)小子任務(wù)只完成一項(xiàng)簡(jiǎn)單的功能。在程序設(shè)計(jì)時(shí),用一個(gè)個(gè)小模塊來(lái)實(shí)現(xiàn)這些功能,每個(gè)程序設(shè)計(jì)人員分別完成一個(gè)或多個(gè)小模塊。我們稱(chēng)這樣的程序設(shè)計(jì)方法為“模塊化”的方法,由一個(gè)個(gè)功能模塊構(gòu)成的程序結(jié)構(gòu)為模塊化結(jié)構(gòu)。
由于把一個(gè)大程序分解成若干相對(duì)獨(dú)立的子程序,每個(gè)子程序的代碼一般不超過(guò)一頁(yè)紙,因此對(duì)程序設(shè)計(jì)人員來(lái)說(shuō),編寫(xiě)程序代碼變得不再困難。這時(shí)只需對(duì)程序之間的數(shù)據(jù)傳遞做出統(tǒng)一規(guī)范,同一軟件可由一組人員同時(shí)進(jìn)行編寫(xiě),分別進(jìn)行調(diào)試,這就大大提高了程序編制的效率。
軟件編制人員在進(jìn)行程序設(shè)計(jì)的時(shí)候,首先應(yīng)當(dāng)集中考慮主程序中的算法,寫(xiě)出主程序后再動(dòng)手逐步完成子程序的調(diào)用。對(duì)于這些子程序也可用調(diào)試主程序的同樣方法逐步完成其下一層子程序的調(diào)用。這就是自頂向下、逐步細(xì)化、模塊化的程序設(shè)計(jì)方法。
C語(yǔ)言是一種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言。它提供了蘭種基本結(jié)構(gòu)的語(yǔ)句;提供了定義“函數(shù)”的功能,在C語(yǔ)言中沒(méi)有子程序的概念,它提供的函數(shù)可以完成子程序的所有功能;C語(yǔ)言允許對(duì)函數(shù)單獨(dú)進(jìn)行編譯,從而可以實(shí)現(xiàn)模塊化。另外,C語(yǔ)言還提供了豐富的數(shù)據(jù)類(lèi)型。這些都為結(jié)構(gòu)化程序設(shè)計(jì)提供了有力的工具。
1.1 在VC6.0環(huán)境中用RUN命令運(yùn)行一個(gè)C程序時(shí),這時(shí)所運(yùn)行的程序的后綴是______。
1.2 C語(yǔ)言源程序文件名的后綴是 [1] ;經(jīng)過(guò)編譯后,生成文件的后綴是 [2] ;經(jīng)過(guò)連接后,生成文件的后綴是 [3] 。
1.3 結(jié)構(gòu)化程序由 [1] 、 [2] 、 [3] 三種基本結(jié)構(gòu)組成。
編輯推薦:
2011年計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言常見(jiàn)問(wèn)題匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |