問題求解論題1-4:算法的基本結(jié)構(gòu)PPT課件_第1頁
問題求解論題1-4:算法的基本結(jié)構(gòu)PPT課件_第2頁
問題求解論題1-4:算法的基本結(jié)構(gòu)PPT課件_第3頁
問題求解論題1-4:算法的基本結(jié)構(gòu)PPT課件_第4頁
問題求解論題1-4:算法的基本結(jié)構(gòu)PPT課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、問題求解論題1-4:算法的基本結(jié)構(gòu)陶先平2021-10-28吃一只湯包的“算法”順序很重要:將包子從蒸籠中輕輕提起,and then將包子慢慢移動(dòng)到面前的碟子中,and then在包子的上方咬開一個(gè)小口,and then通過小口吸食包子里的湯,and then將包子送入口中完成!順序,是組織算法的最基本的方法按照算法步驟,順序書寫指令如何理解下面這句話? My second remark is that our intellectual powers are rather geared to master static relations and that our powers to visu

2、alize processes evolving in time are relatively poorly developed. For that reason we should do our utmost to shorten the conceptual gap between the static program and the dynamic process, to make the correspondence between the program (spread out in text space) and the process (spread out in time) a

3、s trivial as possible. -E.W.Dijkstra順序結(jié)構(gòu)產(chǎn)生最小的gap問題2:但是我們并不只吃一只,怎么辦?Bound iteration如果即使飽了,也希望再品嘗一個(gè),該怎么辦?Unbound iteration問題:你能正確選擇采用何種策略設(shè)計(jì)循環(huán)嗎?程序中的死循環(huán),一定是什么原因?問題: 如果說順序、分支和循環(huán)構(gòu)成了算法組織的三個(gè)基本結(jié)構(gòu),那么順序結(jié)構(gòu)是算法組織的基本中的基本。為什么?嵌套結(jié)構(gòu):循環(huán)嵌套冒泡冒泡排序排序冒泡排序的算法描述關(guān)于Goto語句#includestdio.hint main(void) int n=0; printf(input a st

4、ring :n);loop: if(getchar()!=n) n+; goto loop; printf(%d,n); Goto語句#include int main(void) int i, j, k; for (i = 0; i 10; i+) for (j = 0; j 10; j+) for (k = 0; k 10; k+) if (i + j + k = 10) break; printf(%d %d %d, i, j, k); #include int main(void) int i, j, k; for (i = 0; i 10; i+) for (j = 0; j 10;

5、 j+) for (k = 0; k 10; k+) if (i + j + k = 10) goto exit_for; exit_for: printf(%d %d %d, i, j, k);如果不加限制地使用goto語句: 面條式的程序: 文本空間中的程序: 下鍋前的面條 運(yùn)行中的執(zhí)行序列: 下鍋后的面條 難以想象! 文本空間和時(shí)間空間上巨大的gap重新閱讀下面這句話? My second remark is that our intellectual powers are rather geared to master static relations and that our pow

6、ers to visualize processes evolving in time are relatively poorly developed. For that reason we should do our utmost to shorten the conceptual gap between the static program and the dynamic process, to make the correspondence between the program (spread out in text space) and the process (spread out

7、 in time) as trivial as possible. -E.W.Dijkstra順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)這三種結(jié)構(gòu)產(chǎn)生的gap?Goto結(jié)構(gòu)產(chǎn)生的gap?理解并記住:Why?何為:控制結(jié)構(gòu)的表達(dá)能力 Various minimal sets of control structures have been identified, meaning that in certain technical senses other control structures can be replaced by appropriate combinations of those in the

8、minimal set, so that in practice these are the only ones needed.一種新的算法組織方法:子程序(過程,函數(shù))問題:什么情況下,我們會(huì)想到用過程來“封裝”一段算法? 這是一種自底向上的思維方式什么情況下,我們會(huì)想到將一個(gè)算法“分解”為若干個(gè)“子算法”的聯(lián)合? 這是一種自頂向下的思維方式兩種思維方法的碰撞產(chǎn)生了“結(jié)構(gòu)化程序設(shè)計(jì)”一種新的算法組織方法:子程序(過程,函數(shù)) 過程的優(yōu)點(diǎn): 復(fù)用 封裝 抽象 豐富了算法結(jié)構(gòu): 順序、 分支、循環(huán) 調(diào)用若干問題子程序這么一種算法(或者說程序)的構(gòu)造和使用方式,其數(shù)學(xué)基礎(chǔ)是什么?從它的數(shù)學(xué)基礎(chǔ)出發(fā)

9、,你能夠洞悉程序設(shè)計(jì)中關(guān)于子程序的以下概念嗎?形式參數(shù)、實(shí)在參數(shù)、傳參變量的作用域子程序的副作用遞歸:自己調(diào)用自己的過程它怎么就遞歸了呢? 定義Move N from X to Y using Z 當(dāng)N=4時(shí)問題:它怎么就遞歸了呢?XYZ遞歸:自己調(diào)用自己的過程 例題:從一個(gè)很長(zhǎng)的數(shù)列中,怎樣找到最大的數(shù)?觀察: 遞歸調(diào)用自身時(shí),輸入的參數(shù)相比前一次調(diào)用時(shí)使用的參數(shù),在值上通常會(huì)有什么特點(diǎn)?問題:為什么這個(gè)問題能夠用遞歸的方法去做?問題:為什么這個(gè)問題能夠用遞歸的方法去做?思考:遞歸方法和數(shù)學(xué)歸納法有關(guān)聯(lián)關(guān)系嗎?如何確定循環(huán)過程是正確的?循環(huán)不變式(循環(huán)不變量): 一個(gè)邏輯表達(dá)式 該表達(dá)式通??捎脕肀碚餮h(huán)的功能 循環(huán)初試時(shí)為真 在循環(huán)執(zhí)行過程中始終為“真” 循環(huán)結(jié)束時(shí),必定為真下例

溫馨提示

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

評(píng)論

0/150

提交評(píng)論