C語言課件program_2_第1頁
C語言課件program_2_第2頁
C語言課件program_2_第3頁
C語言課件program_2_第4頁
C語言課件program_2_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第2章 算法-程序的靈魂主要內(nèi)容o 2.0 程序程序o 2.1 算法的概念算法的概念o 2.2 簡單算法舉例簡單算法舉例o 2.3 算法的特性算法的特性o 2.4 怎樣表示一個算法怎樣表示一個算法o 2.5 程序化設(shè)計方法程序化設(shè)計方法 o 練習(xí)練習(xí)c-22.0 程序程序o 問題分析問題分析n利用計算機(jī)處理問題的過程利用計算機(jī)處理問題的過程程序設(shè)計的難程序設(shè)計的難點在哪里?點在哪里? 算法算法程序設(shè)計的程序設(shè)計的“靈魂靈魂”o 程序的內(nèi)容程序的內(nèi)容n (沃思(沃思 Nikiklaus Wirth): 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) + 算法算法 = 程序程序 (data structure) (algori

2、thm)n 程序程序=算法算法+數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計方法程序設(shè)計方法+語言工具和環(huán)境語言工具和環(huán)境o 數(shù)據(jù)結(jié)構(gòu):對數(shù)據(jù)的描述,即在程序中要指定數(shù)據(jù)的類數(shù)據(jù)結(jié)構(gòu):對數(shù)據(jù)的描述,即在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式型和數(shù)據(jù)的組織形式o 算法:對操作的描述,即操作步驟算法:對操作的描述,即操作步驟n 對同一個問題,可以有不同的解題方法和步驟對同一個問題,可以有不同的解題方法和步驟n 為了有效地進(jìn)行解題,需要保證算法正確,并選擇合適的算為了有效地進(jìn)行解題,需要保證算法正確,并選擇合適的算法法n 特性:有窮性、確定性、有特性:有窮性、確定性、有0個或多個輸入、有個或多個輸入、有1個或多個個或

3、多個輸出、有效性輸出、有效性o 上述四個方面中:上述四個方面中: 算法是靈魂算法是靈魂 數(shù)據(jù)結(jié)構(gòu)是加工對象數(shù)據(jù)結(jié)構(gòu)是加工對象 語言是工具語言是工具 編程需要采取合適的方法編程需要采取合適的方法o 算法解決算法解決做什么做什么和和怎么做怎么做的問題的問題o 程序中的按一定順序列出的操作語句,就是算法的體現(xiàn)程序中的按一定順序列出的操作語句,就是算法的體現(xiàn)o 通過本門課,大家學(xué)會使用通過本門課,大家學(xué)會使用c語言的語法編寫不太復(fù)雜語言的語法編寫不太復(fù)雜的的c程序程序o 廣義的說廣義的說,為解決一個問題而采取的方法和步驟為解決一個問題而采取的方法和步驟,就稱為算法就稱為算法o 計算機(jī)算法計算機(jī)算法n

4、用計算機(jī)解決問題的步驟用計算機(jī)解決問題的步驟n 分類分類o 數(shù)值運算算法數(shù)值運算算法o 非數(shù)值運算算法非數(shù)值運算算法例例2.1 2.1 求求1 12 23 34 45 5 改進(jìn)算法:改進(jìn)算法:設(shè)設(shè)t t為被乘數(shù),為被乘數(shù),i i為乘數(shù),用循環(huán)為乘數(shù),用循環(huán)法求解法求解S1: S1: 使使 t=1t=1S2: S2: 使使 i=2i=2S3: S3: 使使 ti,i,乘積仍然放在變量乘積仍然放在變量 t t中,可表示為中,可表示為t ti it tS4: S4: 使使i i的值的值+1+1,即,即i+1i+1i iS5: S5: 如果如果i5, i5, 返回重新執(zhí)行返回重新執(zhí)行 步驟步驟S3S3

