raptor軟件使用_第1頁
raptor軟件使用_第2頁
raptor軟件使用_第3頁
raptor軟件使用_第4頁
raptor軟件使用_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、RAPTORRAPTOR程序設(shè)計基礎(chǔ)程序設(shè)計基礎(chǔ)循環(huán)(循環(huán)(looploop)控制語句允許)控制語句允許重復(fù)執(zhí)行一個或多個語句,重復(fù)執(zhí)行一個或多個語句,直到某些條件變?yōu)檎嬷抵钡侥承l件變?yōu)檎嬷担═rueTrue)。菱形符號中的表達(dá)式結(jié)果為菱形符號中的表達(dá)式結(jié)果為“NoNo”,則執(zhí)行,則執(zhí)行“NoNo”的分的分支,這將導(dǎo)致循環(huán)語句和重支,這將導(dǎo)致循環(huán)語句和重復(fù)復(fù)。要重復(fù)執(zhí)行的語句可以放在要重復(fù)執(zhí)行的語句可以放在菱形符號上方或下方菱形符號上方或下方。循環(huán)控制結(jié)構(gòu)在英語環(huán)境循環(huán)控制結(jié)構(gòu)在英語環(huán)境中被稱為中被稱為“”結(jié)構(gòu)結(jié)構(gòu)。未修改未修改CountCount的值的值CountCount的值永遠(yuǎn)為的值永

