



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第七課 WHILE循環(huán)與REPEAT一、WHILE循環(huán)對(duì)于for循環(huán)有時(shí)也稱為計(jì)數(shù)循環(huán),當(dāng)循環(huán)次數(shù)未知,只能根據(jù)某一條件來(lái)決定是否進(jìn)行循環(huán)時(shí),用while 語(yǔ)句或repeat語(yǔ)句實(shí)現(xiàn)循環(huán)要更方便。while語(yǔ)句的形式為:while <布爾表達(dá)式> do <語(yǔ)句>;其意義為:當(dāng)布爾表達(dá)式的值為true時(shí),執(zhí)行do后面的語(yǔ)句。while語(yǔ)句的執(zhí)行過程為:判斷布爾表達(dá)式的值,如果其值為真,執(zhí)行步驟2,否則執(zhí)行步驟4;執(zhí)行循環(huán)體語(yǔ)句(do后面的語(yǔ)句);返回步驟1;結(jié)束循環(huán),執(zhí)行while的下一個(gè)語(yǔ)句。說(shuō)明:這里while和do為保留字,while語(yǔ)句的特點(diǎn)是先判斷,后執(zhí)行。 當(dāng)
2、布爾表達(dá)式成立時(shí),重復(fù)執(zhí)行do后面的語(yǔ)句(循環(huán)體)。例1 、求恰好使s=1+1/2+1/3+1/n的值大于10時(shí)n的值。分析:"恰好使s的值大于10"意思是當(dāng)表達(dá)式s的前n-1項(xiàng)的和小于或等于10,而加上了第n項(xiàng)后s的值大于10。從數(shù)學(xué)角度,我們很難計(jì)算這個(gè)n的值。故從第一項(xiàng)開始,當(dāng)s的值小于或等于10時(shí),就繼續(xù)將下一項(xiàng)值累加起來(lái)。當(dāng)s的值超過10時(shí),最后一項(xiàng)的項(xiàng)數(shù)即為要求的n。程序如下:vars : real;n : integer;n表示項(xiàng)數(shù)begins:=0.0;n:=0;while s<=10 do當(dāng)s的值還未超過10時(shí)beginn:=n+1;項(xiàng)數(shù)加1s:=s
3、+1/n;將下一項(xiàng)值累加到send;writlen('n=',n);輸出結(jié)果end.例2、求兩個(gè)正整數(shù)m和n的最大公約數(shù)。分析:求兩個(gè)正整數(shù)的最大公約數(shù)采用的輾轉(zhuǎn)相除法求解。以下是輾轉(zhuǎn)的算法:分別用m,n,r表示被除數(shù)、除數(shù)、余數(shù)。求m/n的余數(shù)r.若r=0,則n為最大公約數(shù).若r0,執(zhí)行第步.將n的值放在m中,將r的值放在n中.返回重新執(zhí)行第步。程序如下:program ex4_4;var m,n,a,b,r:integer;beginwrite('Input m,n:');readln(m,n);a:=m;b:=n;r:=a mod b;while r<
4、;>0 dobegina:=b;b:=r;r:=a mod b;end;writeln('The greatest common divide is:',b:8);end.二、直到循環(huán)(REPEATuntil語(yǔ)句)用while語(yǔ)句可以實(shí)現(xiàn)"當(dāng)型循環(huán)",用repeat-until 語(yǔ)句可以實(shí)現(xiàn)"直到型循環(huán)"。repeat-until語(yǔ)句的含義是:"重復(fù)執(zhí)行循環(huán),直到指定的條件為真時(shí)為止"。直到循環(huán)語(yǔ)句的一般形式:Repeat<語(yǔ)句1><語(yǔ)句n>until <布爾表達(dá)式>其中Rep
5、eat、until是Pascal保留字,repeat與until之間的所有語(yǔ)句稱為循環(huán)體。說(shuō)明:repeat語(yǔ)句的特點(diǎn)是:先執(zhí)行循環(huán),后判斷結(jié)束條件,因而至少要執(zhí)行一次循環(huán)體。repeat-until是一個(gè)整體,它是一個(gè)(構(gòu)造型)語(yǔ)句,不要誤認(rèn)為repeat是一個(gè)語(yǔ)句,until是另一個(gè)語(yǔ)句。repeat語(yǔ)句在布爾表達(dá)式的值為真時(shí)不再執(zhí)行循環(huán)體,且循環(huán)體可以是若干個(gè)語(yǔ)句,不需用begin和end把它們包起來(lái), repeat 和until已經(jīng)起了begin和end的作用。while循環(huán)和repeat循環(huán)是可以相互轉(zhuǎn)化的。對(duì)于例2中求兩個(gè)正整數(shù)的最大公約數(shù),程序可用repeat-until循環(huán)實(shí)現(xiàn)
6、如下:var m,n,a,b,r : integer;beginwrite('Input m,n=');readln(m,n);a:=m;b:=n;repeatr:=a mod b;a:=b;b:=r;until r=0;writeln('The greatest common divide is',a);end.以上我們已介紹了三種循環(huán)語(yǔ)句。一般說(shuō)來(lái),用for 循環(huán)比較簡(jiǎn)明,只要能用for循環(huán),就盡量作用for循環(huán)。只在無(wú)法使用for循環(huán)時(shí)才用while循環(huán)和repeat-until循環(huán), 而且 while 循環(huán)和repeat-until循環(huán)是可以互相替代的。
7、for 循環(huán)在大多數(shù)場(chǎng)合也能用whiel和repeat-until循環(huán)來(lái)代替。一般for循環(huán)用于有確定次數(shù)循環(huán),而while和repeat-until循環(huán)用于未確定循環(huán)次數(shù)的循環(huán)。當(dāng)一個(gè)循環(huán)的循環(huán)體中又包含循環(huán)結(jié)構(gòu)程序時(shí),我們就稱之為循環(huán)嵌套。 三、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)例3 求1!+2!+10!的值。分析:這個(gè)問題是求10自然數(shù)的階乘之和,可以用for 循環(huán)來(lái)實(shí)現(xiàn)。程序結(jié)構(gòu)如下:for n:=1 to 10 dobeginN!的值àt累加N!的值tend顯然,通過10次的循環(huán)可求出1!,2!,10!,并同時(shí)累加起來(lái), 可求得S的值。而求T=N!,又可以用一個(gè)for循環(huán)來(lái)實(shí)現(xiàn):t=1;fo
8、r j:=1 to n dot:=t*j;因此,整個(gè)程序?yàn)?program ex4_5;var t,s:real;i,j,n:integer;beginS:=0;for n:=1 to 10 dobegint:=1;for j:=1 to n dot:=t*j;S:=S+t;end;writeln('s=',s:0:0);end.以上的程序是一個(gè)二重的for循環(huán)嵌套。這是比較好想的方法,但實(shí)際上對(duì)于求n!,我們可以根據(jù)求出的(n-1)!乘上n即可得到,而無(wú)需重新從1再累乘到n。程序可改為:program ex4_5;var t,s:real;i,j,n:integer;begi
9、nS:=0;t:=1;for n:=1 to 10 dobegint:=t*n;S:=S+t;end;writeln('s=',s:0:0);end.顯然第二個(gè)程序的效率要比第一個(gè)高得多。第一程序要進(jìn)行1+2+10=55次循環(huán),而第二程序進(jìn)行10次循環(huán)。如題目中求的是1!2!1000!,則兩個(gè)程序的效率區(qū)別更明顯。例4 一個(gè)炊事員上街采購(gòu),用500元錢買了90只雞, 其中母雞一只15元,公雞一只10元,小雞一只5元,正好把錢買完。問母雞、公雞、小雞各買多少只?分析:設(shè)母雞I只,公雞J只,則小雞為90-I-J只,則15*I+ 10* J+(90-I-J)*5=500,顯然一個(gè)方程
10、求兩個(gè)未知數(shù)是不能直接求解。必須組合出所有可能的i,j值,看是否滿足條件。這里I的值可以是0到33,J的值可以0到50。源程序如下:programr ex4_6;var i,j,k:integer;beginfor i:=1 to 5 dofor j:=1 to 8 dobegink:=90-i-j;if 15*i+10*j+5*k=500 then writeln(i:5,j:5,k:5);end;end.例5、求100200之間的所有素?cái)?shù)。分析:我們可對(duì)100200之間的每一整數(shù)進(jìn)行判斷,判斷它是否為素?cái)?shù),是則輸出。而對(duì)于任意整數(shù)i,根據(jù)素?cái)?shù)定義,我們從2開始,到 ,找i的第一個(gè)約數(shù)。若找到第一個(gè)約數(shù),則i必然不是素?cái)?shù)。否則i為素?cái)?shù)。源程序如下:vari : integer;x : integer;beginfor i:=100 to 200 dobeginx:=2;while (x<=trunc(sqrt(i)and(i mod x<>0)dobeginx:=x+1;end;if x>trunc(sqrt(i) then write(i:8);end;end.練 習(xí)1、輸入一個(gè)正整數(shù)n,將n分解成質(zhì)因數(shù)冪的乘積形式。例如:36=22*322、輸出
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年黨章黨規(guī)黨紀(jì)知識(shí)競(jìng)賽考試題庫(kù)及答案(共190題)
- 課后服務(wù)申請(qǐng)書
- 醫(yī)輔部工作匯報(bào)發(fā)言
- 沙糖桔樹秋季嫁接方法
- 二零二五年度北京市音樂行業(yè)音樂劇演員勞動(dòng)合同范本
- 項(xiàng)目收尾工作總結(jié)與經(jīng)驗(yàn)教訓(xùn)總結(jié)報(bào)告
- 基于區(qū)塊鏈技術(shù)的農(nóng)產(chǎn)品溯源與智能管理平臺(tái)
- 環(huán)境監(jiān)測(cè)與分析技術(shù)指南
- 物聯(lián)網(wǎng)農(nóng)業(yè)智能控制系統(tǒng)
- 屠宰可行性研究報(bào)告
- 手機(jī)攝影教程全套課件
- 2025屆寧夏銀川一中高三上學(xué)期第五次月考英語(yǔ)試題及答案
- 基于核心素養(yǎng)的高中數(shù)學(xué)“教、學(xué)、評(píng)”一致性研究
- 空調(diào)原理培訓(xùn)課件
- 2024年國(guó)網(wǎng)陜西省電力有限公司招聘考試真題
- 2025屆上海市虹口區(qū)初三一模英語(yǔ)試卷(含答案和音頻)
- 2025年熊膽眼藥水項(xiàng)目可行性研究報(bào)告
- 高中主題班會(huì) 遠(yuǎn)離背后蛐蛐課件-高二下學(xué)期人際交往主題班會(huì)
- 5.2 做自強(qiáng)不息的中國(guó)人 (課件)-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊(cè)
- 現(xiàn)代康復(fù)治療
- 醫(yī)療行業(yè)以案明紀(jì)的警示教育心得體會(huì)
評(píng)論
0/150
提交評(píng)論