5、以及其后的以及其后的S4S4和和S5S5; 否則,算法結(jié)束。最后得到否則,算法結(jié)束。最后得到 t t的值就是的值就是5 5!的值!的值 原始方法:原始方法:步驟步驟1 1:先求:先求1 12 2,得到結(jié)果,得到結(jié)果2 2。步驟步驟2 2:將步驟:將步驟1 1得到的乘得到的乘 積積2 2乘以乘以3 3,得到結(jié)果,得到結(jié)果6 6。步驟步驟3 3:將:將6 6再乘以再乘以4 4,得,得2424。步驟步驟4 4:將:將2424再乘以再乘以5 5,得,得120120。若求若求 1 12 21 1000000,怎么做?怎么做?思考:思考: 若求若求 1 13 35510011001,怎么做?怎么做?例例2

6、.2 2.2 有有5050個學(xué)生,要求將他們之中成績在個學(xué)生,要求將他們之中成績在8080分以上者打印出來分以上者打印出來設(shè)設(shè)i:第個學(xué)生學(xué)號:第個學(xué)生學(xué)號 i:第個學(xué)生成績:第個學(xué)生成績算法如下:算法如下: S1: 1i S1: 1i S2: S2: 如果如果 g gi8080,則輸出,則輸出 n ni和和 g gi i,否則不輸出,否則不輸出 S3: i+1i S3: i+1i S4: S4: 若若i50, i50, 返回返回S2S2,否則,算法結(jié)束,否則,算法結(jié)束例例2.3 2.3 判定判定2000 25002000 2500年中的每一年是否閏年,將結(jié)果輸出。年中的每一年是否閏年,將結(jié)果

7、輸出。閏年的條件:閏年的條件: 能被能被4整除整除: 但不能被但不能被100整除的年份;整除的年份; 能被能被100整除,又能被整除,又能被400整除的年份;整除的年份; o 算法如下:算法如下: 設(shè)設(shè)y為被檢測的年份。為被檢測的年份。o S1: 2000yo S2: 若若y不能被不能被4整除,則輸出整除,則輸出y“不是閏年不是閏年”,o 然然 后轉(zhuǎn)到后轉(zhuǎn)到S6o S3: 若若y能被能被4整除,不能被整除,不能被100整除,則輸整除,則輸o 出出y“是閏年是閏年”,然后轉(zhuǎn)到,然后轉(zhuǎn)到S6o S4: 若若y能被能被100整除,又能被整除,又能被400整除,輸整除,輸o 出出y“是閏年是閏年” 否

8、則輸出否則輸出y“不是閏年不是閏年”,o 然后轉(zhuǎn)到然后轉(zhuǎn)到S6o S5: 輸出輸出y“不是閏年不是閏年”o S6: y+1yo S7: 當(dāng)當(dāng)y2500時時, 返回返回S2繼續(xù)執(zhí)行,否則,算法結(jié)束繼續(xù)執(zhí)行,否則,算法結(jié)束2.3 算法的特性o 有窮性:一個算法應(yīng)包含有限的操作步驟而不能是無限的有窮性:一個算法應(yīng)包含有限的操作步驟而不能是無限的o 確定性:算法中每一個步驟應(yīng)當(dāng)是確定的,而不能應(yīng)當(dāng)是含確定性:算法中每一個步驟應(yīng)當(dāng)是確定的,而不能應(yīng)當(dāng)是含糊的、模棱兩可的不應(yīng)產(chǎn)生歧義性糊的、模棱兩可的不應(yīng)產(chǎn)生歧義性o 輸入輸入:有零個或多個輸入有零個或多個輸入n輸入是指在執(zhí)行算法時需要從外界取得必要的信息

