專業(yè)C4講流程控制ppt課件_第1頁
專業(yè)C4講流程控制ppt課件_第2頁
專業(yè)C4講流程控制ppt課件_第3頁
專業(yè)C4講流程控制ppt課件_第4頁
專業(yè)C4講流程控制ppt課件_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單擊此處編輯母版副標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式 華中農(nóng)業(yè)大學(xué)理學(xué)院華中農(nóng)業(yè)大學(xué)理學(xué)院 章章 英英 C/C+語言程序設(shè)計語言程序設(shè)計 本講知識點:本講知識點: 三種循環(huán)構(gòu)造的掌握三種循環(huán)構(gòu)造的掌握 開關(guān)語句的掌握開關(guān)語句的掌握 跳轉(zhuǎn)語句、前往語句的掌握跳轉(zhuǎn)語句、前往語句的掌握 重點:重點: 流程控制構(gòu)造流程控制構(gòu)造 難點:難點: for循環(huán)構(gòu)造的執(zhí)行順序循環(huán)構(gòu)造的執(zhí)行順序第四講第四講 流程控制流程控制一、流程控制一、流程控制 對于算法設(shè)計、算法描畫中所出現(xiàn)的條件分支、循對于算法設(shè)計、算法描畫中所出現(xiàn)的條件分支、循環(huán)等構(gòu)造,環(huán)等構(gòu)造,C+言語需求有與之相應(yīng)語句實現(xiàn)。言語需求有與之相應(yīng)語句實現(xiàn)

2、。 曾經(jīng)證明:任何復(fù)雜的計算流程均可以被分解為以曾經(jīng)證明:任何復(fù)雜的計算流程均可以被分解為以下下3種構(gòu)造及其嵌套。種構(gòu)造及其嵌套。 順序構(gòu)造順序構(gòu)造 分支構(gòu)造分支構(gòu)造C+支持兩路分支、多分支支持兩路分支、多分支 循環(huán)構(gòu)造循環(huán)構(gòu)造C+提供提供3種根本循環(huán)語句種根本循環(huán)語句 C+還提供以下流程跳轉(zhuǎn)語句還提供以下流程跳轉(zhuǎn)語句(break,continue,return,goto等等),以方便程序構(gòu)造,以方便程序構(gòu)造控制??刂?。條件分支條件分支(if)語句語句 條件分支條件分支 整個構(gòu)造整個構(gòu)造“單入口、單出口單入口、單出口 if(表達式表達式) 語句語句1; else 語句語句2; if(表達式表達

3、式) 語句串語句串1; else 語句串語句串2; 表達式表達式 語句語句1 1 語句語句2 2 假零假零真非零真非零循環(huán)語句循環(huán)語句 C+提供提供3種實現(xiàn)循環(huán)算法的語句種實現(xiàn)循環(huán)算法的語句 while循環(huán)循環(huán) dowhile循環(huán)循環(huán) for循環(huán)循環(huán) 這這3種語句可以相互轉(zhuǎn)換種語句可以相互轉(zhuǎn)換 只用其中恣意一種格式可實現(xiàn)其他兩種格式編寫的只用其中恣意一種格式可實現(xiàn)其他兩種格式編寫的語句。語句。 它們各有其最適宜的運用場所。它們各有其最適宜的運用場所。 留意留意 “循環(huán)體語句執(zhí)行終了僅為循環(huán)體語句執(zhí)行終了僅為“終了本輪循環(huán),預(yù)備終了本輪循環(huán),預(yù)備進入下一輪循環(huán);進入下一輪循環(huán); 整個循環(huán)能否終了

