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