程序控制結(jié)構(gòu)及實(shí)例.ppt
《程序控制結(jié)構(gòu)及實(shí)例.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《程序控制結(jié)構(gòu)及實(shí)例.ppt(17頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第6講程序控制結(jié)構(gòu)及實(shí)例 循環(huán)語(yǔ)句跳轉(zhuǎn)語(yǔ)句遞歸實(shí)例 目標(biāo) 掌握每種語(yǔ)句的格式及語(yǔ)法結(jié)構(gòu)運(yùn)用循環(huán)語(yǔ)句實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)具備初步描述算法的能力 循環(huán)結(jié)構(gòu) 循環(huán)結(jié)構(gòu)是指在一定的條件下反復(fù)執(zhí)行某段程序 被反復(fù)執(zhí)行的這段程序稱為 循環(huán)體 Java中有三種語(yǔ)句來(lái)實(shí)現(xiàn)循環(huán)結(jié)構(gòu) 分別是while do while和for語(yǔ)句 它們的結(jié)構(gòu)分別如下圖所示 while語(yǔ)句 while語(yǔ)句的格式如下 while 條件表達(dá)式 循環(huán)體語(yǔ)句 在循環(huán)剛開始時(shí) 會(huì)計(jì)算一次 條件表達(dá)式 的值 當(dāng)條件為假時(shí) 將不執(zhí)行循環(huán)體 直接跳轉(zhuǎn)到循環(huán)體外 執(zhí)行循環(huán)體外的后續(xù)語(yǔ)句 當(dāng)條件為真時(shí) 便執(zhí)行循環(huán)體 每執(zhí)行完一次循環(huán)體 都會(huì)重新計(jì)算一次條件表達(dá)式 當(dāng)條件為真時(shí) 便繼續(xù)執(zhí)行循環(huán)體 直到條件為假才結(jié)束循環(huán) 例4 4 用while語(yǔ)句計(jì)算10的階乘 cha 0 b awhile a b cha a System out print cha do while語(yǔ)句 do while語(yǔ)句的格式如下 do 循環(huán)體語(yǔ)句 while 條件表達(dá)式 do while循環(huán)與while循環(huán)的不同在于 它先執(zhí)行循環(huán)中的語(yǔ)句 然后再判斷條件是否為真 如果為真則繼續(xù)循環(huán) 如果為假 則終止循環(huán) 因此 do while循環(huán)至少要執(zhí)行一次循環(huán)語(yǔ)句 例4 5 用do while語(yǔ)句計(jì)算10的階乘 for語(yǔ)句 for語(yǔ)句是三個(gè)循環(huán)語(yǔ)句中功能最強(qiáng) 使用最廣泛的一個(gè) for語(yǔ)句的格式如下 for 表達(dá)式1 表達(dá)式2 表達(dá)式3 循環(huán)體語(yǔ)句 表達(dá)式1一般是一個(gè)賦值語(yǔ)句 它用來(lái)給循環(huán)控制變量賦初值 表達(dá)式2是一個(gè)布爾類型的表達(dá)式 它決定什么時(shí)候退出循環(huán) 表達(dá)式3一般用來(lái)修改循環(huán)變量 控制變量每循環(huán)一次后按什么方式變化 這三個(gè)部分之間用 分開 for語(yǔ)句的執(zhí)行過程 for intcha 0 a b a cha 1 在循環(huán)剛開始時(shí) 先計(jì)算表達(dá)式1 在這個(gè)過程中 一般完成的是初始化循環(huán)變量或其它變量 2 根據(jù)表達(dá)式2的值來(lái)決定是否執(zhí)行循環(huán)體 表達(dá)式2是一個(gè)返回布爾值的表達(dá)式 若該值為假 將不執(zhí)行循環(huán)體 并退出循環(huán) 若該值為真 將執(zhí)行循環(huán)體 3 執(zhí)行完一次循環(huán)體后 計(jì)算表達(dá)式3 在這個(gè)過程中一般會(huì)修改循環(huán)變量 4 轉(zhuǎn)入第 2 步繼續(xù)執(zhí)行 例4 6 用for語(yǔ)句計(jì)算10的階乘 跳轉(zhuǎn)語(yǔ)句 跳轉(zhuǎn)語(yǔ)句用來(lái)實(shí)現(xiàn)循環(huán)執(zhí)行過程中的流程轉(zhuǎn)移 在switch語(yǔ)句中使用過的break語(yǔ)句就是一種跳轉(zhuǎn)語(yǔ)句 在Java語(yǔ)言中 有兩種跳轉(zhuǎn)語(yǔ)句 break語(yǔ)句和continue語(yǔ)句 在Java語(yǔ)言中 可用break和continue控制循環(huán)的流程 其中 break用于強(qiáng)行退出循環(huán) 不執(zhí)行循環(huán)中剩余的語(yǔ)句 而continue則停止執(zhí)行當(dāng)前的循環(huán) 開始新的循環(huán) break語(yǔ)句 作用 使程序的執(zhí)行流程從一個(gè)語(yǔ)句塊內(nèi)部轉(zhuǎn)移出去 它只在switch語(yǔ)句和循環(huán)語(yǔ)句中使用 允許從switch語(yǔ)句的case子句中跳出 或從循環(huán)體內(nèi)跳出分為帶標(biāo)號(hào)和不帶標(biāo)號(hào)兩種形式 break 標(biāo)號(hào)名 帶標(biāo)號(hào)的break語(yǔ)句可以從多重循環(huán)體的最內(nèi)部跳出所有的循環(huán) 而不帶標(biāo)號(hào)的break語(yǔ)句只能跳到當(dāng)前循環(huán)外層 Label for inta 0 a 4 a for intj 0 j 2 j if a 2 breakLabel System out print a 2 j t System out println a a continue語(yǔ)句 continue語(yǔ)句只能用在循環(huán)語(yǔ)句中 作用是終止當(dāng)前這一輪循環(huán) 不再執(zhí)行在它后面的語(yǔ)句 直接進(jìn)入下一輪的循環(huán) continue語(yǔ)句具有帶標(biāo)號(hào)和不帶標(biāo)號(hào)兩種形式 continue 標(biāo)號(hào)名 標(biāo)號(hào)名必須放在循環(huán)語(yǔ)句之前 用于標(biāo)志這個(gè)循環(huán)體在while和do while循環(huán)中 不帶標(biāo)號(hào)的continue語(yǔ)句使程序流程直接跳到循環(huán)條件的判斷上 在for循環(huán)中 不帶標(biāo)號(hào)的continue語(yǔ)句直接計(jì)算表達(dá)式3的值 再根據(jù)表達(dá)式2的值決定是否繼續(xù)循環(huán) 文件名Ex4 10publicclassEx4 10 publicstaticvoidmain String args intj for j 1 j 10 j if j 5 continue System out print j 輸出整數(shù)1 2 3 4 6 7 8 9 10 遞歸 在方法體內(nèi)可以調(diào)用其他方法 方法體內(nèi)也可以調(diào)用該方法本身 即方法自己調(diào)用自己 我們稱自己直接或間接調(diào)用自己的方法為遞歸方法 在方法體內(nèi)調(diào)用該方法本身的過程 稱為方法的遞歸調(diào)用 下面我們通過分析Fibonacci序列介紹遞歸方法 Fibonacci序列 1 1 2 3 5 8 13 21 34 以1和1開始 每個(gè)后續(xù)數(shù)字是序列中前兩個(gè)數(shù)字的和 這個(gè)序列可以被遞歸地定義為下面的形式 f 0 1 f 1 1 f n f n 2 f n 1 n 2用遞歸方法計(jì)算Fibonacci序列第20項(xiàng) 求50到100 包含50和100 之間的素?cái)?shù)并輸出 素?cái)?shù)是指除1和它本身是該數(shù)的因子外 沒有別的因子的自然數(shù) 分析 自頂向下 逐步求精 循環(huán)變量i從50循環(huán)到100 每次增1 判斷i是否是素?cái)?shù)要判斷某個(gè)數(shù)i是否為素?cái)?shù) 設(shè)置變量j從2循環(huán)到 i 1 判斷j是否為i的因子 若i有因子j 則不是素?cái)?shù) 判斷j是否為i的因子的方法 如果表達(dá)式 i j 0 為true 說(shuō)明i能被j整除 則j是i的因子結(jié)論 這個(gè)問題可以通過兩層循環(huán)實(shí)現(xiàn) 外層遞增被判斷的數(shù)字i 內(nèi)層循環(huán)判斷變量i是否為素?cái)?shù) publicclassEx4 13 publicstaticvoidmain Stringargs inti j next for i 50 i 100 i for j 2 j i 1 j if i j 0 continuenext System out println i 例4 13代碼 求兩個(gè)給定正數(shù)的最大公約數(shù)和最小公倍數(shù) 最大公約數(shù) 輾轉(zhuǎn)相除法 歐幾里德算法 余數(shù)1 大數(shù) 小數(shù)余數(shù)2 小數(shù) 余數(shù)1余數(shù)3 余數(shù)1 余數(shù)2直至余數(shù)為0 則最后一個(gè)除數(shù)為所求最小公倍數(shù) 大數(shù) 小數(shù) 最大公約數(shù) 內(nèi)容回顧 本章首先介紹基本的控制結(jié)構(gòu) 接下來(lái)討論選擇語(yǔ)句 循環(huán)語(yǔ)句 break語(yǔ)句 continue語(yǔ)句和遞歸等 雖然Java語(yǔ)言是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言 但是面向?qū)ο蟮木幊桃彩且悦嫦蜻^程編程為基礎(chǔ)而發(fā)展起來(lái)的 在對(duì)象的方法等程序片內(nèi)部 仍然需要嚴(yán)格遵守傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)原則 所以應(yīng)當(dāng)熟練掌握結(jié)構(gòu)化程序設(shè)計(jì)的三種基本流程 順序結(jié)構(gòu) 選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu) 實(shí)驗(yàn)要求 預(yù)習(xí)實(shí)驗(yàn)程序 熟悉選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)方法 充分理解程序執(zhí)行流程 完成參考書實(shí)驗(yàn)習(xí)題 作業(yè) P87 1 5 12輸出如下圖形- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 程序控制 結(jié)構(gòu) 實(shí)例
鏈接地址:http://m.appdesigncorp.com/p-6848390.html