4、,主要看整個循環(huán)能否終了,主要看“繼續(xù)循環(huán)條件能否為繼續(xù)循環(huán)條件能否為假。應(yīng)該防止無窮循環(huán)亦稱假。應(yīng)該防止無窮循環(huán)亦稱“永真循環(huán)或永真循環(huán)或“死循死循環(huán)。環(huán)。while循環(huán)語句循環(huán)語句 表達式為能否繼續(xù)循環(huán)的條件;表達式為能否繼續(xù)循環(huán)的條件; 先判別條件,循環(huán)體能夠執(zhí)行先判別條件,循環(huán)體能夠執(zhí)行0次、次、1次或多次。次或多次。 while(表達式表達式) 循環(huán)體語句循環(huán)體語句; while(表達式表達式) 循環(huán)體語句串循環(huán)體語句串; 表達式表達式 循環(huán)體語句循環(huán)體語句 假零假零真非零真非零dowhile循環(huán)循環(huán) 先執(zhí)行循環(huán)體,使循環(huán)體至少被執(zhí)行一次;先執(zhí)行循環(huán)體,使循環(huán)體至少被執(zhí)行一次; 建議

5、用一對花括號將循環(huán)體語句包圍起來即使循環(huán)體為建議用一對花括號將循環(huán)體語句包圍起來即使循環(huán)體為單語句,并且將右花括號寫在單語句,并且將右花括號寫在while前前(見上面的第二種見上面的第二種寫法寫法),以明顯地域別于,以明顯地域別于while循環(huán)。循環(huán)。 do 循環(huán)體語句循環(huán)體語句; while(表達式表達式); do 循環(huán)體語句循環(huán)體語句; while(表達式表達式);表達式表達式 循環(huán)體語句循環(huán)體語句 假零假零真真#include /4-1.cppusing namespace std;int main() int i,sum; i=1; while(i=100) sum += i; cou

6、tsum = sum endl; return 0;程序改錯程序改錯請用請用do-while改寫!改寫!sum=0;i+;#include /4-2.cppusing namespace std;int main() int i,sum=0; i=1; do sum += i; i+; while(i=100); coutsum = sum endl; return 0;用用do-while改寫改寫實戰(zhàn)練習(xí)實戰(zhàn)練習(xí) 輸出正整數(shù)輸出正整數(shù)n的一切約數(shù)。的一切約數(shù)。#include /4-3.cpp#includeusing namespace std;int main()int i,n;cout

7、n;if (n1) exit(0);coutn的一切約數(shù)為:的一切約數(shù)為:;i=0;while(in)i+;if (n%i=0) couti ;coutendl; return 0;for循環(huán)循環(huán) 表達式表達式1 1被且僅被執(zhí)行一次;被且僅被執(zhí)行一次; 3 3個表達式均可缺省,缺省表達式個表達式均可缺省,缺省表達式2 2表示表示truetrue,但兩個分號不能缺?。?,但兩個分號不能缺??; 可以將循環(huán)體語句與表達式可以將循環(huán)體語句與表達式3 3合并。合并。for(表達式表達式1; 表達式表達式2; 表達式表達式3) 循環(huán)體語句循環(huán)體語句;for(表達式表達式1; 表達式表達式2; 表達式表達式3

8、) 循環(huán)體語句串循環(huán)體語句串;表達式表達式2 2 循環(huán)體語句循環(huán)體語句 假假(零零) 真真 (非零非零) 表達式表達式3 3 表達式表達式1 1 用公式:用公式:/4 1-1/3+1/5-1/7+求求的近似值,直到最后一項的絕對值小于的近似值,直到最后一項的絕對值小于10-6為止為止實戰(zhàn)練習(xí)實戰(zhàn)練習(xí)#include /4-4.cpp#includeusing namespace std;int main()float n,t,pi;int s;t=1; pi=0;s=1;for(n=1.0; fabs(t)1e-6; n=n+2 )pi=pi+t;s=-s;t=s/n;pi=pi*4;cout