9、輸入是指在執(zhí)行算法時需要從外界取得必要的信息o 輸出輸出:有一個或多個輸出有一個或多個輸出n算法的目的是為了求解,算法的目的是為了求解,“解解”就是輸出就是輸出o 有效性:算法中每一個步驟應(yīng)當(dāng)能有效地執(zhí)行,并得到確定有效性:算法中每一個步驟應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果的結(jié)果 abc3 3個數(shù)中最大的數(shù)個數(shù)中最大的數(shù)算法:求3個數(shù)中最大的數(shù)2.4 怎樣表示一個算法o 怎樣表示一個算法?怎樣表示一個算法?n 用自然語言表示用自然語言表示n 用流程圖表示(傳統(tǒng)流程圖和用流程圖表示(傳統(tǒng)流程圖和N-S圖)圖)n 用偽代碼表示用偽代碼表示n 用計算機(jī)語言表示用計算機(jī)語言表示n 結(jié)構(gòu)化程序的三種基本

10、結(jié)構(gòu)結(jié)構(gòu)化程序的三種基本結(jié)構(gòu) 順序、選擇、循環(huán)順序、選擇、循環(huán)o 用自然語言表示算法用自然語言表示算法n 自然語言指人們?nèi)粘J褂玫恼Z言,如漢語、英語等自然語言指人們?nèi)粘J褂玫恼Z言,如漢語、英語等n 用自然語言表示算法的特點:用自然語言表示算法的特點:o 通俗易懂,但不嚴(yán)謹(jǐn),容易產(chǎn)生歧義通俗易懂,但不嚴(yán)謹(jǐn),容易產(chǎn)生歧義n 除非問題很簡單,一般不用自然語言描述算法除非問題很簡單,一般不用自然語言描述算法o 用流程圖表示算法用流程圖表示算法n 用傳統(tǒng)流程圖表示用傳統(tǒng)流程圖表示n 用用N-S流程圖表示流程圖表示 程序設(shè)計的過程,實程序設(shè)計的過程,實際上就是確定解決問題際上就是確定解決問題的詳細(xì)步驟,而

11、這些步的詳細(xì)步驟,而這些步驟通常稱為驟通常稱為流程流程。o 用傳統(tǒng)流程圖表示用傳統(tǒng)流程圖表示算法算法n 流程圖采用一些圖流程圖采用一些圖形框表示算法要表形框表示算法要表述的各種操作述的各種操作 直觀、形象直觀、形象n ANSI規(guī)定的常用規(guī)定的常用流程圖符號流程圖符號 起止框起止框 輸入輸出框輸入輸出框 判斷框判斷框 處理框處理框 連接點連接點 流程線流程線 注釋框注釋框例例2.6 2.6 將例將例2.1 2.1 求求1 12 23 34 45 5 的算法用流程圖表示的算法用流程圖表示 改進(jìn)算法:改進(jìn)算法:設(shè)設(shè)t t為被乘數(shù),為被乘數(shù),i i為乘數(shù),用循環(huán)為乘數(shù),用循環(huán)法求解法求解S1: S1:

12、 使使 t=1=1S2: S2: 使使 i=2i=2S3: S3: 使使 ti,i,乘積仍然放在變量乘積仍然放在變量 t t中,可表示為中,可表示為t ti it tS4: S4: 使使i i的值的值+1+1,即,即i+1i+1i iS5: S5: 如果如果i5, i5, 返回重新執(zhí)行返回重新執(zhí)行 步驟步驟S3S3以及其后的以及其后的S4S4和和S5S5; 否則,算法結(jié)束。最后得到否則,算法結(jié)束。最后得到 t t的值就是的值就是5 5!的值!的值 開始開始1=t2=it i=t i+1=ii5真真結(jié)束結(jié)束假假輸出輸出t的值的值o 傳統(tǒng)流程圖的特點傳統(tǒng)流程圖的特點n 傳統(tǒng)流程圖的構(gòu)成傳統(tǒng)流程圖的

