版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基本編程技術基本編程技術 要目要目n循環(huán)程序設計循環(huán)程序設計n簡單的重復動作簡單的重復動作n遞推、迭代和逼近遞推、迭代和逼近n浮點計算的誤差累積浮點計算的誤差累積n從循環(huán)的中間退出從循環(huán)的中間退出n循環(huán)中的變量循環(huán)中的變量程序設計:關注基本技術和規(guī)律程序設計:關注基本技術和規(guī)律n要完成一個程序,首先要分析問題尋找解決方案,這需要要完成一個程序,首先要分析問題尋找解決方案,這需要聰明才智和想象力,以及相關領域的知識和技術聰明才智和想象力,以及相關領域的知識和技術n要把設計變成可運行程序,既需要發(fā)揮智力,又需要有條要把設計變成可運行程序,既需要發(fā)揮智力,又需要有條有理的工作,還要非常細心。有理的工
2、作,還要非常細心。一個小錯誤一個小錯誤就可能使程序無就可能使程序無法編譯或法編譯或不能正確執(zhí)行不能正確執(zhí)行 n學習程序設計需要注意規(guī)律性的東西學習程序設計需要注意規(guī)律性的東西n三種流程模式是重要總結,需要掌握其使用方法和規(guī)律三種流程模式是重要總結,需要掌握其使用方法和規(guī)律q順序模式最簡單順序模式最簡單q選擇模式:要確定判斷條件以及不同情況下的動作選擇模式:要確定判斷條件以及不同情況下的動作q開始學習編程的難點就在實現重復執(zhí)行的循環(huán)。重復執(zhí)開始學習編程的難點就在實現重復執(zhí)行的循環(huán)。重復執(zhí)行比較復雜,牽涉問題多行比較復雜,牽涉問題多循環(huán)程序設計循環(huán)程序設計n在程序里寫循環(huán)的基礎是發(fā)現計算中需要循環(huán)
3、。應注意計在程序里寫循環(huán)的基礎是發(fā)現計算中需要循環(huán)。應注意計算中的重復性動作,通過引進循環(huán)可能統一描述和處理算中的重復性動作,通過引進循環(huán)可能統一描述和處理n常見的重復動作實例,如需要:常見的重復動作實例,如需要:q對一批類似數據做同樣的加工處理對一批類似數據做同樣的加工處理q累積一批可以按規(guī)律計算出的數據(累加等)累積一批可以按規(guī)律計算出的數據(累加等)q反復從一個結果算出下一結果(遞推)反復從一個結果算出下一結果(遞推)n有些情況可以或需要用循環(huán)處理:有些情況可以或需要用循環(huán)處理:q如果重復次數確定,可以寫一些獨立操作,但重復次數如果重復次數確定,可以寫一些獨立操作,但重復次數多時就應該考
4、慮用循環(huán)統一描述,以簡化程序多時就應該考慮用循環(huán)統一描述,以簡化程序q如果重復次數無法確定,就必須用循環(huán)。因為這時不知如果重復次數無法確定,就必須用循環(huán)。因為這時不知道寫多少個獨立的操作,無法處理道寫多少個獨立的操作,無法處理基本循環(huán)技術基本循環(huán)技術n例:求例:求13到到315的所有數的平方根之和的所有數的平方根之和可以一個個地加,但更方便的是寫一個循環(huán)完成工作可以一個個地加,但更方便的是寫一個循環(huán)完成工作q需要一個變量保存部分和,逐步把各個平方根加上去需要一個變量保存部分和,逐步把各個平方根加上去q需要一個變量保存變動軌跡,從初值開始每次修改需要一個變量保存變動軌跡,從初值開始每次修改n很典
5、型很典型for循環(huán)。假定已有總和變量循環(huán)。假定已有總和變量sum和循環(huán)變量和循環(huán)變量n:for (sum = 0.0, n = 13; n = 13; -n) sum += sqrt(n);n兩個循環(huán)等效。沒有特殊需要都應采用向上循環(huán)兩個循環(huán)等效。沒有特殊需要都應采用向上循環(huán)n請用請用while語句重寫上面兩種方式語句重寫上面兩種方式循環(huán)控制和浮點數循環(huán)控制和浮點數n求求 13, 315 間每隔間每隔7的各整數之和也很容易的各整數之和也很容易q課堂練習課堂練習n一般不用浮點數控制循環(huán)一般不用浮點數控制循環(huán),尤其是增量為小數或包含小數,尤其是增量為小數或包含小數時。例:求從時。例:求從0到到10
6、0每隔每隔0.2的數的平方根之和。寫:的數的平方根之和。寫:double sum, x;for (sum=0.0, x=0.2; x=100.0; x+=0.2) sum += sqrt(x);有問題。浮點計算有誤差,不能保證循環(huán)體執(zhí)行有問題。浮點計算有誤差,不能保證循環(huán)體執(zhí)行500次次應寫:應寫:int n; double sum;for (sum = 0.0, n = 1; n = 500; +n) sum += sqrt(0.2*n);求一系列完全平方數(多種算法)求一系列完全平方數(多種算法)n考慮打印出考慮打印出 1 到到 200 間的完全平方數。存在多種方法間的完全平方數。存在多種
7、方法n方法一:逐個檢查區(qū)間里各個整數,遇到平方數就打印。方法一:逐個檢查區(qū)間里各個整數,遇到平方數就打印。重復做,每次檢查一個數。循環(huán)的框架為:重復做,每次檢查一個數。循環(huán)的框架為:for (n = 1; n = 200; +n) if (n 是完全平方數是完全平方數) 打印打印 n;n其中的一個數是否完全平方數沒有直接判斷手段??梢钥计渲械囊粋€數是否完全平方數沒有直接判斷手段。可以考慮順序檢查,是否有某個數的平方恰為慮順序檢查,是否有某個數的平方恰為n這構成了(循環(huán)內的)新循環(huán),需要另一循環(huán)變量這構成了(循環(huán)內的)新循環(huán),需要另一循環(huán)變量另另m從從1開始遞增,直至開始遞增,直至m*m大于大于
8、n結束,等于就輸出結束,等于就輸出n:for (m = 1; m * m = n; +m) if (m * m = n) 打印打印 n;求一系列完全平方數求一系列完全平方數n綜合起來可得到完整程序:綜合起來可得到完整程序:#include int main () int m, n; for (n = 1; n = 200; n+) for (m = 1; m * m = n; m+) if (m * m = n) printf(%d , n); printf(n); /* 最后輸出一個換行符最后輸出一個換行符 */ return 0;n內層循環(huán)結束:內層循環(huán)結束:q找到找到m使使m*m=n(n
9、是完全平方數)是完全平方數)q試探了所有可能,但都不成功(試探了所有可能,但都不成功(n不是)不是)求一系列完全平方數求一系列完全平方數n可以考慮把判斷完全平方數定義為函數(可以考慮把判斷完全平方數定義為函數(請自己做請自己做)n方法二:可看到需要打印的一定是從方法二:可看到需要打印的一定是從1開始連續(xù)的一些整數開始連續(xù)的一些整數的平方,可以從的平方,可以從1開始打印到某個數平方大于開始打印到某個數平方大于200for (n = 1; n * n = 200; +n) printf(“%d ”, n * n); /*注意打印什么注意打印什么*/n方法一:產生所有備選數據(方法一:產生所有備選數
10、據(1到到200的整數),檢查排除的整數),檢查排除不合格的。生成與檢查是解決問題的常用方法。不合格的。生成與檢查是解決問題的常用方法。n方法二:是針對具體問題的特殊方法,通常更簡單,效率方法二:是針對具體問題的特殊方法,通常更簡單,效率更高。解決問題時應特別注意挖掘這種特殊方法更高。解決問題時應特別注意挖掘這種特殊方法判斷素數(定義謂詞)判斷素數(定義謂詞)n寫一個函數判斷整數是否為素數寫一個函數判斷整數是否為素數n類型特征可用類型特征可用 int isprime(int),令其返回令其返回0/1值值nn是素數當且僅當它沒有真因子。是素數當且僅當它沒有真因子。m是是n的因子可以用條件的因子可
11、以用條件(n%m = 0)描述,如果描述,如果mn 就夠了。函數定義:就夠了。函數定義:int isprime (int n) /* n是否素數是否素數 */ int m = 2; for ( ; m * m = n; m+) if (n % m = 0) return 0; return 1; /* 沒有因子,是素數沒有因子,是素數 */判斷素數判斷素數n從循環(huán)中退出:從循環(huán)中退出:isprime發(fā)現一個因子就可做結論發(fā)現一個因子就可做結論return使使函數結束函數結束,使循環(huán)沒做到條件不成立就結束了,使循環(huán)沒做到條件不成立就結束了這也是一種結束循環(huán)的方式這也是一種結束循環(huán)的方式n這個函數
12、不完善,對于這個函數不完善,對于1它將給出它將給出“是素數是素數”的結論,對負的結論,對負數給出的結果也可能不合理數給出的結果也可能不合理q應該在循環(huán)前處理特殊情況:應該在循環(huán)前處理特殊情況:qif (n = 1) return 0;循環(huán)程序設計:簡單總結循環(huán)程序設計:簡單總結n寫出循環(huán)的基礎是發(fā)現程序里需要循環(huán)(前面說過)。但寫出循環(huán)的基礎是發(fā)現程序里需要循環(huán)(前面說過)。但發(fā)現重復動作到寫好循環(huán),還需考慮和解決許多具體問題發(fā)現重復動作到寫好循環(huán),還需考慮和解決許多具體問題n首先是確定循環(huán)體的每次執(zhí)行中完成哪些工作。這是實現首先是確定循環(huán)體的每次執(zhí)行中完成哪些工作。這是實現循環(huán)的基礎,也是把
13、確定一系列工作的實現歸結到確定一循環(huán)的基礎,也是把確定一系列工作的實現歸結到確定一次工作的實現次工作的實現n下一問題是循環(huán)控制,要確定循環(huán)怎樣開始、繼續(xù)和停止。下一問題是循環(huán)控制,要確定循環(huán)怎樣開始、繼續(xù)和停止。循環(huán)控制牽涉的問題很多,需要確定:循環(huán)控制牽涉的問題很多,需要確定:q循環(huán)中需要使用的變量循環(huán)中需要使用的變量q循環(huán)開始前應該給它們什么初值,循環(huán)體中如何修改循環(huán)開始前應該給它們什么初值,循環(huán)體中如何修改q在什么情況下應該繼續(xù)(或應該終止)循環(huán),循環(huán)終止在什么情況下應該繼續(xù)(或應該終止)循環(huán),循環(huán)終止后如何得到需要的結果,等等后如何得到需要的結果,等等n具體問題還包括使用語言的哪種結構
14、實現循環(huán)等具體問題還包括使用語言的哪種結構實現循環(huán)等 從循環(huán)中退出從循環(huán)中退出n通過循環(huán)條件確定循環(huán)結束或繼續(xù)是最規(guī)范清晰的做法。通過循環(huán)條件確定循環(huán)結束或繼續(xù)是最規(guī)范清晰的做法。但有時這種方式不合用,需要從執(zhí)行的循環(huán)中間退出但有時這種方式不合用,需要從執(zhí)行的循環(huán)中間退出前面素數判斷函數有這種情況,通過前面素數判斷函數有這種情況,通過return退出退出寫一個函數寫一個函數first5(int m, int n)first5(int m, int n)要求函數要求函數first5first5往屏幕上輸出往屏幕上輸出m,nm,n之間第一個能被之間第一個能被5 5整除整除的數,例如用的數,例如用m
15、ainmain函數調用函數調用first5(7, 12)first5(7, 12)則輸出則輸出10,10,調調用函數用函數first5(16,19)first5(16,19)則輸出則輸出”No such nmuber!”No such nmuber!”。循環(huán)中的變量循環(huán)中的變量n下面總結循環(huán)程序設計中的一些情況和問題下面總結循環(huán)程序設計中的一些情況和問題n循環(huán)中常出現幾類變量,注意這些有助于對循環(huán)的思考和循環(huán)中常出現幾類變量,注意這些有助于對循環(huán)的思考和分析。也是寫循環(huán)程序的經驗總結分析。也是寫循環(huán)程序的經驗總結注意:這一分類并不絕對,不同類別間沒有清晰界限注意:這一分類并不絕對,不同類別間沒
16、有清晰界限1.循環(huán)控制變量(循環(huán)控制變量(循環(huán)變量循環(huán)變量):它們在循環(huán)前設初值,循環(huán)):它們在循環(huán)前設初值,循環(huán)中遞增中遞增/遞減,達到遞減,達到/超過界限時循環(huán)結束。它們控制循環(huán)的超過界限時循環(huán)結束。它們控制循環(huán)的進行進行/結束。結束。for語句的設計就是考慮這類變量的特點語句的設計就是考慮這類變量的特點for(n = 0; n = 0; -n) . .for(n = 2; n 52; n += 4) .這種循環(huán)是固定次數的循環(huán),有可能展開為一組語句這種循環(huán)是固定次數的循環(huán),有可能展開為一組語句但重復次數太多或可能變動,就應該用循環(huán)描述但重復次數太多或可能變動,就應該用循環(huán)描述循環(huán)中的變量
17、循環(huán)中的變量2.累積變量:常用累積變量:常用 += 或或 *= 等更新。其初值經常用相關運算等更新。其初值經常用相關運算的單位元(對加法用的單位元(對加法用0;乘法用;乘法用1為初值)。循環(huán)結束時,為初值)。循環(huán)結束時,這種變量的終值常被作為循環(huán)計算的結果這種變量的終值常被作為循環(huán)計算的結果3.遞推變量:前兩類變量的推廣。通常是幾個協同工作的變遞推變量:前兩類變量的推廣。通常是幾個協同工作的變量,每次循環(huán)由幾個變量推出一個新值,其余依次更新量,每次循環(huán)由幾個變量推出一個新值,其余依次更新對三個變量對三個變量 x1、x2、x3,循環(huán)體可能有語句序列:循環(huán)體可能有語句序列:x1 = x2;x2 = x3;x3 = . x1 . x2 .;n要寫好一個循環(huán),可以注意其中需要哪些變量,參考上面要寫好一個循環(huán),可以注意其中需要哪些變量,參考上面的分類確定它們的用途的操作方式的分類確定它們的用途的操作方式循環(huán)程序設計循環(huán)程序設計n寫循環(huán)時需要考慮和解決的問題:寫循環(huán)時需要考慮和解決的問題:q循環(huán)涉及到哪些變量,需要引進哪些臨時性變量?循環(huán)涉及到哪些變量,需要引進哪些臨時性變量?q循環(huán)如何開始?循環(huán)開始前給各個變量什么初值?循環(huán)循環(huán)如何開始?循環(huán)開始前給各個變量什么初值?循環(huán)中各變量的值如何改變?中各變量的值如何改變?q什么情況下繼續(xù)(或終止)循環(huán)?什么情況下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學生畢業(yè)贈言15篇
- 文藝晚會策劃方案范文錦集八篇
- 產品銷售合同六篇
- 團隊精神演講稿(匯編15篇)
- 校本研修工作總結
- 企業(yè)員工工作計劃
- 我的拿手好戲作文500字10篇
- 數學學習計劃合集10篇
- 護士個人年終述職報告4篇
- 春季開學典禮校長演講稿合集6篇
- 天翼云從業(yè)者認證考試題庫及答案
- 2024國際海外銷售代理合同范本
- 上海市市轄區(qū)(2024年-2025年小學四年級語文)人教版期末考試(上學期)試卷及答案
- 期末檢測卷(試題)-2024-2025學年三年級上冊統編版語文
- 膝關節(jié)骨性關節(jié)炎階梯治療
- 2024-2030年中國工業(yè)真空系統行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 新疆第十三師新星經濟技術開發(fā)區(qū)管委會招聘筆試題庫2024
- 2024-2030年中國毫米波行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 2024年全國初中數學競賽試題含答案
- 軟裝公司運營計劃書
- 中醫(yī)臨床基礎研究設計方法與進展智慧樹知到期末考試答案2024年
評論
0/150
提交評論