9、pi=piendl; return 0;開關(guān)語句開關(guān)語句switch(整型或枚舉型表達式整型或枚舉型表達式)case 常量表達式常量表達式1: 語句組語句組1;case 常量表達式常量表達式2: 語句組語句組2; case 常量表達式常量表達式n: 語句組語句組n;default: 語句組語句組n+1;實戰(zhàn)練習(xí)實戰(zhàn)練習(xí) 輸入一個十進制數(shù),根據(jù)輸入的數(shù)輸出所對應(yīng)輸入一個十進制數(shù),根據(jù)輸入的數(shù)輸出所對應(yīng)的星期幾,假設(shè)所輸入的數(shù)小于的星期幾,假設(shè)所輸入的數(shù)小于1或大于或大于7,那,那么輸出么輸出“出錯。出錯。#include /4-5.cppusing namespace std;int main(

10、)int day;coutday;switch (day)case 1: cout星期一星期一endl; case 2: cout星期二星期二endl; case 3: cout星期三星期三endl; case 4: cout星期四星期四endl; case 5: cout星期五星期五endl; case 6: cout星期六星期六endl; case 7: cout星期天星期天endl; default:cout超出范圍!超出范圍!endl;return 0;#include /改良后的程序改良后的程序 4-6.cppusing namespace std;int main()int day

11、;coutday;switch (day)case 1: cout星期一星期一endl; break;case 2: cout星期二星期二endl; break;case 3: cout星期三星期三endl; break;case 4: cout星期四星期四endl; break;case 5: cout星期五星期五endl; break;case 6: cout星期六星期六endl; break;case 7: cout星期天星期天endl; break;default:cout超出范圍!超出范圍!endl;return 0;實戰(zhàn)練習(xí)實戰(zhàn)練習(xí)標(biāo)題:將百分制的分數(shù)轉(zhuǎn)換為標(biāo)題:將百分制的分數(shù)轉(zhuǎn)換

12、為5個等級個等級90分以上為分以上為A,8089分為分為B,7079分為分為C,6069分為分為D,60分以下為分以下為E。例如,輸入例如,輸入75,那么顯示,那么顯示C?!痉治觥肯扰袆e輸入的數(shù)據(jù)能否在合理的分數(shù)范圍【分析】先判別輸入的數(shù)據(jù)能否在合理的分數(shù)范圍0100內(nèi),然后再判別是哪個分數(shù)段:內(nèi),然后再判別是哪個分數(shù)段:90分以上輸出分以上輸出A,8089分分輸出輸出B,7079分輸出分輸出C,6069分輸出分輸出D,否那么顯示,否那么顯示E。 用用if語句實現(xiàn)語句實現(xiàn)if( s100) cout=90) cout=80) cout=70) cout=60) coutDn;elsecoutE

13、n;#include /4-7.cppusing namespace std;int main()int s;couts;if( s100) couterrorn;else用用switch語句實現(xiàn)語句實現(xiàn) 運用運用switch語句,當(dāng)然最笨的方法是每一個分數(shù)一個語句,當(dāng)然最笨的方法是每一個分數(shù)一個case分支。有沒有簡化的方法呢?分支。有沒有簡化的方法呢?switch(s/10) /根據(jù)轉(zhuǎn)換值進展分支選擇根據(jù)轉(zhuǎn)換值進展分支選擇case 10:case 9:coutAn;break;case 8:coutBn;break;case 7: coutCn;break;case 6:coutDn;br

14、eak;default:coutEn;return 0; 跳轉(zhuǎn)語句跳轉(zhuǎn)語句 break 僅終了其所在的一層循環(huán)語句或者開關(guān)語句僅終了其所在的一層循環(huán)語句或者開關(guān)語句 continue 提早終了本輪循環(huán),預(yù)備進入下一輪循環(huán)提早終了本輪循環(huán),預(yù)備進入下一輪循環(huán) return 前往語句,用于函數(shù)終了時前往語句,用于函數(shù)終了時 return; 對應(yīng)與前往類型為對應(yīng)與前往類型為 void 的函數(shù)的函數(shù) return 表達式表達式; 表達式的數(shù)據(jù)類型對應(yīng)于函數(shù)的前往類型表達式的數(shù)據(jù)類型對應(yīng)于函數(shù)的前往類型 goto 不提倡運用。建議不要運用。不提倡運用。建議不要運用。for循環(huán)中的循環(huán)中的break及及c