13、構(gòu)成o 表示相應(yīng)操作的框表示相應(yīng)操作的框o 帶帶箭頭箭頭的流程線的流程線o 框內(nèi)外必要的文字說明框內(nèi)外必要的文字說明n 優(yōu)點優(yōu)點 o 直觀形象直觀形象n 弊端弊端o 占用篇幅較多占用篇幅較多o 流程線使用無限制,亂無頭緒(流程線使用無限制,亂無頭緒(BS型算法)型算法)o 3種基本結(jié)構(gòu)種基本結(jié)構(gòu): 順序、選擇、循環(huán)結(jié)構(gòu)順序、選擇、循環(huán)結(jié)構(gòu)用這用這3種基本結(jié)構(gòu)作為表示一個良好算法的基本單元種基本結(jié)構(gòu)作為表示一個良好算法的基本單元n 順序結(jié)構(gòu)順序結(jié)構(gòu)虛線框內(nèi)是一個順序結(jié)構(gòu)。虛線框內(nèi)是一個順序結(jié)構(gòu)。A A、B B兩個框是順序執(zhí)行的:兩個框是順序執(zhí)行的:按圖中所畫的框的順序,先按圖中所畫的框的順序,先

14、執(zhí)行執(zhí)行A A操作,再執(zhí)行操作,再執(zhí)行B B操作。操作。n 選擇結(jié)構(gòu)(選取結(jié)構(gòu)選擇結(jié)構(gòu)(選取結(jié)構(gòu)/分支結(jié)構(gòu))分支結(jié)構(gòu))虛線框內(nèi)是一個選擇結(jié)構(gòu)。虛線框內(nèi)是一個選擇結(jié)構(gòu)。此結(jié)構(gòu)必須包含一個判斷框,框中寫有此結(jié)構(gòu)必須包含一個判斷框,框中寫有一個條件,根據(jù)給定的條件是否成立,一個條件,根據(jù)給定的條件是否成立,從而選擇執(zhí)行從而選擇執(zhí)行A A框框或是或是B B框??颉@纾簵l件可以是例如:條件可以是i101i101ab條件條件PA成立成立不成立不成立B B操作操作為空時,為空時,畫成直畫成直線線ab虛線框內(nèi)是一個直到型虛線框內(nèi)是一個直到型循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)。先執(zhí)行先執(zhí)行A A框中的操作;框中的操作;執(zhí)行完

15、執(zhí)行完A A操作后,判條件操作后,判條件P P是否成立;是否成立;如果不成立,繼續(xù)執(zhí)行如果不成立,繼續(xù)執(zhí)行A A操作;操作;如此反復(fù)執(zhí)行如此反復(fù)執(zhí)行A A框中的操框中的操作,直到條件作,直到條件P P成立為止,成立為止,從從b b點脫離本循環(huán)結(jié)構(gòu)。點脫離本循環(huán)結(jié)構(gòu)。條件條件P2A成立成立不成立不成立ab山無棱山無棱, ,天地合天地合, ,乃敢與君絕乃敢與君絕! ! n 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)o 直到型直到型-until型型o 當(dāng)型當(dāng)型-while型型虛線框內(nèi)是一個當(dāng)型循環(huán)虛線框內(nèi)是一個當(dāng)型循環(huán)結(jié)構(gòu)。結(jié)構(gòu)。當(dāng)給定的條件成立時,執(zhí)當(dāng)給定的條件成立時,執(zhí)行行A A框中的操作;框中的操作;執(zhí)行完執(zhí)行完A A