2、遠(yuǎn)為1 1CountCount的值永遠(yuǎn)不會等于的值永遠(yuǎn)不會等于-100-100求一個正整數(shù)的累加。求一個正整數(shù)的累加。一張紙折幾下可以比珠穆朗瑪峰高一張紙折幾下可以比珠穆朗瑪峰高。(。(0.5mm0.5mm,8848m8848m)在計算機(jī)科學(xué)中,將實際問題抽象化在計算機(jī)科學(xué)中,將實際問題抽象化是解決問題的關(guān)鍵要素之一是解決問題的關(guān)鍵要素之一。為了解決復(fù)雜的問題,必須能夠研究為了解決復(fù)雜的問題,必須能夠研究問題的問題的“主要方面(主要方面(big issuesbig issues)”。很容易看到,求組合數(shù)需要多次求很容易看到,求組合數(shù)需要多次求階乘階乘,這,這會造成許多重復(fù)的代碼會造成許多重復(fù)的

3、代碼??梢钥梢詫⑶箅A乘代碼獨(dú)立出主程序,定義為一將求階乘代碼獨(dú)立出主程序,定義為一個個子程序子程序,在主程序運(yùn)行時,需要計算某數(shù),在主程序運(yùn)行時,需要計算某數(shù)的階乘時就調(diào)用子程序,從而簡化整個軟件的階乘時就調(diào)用子程序,從而簡化整個軟件的組成,使結(jié)構(gòu)更清晰。的組成,使結(jié)構(gòu)更清晰。子程序如同一個加工廠,子程序如同一個加工廠,輸入原材料輸入原材料,然,然后按設(shè)計要求后按設(shè)計要求處理原材料處理原材料,輸出產(chǎn)成品輸出產(chǎn)成品。子程序的原材料就是一些變量子程序的原材料就是一些變量, ,例如(例如(in: in: mm), ,為統(tǒng)計子程序輸入測試樣本。為統(tǒng)計子程序輸入測試樣本。子程序的產(chǎn)成品也是變量,例如(子

4、程序的產(chǎn)成品也是變量,例如(out: sout: s), ,向調(diào)用它的程序返回統(tǒng)計結(jié)果。向調(diào)用它的程序返回統(tǒng)計結(jié)果。其中,其中,in, outin, out表示子程序的輸入輸出參數(shù)。表示子程序的輸入輸出參數(shù)。點擊點擊“模式模式”菜單,菜單,選擇選擇“中級中級”。 在在“mainmain”上點鼠標(biāo)上點鼠標(biāo)右鍵,選擇右鍵,選擇“增加一個增加一個子程序子程序”。子程序定義的參數(shù)稱為子程序定義的參數(shù)稱為“形式參數(shù)形式參數(shù)”。RAPTORRAPTOR的子程序參數(shù)不的子程序參數(shù)不得超過得超過6 6個。個。子程序參數(shù)可以是子程序參數(shù)可以是單個單個變量變量,也可以是,也可以是數(shù)組。數(shù)組。NoImage在在“m

5、ainmain”或其它子或其它子程序中添加過程調(diào)用程序中添加過程調(diào)用語句。語句。雙擊雙擊定義定義該語句。該語句。JC(m, m1)JC(m, m1)實參實參注意注意:調(diào)用子程序需要參數(shù)。:調(diào)用子程序需要參數(shù)。如要調(diào)用子程序,可以通過調(diào)用語句并給子程序的接口賦如要調(diào)用子程序,可以通過調(diào)用語句并給子程序的接口賦予予“實際參數(shù)實際參數(shù)”進(jìn)行。進(jìn)行。實際參數(shù)的實際參數(shù)的與形式參數(shù)的與形式參數(shù)的可以不同可以不同。實際參數(shù)的實際參數(shù)的則則必須必須與形式參數(shù)的與形式參數(shù)的相同相同。1 1迭代迭代算法算法(遞推法)遞推法)讓讓計算機(jī)對一組計算機(jī)對一組指令進(jìn)行指令進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組重復(fù)執(zhí)行,在每次執(zhí)行

6、這組指令時指令時,都從變量的,都從變量的原值推出它的一個新值原值推出它的一個新值。在數(shù)學(xué)中,迭代經(jīng)常被用來進(jìn)在數(shù)學(xué)中,迭代經(jīng)常被用來進(jìn)行數(shù)值計算行數(shù)值計算,累加,累加與累乘問題與累乘問題是最典型、最基本的一類算法,是最典型、最基本的一類算法,實際應(yīng)用中很多問題都可以歸實際應(yīng)用中很多問題都可以歸結(jié)為累加與累乘問題結(jié)為累加與累乘問題。累加:累加:S=0input nFor j=1 to ns=s + j 累乘:累乘:F=1input nFor k=1 to nF=F*k 具體方法是:具體方法是:如左圖:先給一個近如左圖:先給一個近似根的一個初值似根的一個初值x1,過,過A點點(f(x1)作作切線交

7、切線交x軸于軸于x2點。實際上是找出點。實際上是找出x2,再由再由x2找出找出x3,x4,直到滿足精度,直到滿足精度為為10-6的根的根(解解)。由點斜式方程得由點斜式方程得斜率斜率k: 【例例】求求一元高次方程一元高次方程2x3-4x2+3x-6=0在在x=1.5附近的附近的近近似似根根,要求精度為要求精度為10-6。分析:分析:“迭代法迭代法”又稱又稱“遞推法遞推法”,其,其基本思想基本思想是是把一把一個復(fù)個復(fù)雜的計算過程簡化雜的計算過程簡化為簡單過為簡單過稱的多次重復(fù)。稱的多次重復(fù)。每次每次的重復(fù)的重復(fù)都是都是從從舊值舊值的基礎(chǔ)上遞推出新值,直至滿足精度要求。的基礎(chǔ)上遞推出新值,直至滿足

8、精度要求。 11xxyykf (x1)=0-f(x1)/(x2-x1)x2=x1- f(x1)/ f (x1)得遞推公式:得遞推公式: xn+1 = xn f (xn) / f (xn)本題本題中,我們用中,我們用 f 表示表示f(xn),f1 表示表示 f (xn)634223nnnxxxf38621nnxxf19k = y = f(x)A點初的切線在點初的切線在x軸上的軸上的x2處處 有有 y2=0 而而 【思考題【思考題】小猴有桃若干,第一天吃掉一半多一個;第二天小猴有桃若干,第一天吃掉一半多一個;第二天吃剩下桃子的一半多一個;以后每天都吃尚存桃子的一半多吃剩下桃子的一半多一個;以后每天

9、都吃尚存桃子的一半多一個,到第一個,到第7天要吃時只剩一個,問小猴原有桃多少?天要吃時只剩一個,問小猴原有桃多少?分析分析:也是遞也是遞推推(迭代迭代)問題。問題。用用后一天的數(shù)推出前一天的后一天的數(shù)推出前一天的桃子數(shù)桃子數(shù)。設(shè)設(shè)第第n天天的桃子為的桃子為xn,是前一天的桃子的二分之一減去,是前一天的桃子的二分之一減去1。 121即:1nnxx?;求2)1(也就是:01xxxnn01;求2)1(xxxnn2 2窮舉算法窮舉算法窮舉法也叫枚舉法窮舉法也叫枚舉法,是,是對眾多可能解,通過多重循環(huán)一一列舉出該問對眾多可能解,通過多重循環(huán)一一列舉出該問題所有可能的解,并在逐一列舉的過程中,檢驗每個可能

10、的解是否是問題題所有可能的解,并在逐一列舉的過程中,檢驗每個可能的解是否是問題的真正解,若是,就采用這個解,否則拋棄它。窮舉的計算量是相當(dāng)大的,的真正解,若是,就采用這個解,否則拋棄它。窮舉的計算量是相當(dāng)大的,但對于計算機(jī)來說,做起來很容易但對于計算機(jī)來說,做起來很容易。采用窮舉法解題的基本思想:采用窮舉法解題的基本思想:(1 1)明確問題要求,確定枚舉對象,用合適類型的變量表示枚舉對象。)明確問題要求,確定枚舉對象,用合適類型的變量表示枚舉對象。(2 2)明確枚舉對象的取值范圍。)明確枚舉對象的取值范圍。(3 3)根據(jù)題目要求,寫出有關(guān)的條件表達(dá)式。這里條件表達(dá)式可以是數(shù))根據(jù)題目要求,寫出

11、有關(guān)的條件表達(dá)式。這里條件表達(dá)式可以是數(shù)學(xué)表達(dá)式、關(guān)系表達(dá)式或邏輯表達(dá)式。學(xué)表達(dá)式、關(guān)系表達(dá)式或邏輯表達(dá)式。(4 4)用)用循環(huán)語句枚舉出可能的解,在循環(huán)體內(nèi)驗證各種條件表達(dá)式是否循環(huán)語句枚舉出可能的解,在循環(huán)體內(nèi)驗證各種條件表達(dá)式是否滿足。滿足。(5 5)根據(jù)問題背景,優(yōu)化程序,以便縮小搜索范圍,減少程序運(yùn)行時間)根據(jù)問題背景,優(yōu)化程序,以便縮小搜索范圍,減少程序運(yùn)行時間。例例1 1: 從從110110中找出中找出所有是所有是3 3倍數(shù)的數(shù)。倍數(shù)的數(shù)。用流程圖描述解決此用流程圖描述解決此數(shù)學(xué)問題的算法數(shù)學(xué)問題的算法如如右右圖所圖所示。示。 例例2 2:百:百元買百雞。公雞元買百雞。公雞5 5