15、ontinue C+支持大型軟件開發(fā)支持大型軟件開發(fā) 顯然,不宜將一切的語句都寫入主函數(shù)顯然,不宜將一切的語句都寫入主函數(shù) 其實,應(yīng)該使主函數(shù)盡能夠地簡單。主要起調(diào)度作用,其實,應(yīng)該使主函數(shù)盡能夠地簡單。主要起調(diào)度作用,控制其他功能模塊即其他函數(shù)的調(diào)用;控制其他功能模塊即其他函數(shù)的調(diào)用; 函數(shù)逐個調(diào)用及前往,實現(xiàn)多種功能。函數(shù)逐個調(diào)用及前往,實現(xiàn)多種功能。 啟動程序執(zhí)行時,將使主函數(shù)自動執(zhí)行;啟動程序執(zhí)行時,將使主函數(shù)自動執(zhí)行; 在主函數(shù)中遇到在主函數(shù)中遇到return語句將引起程序終了。語句將引起程序終了。二、根本程序擴展二、根本程序擴展主函數(shù)主函數(shù) 功能函數(shù)功能函數(shù)1 功能函數(shù)功能函數(shù)2

16、功能函數(shù)功能函數(shù)3 功能函數(shù)功能函數(shù)4 功能函數(shù)功能函數(shù)5 功能函數(shù)功能函數(shù)6 例如:例如:改編改編“算術(shù)檢驗程序之二算術(shù)檢驗程序之二 設(shè)計設(shè)計“加法檢驗功能函數(shù)加法檢驗功能函數(shù) 首先將原來的主函數(shù)名改成首先將原來的主函數(shù)名改成 add_test; 去掉輸出成果語句,將檢驗成果作為該函數(shù)的前往去掉輸出成果語句,將檢驗成果作為該函數(shù)的前往值值 return score; 設(shè)計主函數(shù),調(diào)用設(shè)計主函數(shù),調(diào)用add_test函數(shù)函數(shù) 今后可擴展今后可擴展主函數(shù)主函數(shù) 加法檢驗加法檢驗 減法檢驗減法檢驗 / test3.cpp #include using namespace std; int add_

17、test();/ 函數(shù)聲明函數(shù)聲明 int main()/ 主函數(shù)盡能夠地簡單主函數(shù)盡能夠地簡單 int score; score = add_test();/ 函數(shù)調(diào)用函數(shù)調(diào)用(執(zhí)行語句執(zhí)行語句) cout 成果:成果: score 分分 endl; return 0; int add_test() / 函數(shù)定義函數(shù)定義(函數(shù)實現(xiàn)函數(shù)實現(xiàn)) int x, y, z; int i, score; time_t t; srand(time(&t);/ 為了獲得更好的隨機性為了獲得更好的隨機性 score = 0; i = 0; while(i10) x = rand() % 21; y

18、= rand() % 21; cout x + y z; if(x+y = z) score += 10; i+; return score;/ 前往測試成果前往測試成果 / test3.cpp添加減法檢驗功能添加減法檢驗功能(請參見請參見2.3.2小節(jié)小節(jié)) #include using namespace std; int add_test(), sub_test();/ 函數(shù)聲明函數(shù)聲明 int main()/ 主函數(shù)起調(diào)度作用主函數(shù)起調(diào)度作用 int score, choice=1; while(choice) cout n1-加法測試加法測試 n2-減法測試減法測試 n0-退出退出 choice; switch(choice) case 1: score = add_test(); break; case 2: score = sub_test(); break; cout 成果成果 score 分分 endl; return 0; / / 簡易菜單簡易菜單/ / 接納選擇接納選擇/ / 依選擇分情況處置依選擇分情況處置/新增擴展部分新增擴展部分

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論