16、操作后,判條件操作后,判條件P P是否成立;是否成立;如果仍成立,繼續(xù)執(zhí)行如果仍成立,繼續(xù)執(zhí)行A A操操作;作;如此反復(fù)執(zhí)行如此反復(fù)執(zhí)行A A框中的操作,框中的操作,直到條件直到條件P P不成立為止,從不成立為止,從 b b點脫離本循環(huán)結(jié)構(gòu)。點脫離本循環(huán)結(jié)構(gòu)。當(dāng)山峰沒有棱角的時候當(dāng)山峰沒有棱角的時候 當(dāng)河水不在流當(dāng)河水不在流當(dāng)時間停住日月不分當(dāng)時間停住日月不分 當(dāng)天地萬物化為虛當(dāng)天地萬物化為虛有有 我還是不能和你分手我還是不能和你分手 o 結(jié)構(gòu)化程序設(shè)計方法結(jié)構(gòu)化程序設(shè)計方法n三種基本結(jié)構(gòu)的共同點三種基本結(jié)構(gòu)的共同點o 只有一個入口只有一個入口o 只有一個出口只有一個出口o 結(jié)構(gòu)內(nèi)每一部分都有

17、機(jī)會被執(zhí)行到結(jié)構(gòu)內(nèi)每一部分都有機(jī)會被執(zhí)行到o 結(jié)構(gòu)內(nèi)不存在結(jié)構(gòu)內(nèi)不存在死循環(huán)死循環(huán)。 如條件永遠(yuǎn)成立時,就成了如條件永遠(yuǎn)成立時,就成了死死循環(huán)循環(huán)“ 注意:基本結(jié)構(gòu)并不只限于上面注意:基本結(jié)構(gòu)并不只限于上面3種,只要符合上述的四種,只要符合上述的四個特點的結(jié)構(gòu),都稱為基本結(jié)構(gòu)個特點的結(jié)構(gòu),都稱為基本結(jié)構(gòu)n已經(jīng)證明,用以上三種基本結(jié)構(gòu)順序組成的算法結(jié)構(gòu),可以已經(jīng)證明,用以上三種基本結(jié)構(gòu)順序組成的算法結(jié)構(gòu),可以解決任何復(fù)雜的問題解決任何復(fù)雜的問題n由基本結(jié)構(gòu)構(gòu)成的算法屬于由基本結(jié)構(gòu)構(gòu)成的算法屬于“結(jié)構(gòu)化結(jié)構(gòu)化”的算法的算法,它不存在無規(guī)律它不存在無規(guī)律的轉(zhuǎn)向,只在本基本機(jī)構(gòu)內(nèi)才允許存在分支和向前或

18、向后的的轉(zhuǎn)向,只在本基本機(jī)構(gòu)內(nèi)才允許存在分支和向前或向后的跳轉(zhuǎn)跳轉(zhuǎn)o 用用N-S流程圖表示算法流程圖表示算法n 用基本結(jié)構(gòu)的順序組合可以表示任何復(fù)雜的算法結(jié)用基本結(jié)構(gòu)的順序組合可以表示任何復(fù)雜的算法結(jié)構(gòu),那么,就可去掉流程線,避免了隨意的跳轉(zhuǎn)構(gòu),那么,就可去掉流程線,避免了隨意的跳轉(zhuǎn)n 1973年兩名美國學(xué)者提出了一種新的流程圖形式年兩名美國學(xué)者提出了一種新的流程圖形式,并用二人名字的第一個字母組合命名了該流程圖,并用二人名字的第一個字母組合命名了該流程圖。即。即N-S流程圖,也稱盒圖流程圖,也稱盒圖n 三種基本結(jié)構(gòu)的表示三種基本結(jié)構(gòu)的表示AB順序結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)選擇結(jié)構(gòu) P成立成立 AB

19、不成立不成立當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)A P1直到型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)A P2例例2.11 2.11 將例將例2.1 2.1 求求1 12 23 34 45 5 的算法用的算法用N - SN - S圖表示圖表示 改進(jìn)算法:改進(jìn)算法:設(shè)設(shè)t t為被乘數(shù),為被乘數(shù),i i為乘數(shù),用循環(huán)為乘數(shù),用循環(huán)法求解法求解S1: S1: 使使 t=1t=1S2: S2: 使使 i=2i=2S3: S3: 使使 ti,i,乘積仍然放在變量乘積仍然放在變量 p p中,可表示為中,可表示為t ti itS4: S4: 使使i i的值的值+1+1,即,即i+1i+1i iS5: S5: 如果如果i5, i5, 返回