12、塊錢塊錢一只,母雞一只,母雞三塊錢三塊錢一只、小一只、小雞雞一塊錢一塊錢三只,編程求解購雞方案。三只,編程求解購雞方案。分析:分析:(1) (1) 設(shè)母雞、公雞、設(shè)母雞、公雞、小雞的數(shù)量各小雞的數(shù)量各為為x x、y y、z z,列出方程為:,列出方程為:x x+ +y y+ +z z= 100= 1005 5x x+3+3y y+ +z /3z /3= 100= 100三個未知數(shù),兩個方程,此三個未知數(shù),兩個方程,此題有若干題有若干個整數(shù)解。個整數(shù)解。(2) (2) 計算機(jī)求解此類問題,采用試湊法計算機(jī)求解此類問題,采用試湊法( (也稱窮舉法也稱窮舉法) )來實現(xiàn),來實現(xiàn),即將可能出現(xiàn)的各種情

13、況一一羅列測試,判斷是否滿足條即將可能出現(xiàn)的各種情況一一羅列測試,判斷是否滿足條件,采用循環(huán)結(jié)構(gòu)來實現(xiàn)件,采用循環(huán)結(jié)構(gòu)來實現(xiàn)。112311233 3排序算法排序算法排序排序(SortSort),就是將一組數(shù)據(jù)元素按照某個關(guān)鍵字遞),就是將一組數(shù)據(jù)元素按照某個關(guān)鍵字遞增或遞減的次序排列起來增或遞減的次序排列起來。選擇法選擇法排序:排序:找出表中關(guān)鍵字最小的元素,將其與第找出表中關(guān)鍵字最小的元素,將其與第一個元素進(jìn)行交換,再在其余元素中找出關(guān)鍵字最小的一個元素進(jìn)行交換,再在其余元素中找出關(guān)鍵字最小的元素,將其與第二個元素進(jìn)行交換。依次類推,直到將元素,將其與第二個元素進(jìn)行交換。依次類推,直到將表中

14、所有關(guān)鍵字按由小到大的順序排列好為止。表中所有關(guān)鍵字按由小到大的順序排列好為止。For i = 1 To 5 Step 1Min = a(i) For j = i + 1 To 6 Step 1 If Min a(j) Then Min = a(j) p = j End If Next jn = a(i)a(i) = a(p)a(p) = nNext iVB程序段冒泡法排序冒泡法排序:從從第一第一個開始個開始,對數(shù)組中兩兩相鄰的元素比較,對數(shù)組中兩兩相鄰的元素比較,值,值較小較小的放的放在前面,值較大在前面,值較大的放的放在后面,一輪在后面,一輪比較完畢比較完畢,一個最大的數(shù),一個最大的數(shù)沉底

15、成為數(shù)組中的最后一個元素,一些較小的數(shù)如同氣泡一沉底成為數(shù)組中的最后一個元素,一些較小的數(shù)如同氣泡一樣上浮一個位置樣上浮一個位置。n n個數(shù),經(jīng)過個數(shù),經(jīng)過n-1n-1輪比較后完成排序輪比較后完成排序。a(1)a(1)a(2)a(2)a(3)a(3)a(4)a(4)a(5)a(5)a(6)a(6)第第1 1輪比較輪比較6 8 3 2 7 6 8 3 2 7 a(1)a(1)a(2)a(2)a(3)a(3)a(4)a(4)a(5)a(5) 第第2 2輪比較輪比較6 3 2 7 6 3 2 7 9 9a(1)a(1)a(2)a(2)a(3)a(3)a(4)a(4) 第第3 3輪比較輪比較3 2 6