20、重新執(zhí)行返回重新執(zhí)行 步驟步驟S3S3以及其后的以及其后的S4S4和和S5S5; 否則,算法結(jié)束。最后得到否則,算法結(jié)束。最后得到 t t的值就是的值就是5 5!的值!的值 這兩個操這兩個操作之間是作之間是順序關(guān)系順序關(guān)系1= t2=i直到直到 i5 t x i= t i+1=i輸出輸出t的值的值這是一這是一個順序個順序結(jié)構(gòu)結(jié)構(gòu)這是一這是一個循環(huán)個循環(huán)結(jié)構(gòu)結(jié)構(gòu)上述算法由基上述算法由基本結(jié)構(gòu)組成本結(jié)構(gòu)組成ABn N-S圖表示算法的優(yōu)點圖表示算法的優(yōu)點o 比文字描述直觀、形象、比文字描述直觀、形象、 易于理解易于理解o 比傳統(tǒng)流程圖緊湊易畫。尤其是它廢除了流程線,整個比傳統(tǒng)流程圖緊湊易畫。尤其是它

21、廢除了流程線,整個算法結(jié)構(gòu)是由各個基本結(jié)構(gòu)按順序組成的,算法結(jié)構(gòu)是由各個基本結(jié)構(gòu)按順序組成的,N-S流程流程圖中的上下順序就是執(zhí)行時的順序圖中的上下順序就是執(zhí)行時的順序o 用用N-S圖表示的算法都是結(jié)構(gòu)化的算法,因為它不可圖表示的算法都是結(jié)構(gòu)化的算法,因為它不可能出現(xiàn)流程無規(guī)律的跳轉(zhuǎn),而只能自上而下地順序執(zhí)行能出現(xiàn)流程無規(guī)律的跳轉(zhuǎn),而只能自上而下地順序執(zhí)行n 小結(jié)小結(jié)o 一個結(jié)構(gòu)化的算法是由一些基本結(jié)構(gòu)順序組成的。在基一個結(jié)構(gòu)化的算法是由一些基本結(jié)構(gòu)順序組成的。在基本結(jié)構(gòu)之間不存在向前或向后的跳轉(zhuǎn),流程的轉(zhuǎn)移只存本結(jié)構(gòu)之間不存在向前或向后的跳轉(zhuǎn),流程的轉(zhuǎn)移只存在于一個基本結(jié)構(gòu)范圍之內(nèi)在于一個基

22、本結(jié)構(gòu)范圍之內(nèi)(如循環(huán)中流程的跳轉(zhuǎn)如循環(huán)中流程的跳轉(zhuǎn))o 一一 個非結(jié)構(gòu)化的算法可以用一個等價的結(jié)構(gòu)化算法代個非結(jié)構(gòu)化的算法可以用一個等價的結(jié)構(gòu)化算法代替,其功能不變替,其功能不變 。如果一個算法不能分解為若干個基。如果一個算法不能分解為若干個基本結(jié)構(gòu),則它必然不是一個結(jié)構(gòu)化的算法本結(jié)構(gòu),則它必然不是一個結(jié)構(gòu)化的算法o 用偽代碼表示算法用偽代碼表示算法n 偽代碼偽代碼o 是用介于自然語言和計是用介于自然語言和計算機(jī)語言之間的文字和算機(jī)語言之間的文字和符號來描述算法符號來描述算法o 優(yōu)點優(yōu)點 書寫方便,格式緊湊,書寫方便,格式緊湊,易懂,易改,便于向計易懂,易改,便于向計算機(jī)語言過渡算機(jī)語言過渡

23、o 缺點缺點 不如流程圖直觀,可能不如流程圖直觀,可能會出現(xiàn)邏輯上的錯誤會出現(xiàn)邏輯上的錯誤例例2.16 2.16 將例將例2.1 2.1 求求1 12 23 34 45 5 的算法用偽的算法用偽代碼表示代碼表示 開始開始 置置t t的初值為的初值為1 1 置置i i的初值為的初值為2 2 當(dāng)當(dāng)i = 5 i = 5 時,執(zhí)行下面的時,執(zhí)行下面的操作:操作: 使使 t=t x it=t x i 使使 i=i+1i=i+1 輸出輸出 t t 的值的值結(jié)束結(jié)束o 用計算機(jī)語言表示算法用計算機(jī)語言表示算法實現(xiàn)算法實現(xiàn)算法n 只有用計算機(jī)語言描述的算法才能被計算機(jī)的編譯只有用計算機(jī)語言描述的算法才能被計

24、算機(jī)的編譯環(huán)境識別,并被處理、執(zhí)行環(huán)境識別,并被處理、執(zhí)行n 用計算機(jī)語言表示算法必須嚴(yán)格遵守所用語言的語用計算機(jī)語言表示算法必須嚴(yán)格遵守所用語言的語法規(guī)則法規(guī)則n 前面幾種描述算法的方法對文字等格式要求不嚴(yán),前面幾種描述算法的方法對文字等格式要求不嚴(yán),一般來說,只要能示意就行一般來說,只要能示意就行例例2.18 2.18 將例將例2.1 6 2.1 6 表示的求表示的求5 5!的算法用!的算法用C C語言表示語言表示 #include int main() int t,i; t=1; i=2; while(i=5) t=t*i; i=i+1; printf(“%dn”,t); return

25、0;n 程序設(shè)計步驟程序設(shè)計步驟o 分析問題分析問題 o 確定解決方案確定解決方案o 建立數(shù)學(xué)模型建立數(shù)學(xué)模型o 設(shè)計算法設(shè)計算法o 用計算機(jī)語言描述算法(即寫出源程序)用計算機(jī)語言描述算法(即寫出源程序)o 上機(jī)調(diào)試源程序:經(jīng)過編輯、編譯、連接、運行,得到上機(jī)調(diào)試源程序:經(jīng)過編輯、編譯、連接、運行,得到可執(zhí)行的程序。(參看可執(zhí)行的程序。(參看P13圖圖1.2 )o 運行程序,得到需要的結(jié)果運行程序,得到需要的結(jié)果n 說明:說明: 寫出了寫出了C程序,仍然只是描述了算法,并未實現(xiàn)算程序,仍然只是描述了算法,并未實現(xiàn)算法。只有運行程序才是實現(xiàn)算法。應(yīng)該說,用計算法。只有運行程序才是實現(xiàn)算法。應(yīng)該

26、說,用計算機(jī)語言表示的算法是計算機(jī)能夠執(zhí)行的算法機(jī)語言表示的算法是計算機(jī)能夠執(zhí)行的算法o 一個結(jié)構(gòu)化程序一個結(jié)構(gòu)化程序 就是用高級語言表示的結(jié)構(gòu)化就是用高級語言表示的結(jié)構(gòu)化算法。用三種基本結(jié)構(gòu)組成的程序必然是結(jié)構(gòu)算法。用三種基本結(jié)構(gòu)組成的程序必然是結(jié)構(gòu)化的程序,這種程序便于編寫、便于閱讀、便化的程序,這種程序便于編寫、便于閱讀、便于修改和維護(hù)于修改和維護(hù)o 結(jié)構(gòu)化程序設(shè)計強(qiáng)調(diào)程序設(shè)計風(fēng)格和程序結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計強(qiáng)調(diào)程序設(shè)計風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)o 結(jié)構(gòu)化程序設(shè)計方法的基本思路結(jié)構(gòu)化程序設(shè)計方法的基本思路 把一個復(fù)雜問題的求解過程把一個復(fù)雜問題的求解過程 分階段進(jìn)行,每個階段分階段進(jìn)行,每個階段處理的問

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論