16、 3 2 6 8 9 8 9a(1)a(1)a(2)a(2)a(3)a(3) 第第4 4輪比較輪比較2 3 2 3 7 8 9 7 8 9a(1)a(1)a(2)a(2) 第第5 5輪比較輪比較2 2 6 7 8 9 6 7 8 9 原始數(shù)據(jù)原始數(shù)據(jù)8 6 9 3 2 78 6 9 3 2 7a(1)a(1)a(2)a(2)a(3)a(3)a(4)a(4)a(5)a(5)a(6)a(6)4. 4.遞歸算法:遞歸算法:程序調(diào)用自身的編程技巧稱為程序調(diào)用自身的編程技巧稱為遞歸(遞歸(recursionrecursion)。)。 一個過程或函數(shù)在其定義或說明中又直接或間接調(diào)一個過程或函數(shù)在其定義或說

17、明中又直接或間接調(diào)用自身的一種方法,它通常把一個大型復(fù)雜的問題層層用自身的一種方法,它通常把一個大型復(fù)雜的問題層層轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來求解,遞轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多歸策略只需少量的程序就可描述出解題過程所需要的多次重復(fù)計算,大大地減少了程序的代碼量。次重復(fù)計算,大大地減少了程序的代碼量。 注意:注意: (1) (1) 遞歸就是在過程或函數(shù)里調(diào)用自身遞歸就是在過程或函數(shù)里調(diào)用自身; ; (2) (2) 在使用遞增歸策略時,必須有一個明確的遞歸在使用遞增歸策略時,必須有一個明確的遞歸結(jié)束條件,稱為遞歸出口

18、。結(jié)束條件,稱為遞歸出口。遞歸的遞歸的原理,其實就是使用棧原理,其實就是使用棧(stack(stack). ).棧是限定在一端進(jìn)行插入和刪除的線性表。棧是按照棧是限定在一端進(jìn)行插入和刪除的線性表。棧是按照“先進(jìn)先進(jìn)后出后出”或者或者“后進(jìn)先出后進(jìn)先出”的原則組織數(shù)據(jù)的。的原則組織數(shù)據(jù)的。入棧入棧出棧出棧棧頂棧頂棧底棧底A1A1A2A2AnAn 棧示意圖棧示意圖例例1:遞歸法求:遞歸法求N!【解題解題】遞歸過程在自身定義的內(nèi)部調(diào)用遞歸過程在自身定義的內(nèi)部調(diào)用自己,自己,fac(n)=n! 的的遞歸函數(shù):遞歸函數(shù):1) 1fac(*11)fac(nnnnn進(jìn)進(jìn)棧棧出出棧棧當(dāng)當(dāng)n=4n=4時,求解過

19、程:時,求解過程:Function fac(n As Integer) As LongFunction fac(n As Integer) As Long If n = 1 Then If n = 1 Then fac fac = 1= 1 ElseElse fac fac = n = n * * fac(n - 1) fac(n - 1) End End If IfEnd End FunctionFunction遞歸函數(shù)程序段:遞歸函數(shù)程序段:例例2 2:源于源于印度一個古老印度一個古老傳說。傳說。大大梵天創(chuàng)造世界的時候做了三根金剛石柱子,在一根柱子梵天創(chuàng)造世界的時候做了三根金剛石柱子,在一

20、根柱子上從下往上按照大小順序摞著上從下往上按照大小順序摞著6464片黃金圓盤片黃金圓盤。大大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且在另一根柱子上。并且規(guī)定:規(guī)定:,。不論不論白天黑夜,總有一個僧侶在白天黑夜,總有一個僧侶在按照上面的按照上面的法則移動這些法則移動這些金片。僧侶們金片。僧侶們預(yù)言,當(dāng)所有的金片都從梵天穿好的那預(yù)言,當(dāng)所有的金片都從梵天穿好的那根柱根柱上上移到另外一移到另外一根柱上根柱上時,世界就將在一聲霹靂中消滅,而時,世界就將在一聲霹靂中消滅,而梵塔、廟宇和眾生也都將同歸于盡。梵塔、廟宇和眾生也都將同歸于盡。如果考慮一下把如果考慮一下把6464片金片,由一根針上移到另一根針上,片金片,由一根針上移到另一根針上,并且始終保持上小下大的順序。這需要多少次移動呢并且始終保持上小下大的順序。這需要多少次移動呢? ?

溫馨提示

  • 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

提交評論