版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章第3節(jié)循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)For循環(huán)PascalFOR循環(huán)、當(dāng)循環(huán)和直到循環(huán)。通常將一組重復(fù)執(zhí)行的語(yǔ)句是由循環(huán)體及重復(fù)終止條件兩部分組成。一、計(jì)數(shù)循環(huán)(for/to/do)語(yǔ)句的一般格式for<控制變量>:=<表達(dá)式1>to<表達(dá)式2>do<語(yǔ)句>;for<控制變量>:=<表達(dá)式1>downto<表達(dá)式2>do<語(yǔ)句>;for、to、downtodoPascal12的值也稱(chēng)為初值和終值。二、For語(yǔ)句執(zhí)行過(guò)程①先將初值賦給左邊的變量(稱(chēng)為循環(huán)控制變量);②判斷循環(huán)控制變量的值是否已"超過(guò)"終值,如已超過(guò),則跳到步驟⑥;③如果末超過(guò)終值,則執(zhí)行do后面的那個(gè)語(yǔ)句(稱(chēng)為循環(huán)體);④循環(huán)變量遞增(對(duì)to)或遞減(對(duì)downto)1;⑤返回步驟②;⑥循環(huán)結(jié)束,執(zhí)行for循環(huán)下面的一個(gè)語(yǔ)句。三、說(shuō)明①循環(huán)控制變量必須是順序類(lèi)型,初值和終值可以是常量、變量、表達(dá)式,②循環(huán)控制變量的值遞增或遞減的規(guī)律是:選用to則為遞增;選用downto則遞減。③所謂循環(huán)控制變量的值"超過(guò)"終值,對(duì)遞增型循環(huán),"超過(guò)"指大于,對(duì)遞減型循環(huán),"超過(guò)"指小于。④循環(huán)體可以是一個(gè)基本語(yǔ)句,也可以是一個(gè)復(fù)合語(yǔ)句。要在循環(huán)體中隨意修改控制變量的值。0。⑦循環(huán)次數(shù)等于│終值-初值│+1或│ord(初值)-ord(終值)│+1。四、應(yīng)用舉例例1.計(jì)算1+2+3+…+100的值。分析:我們用累加方法,初值為1,終值為100,循環(huán)100次每次將循環(huán)控制變量i的值迭加加入一個(gè)變量S中,循環(huán)結(jié)束后此變量中就為所求值。程序如下:program p4_22;vari,s:integer;begins:=0;
fori:=1to100dos=s+i;end.思考:s=2+4+6+…+100S=1+1/2+1/3+1/4+…+1/100S=12+22+32+…+1002例2.輸入一個(gè)自然數(shù)x,求這個(gè)自然數(shù)的所有約數(shù)之和S。xyxmody=01x進(jìn)行循環(huán)判定。程序如下:programp4_23;varx,y,s:integer;beginwrite('Enterx=');readln(x);s:=0;fory:=1toxdoifxmody=0thens:=s+y;writeln(‘x=’,x,‘s=’,s);end.例3 編程找出四位整數(shù)abcd中滿足下述關(guān)系的數(shù)(ab+c)Programp4_24;Vari,m,n,k:integer;beginfori:=1000to9999dobeginm:=idiv100;n:=imod100;k:=(m+n)*(m+n);if k=ithenwriteln(i)end;end.以上方法叫“枚舉法WHILE循環(huán)一、WHILE循環(huán)forwhilerepeat語(yǔ)句實(shí)現(xiàn)循環(huán)要更方便。while語(yǔ)句的形式為:while<布爾表達(dá)式>do<語(yǔ)句>;truedo二、while語(yǔ)句的執(zhí)行過(guò)程為:①判斷布爾表達(dá)式的值,如果其值為真,執(zhí)行步驟2,否則執(zhí)行步驟4;②執(zhí)行循環(huán)體語(yǔ)句(do后面的語(yǔ)句);③返回步驟1;④結(jié)束循環(huán),執(zhí)行while的下一個(gè)語(yǔ)句。whiledodo后面的語(yǔ)句循環(huán)體)。三、舉例1s=1+1/2+1/3+…+1/n10n的值。s10"sn-1項(xiàng)的和小于或等于10,而加上了第n項(xiàng)后s的值大于10。從數(shù)學(xué)角度,我們很難計(jì)算這個(gè)n的值。故從第一項(xiàng)開(kāi)始,當(dāng)s的值小于或等于10時(shí),就繼續(xù)將下一項(xiàng)值累加起來(lái)。當(dāng)s10n程序如下:vars:real;n:integer;{n表示項(xiàng)數(shù)}begins:=;n:=0;whiles<=10do{當(dāng)s的值還未超過(guò)10時(shí)}beginn:=n+1;{項(xiàng)數(shù)加1}s:=s+1/n;{s}end;writlen('n=',n);{輸出結(jié)果}end.2mn的最大公約數(shù)。的算法:分別用m,n,r表示被除數(shù)、除數(shù)、余數(shù)。①求m/n的余數(shù)r.②若r=0,則n為最大公約數(shù).若r≠0,執(zhí)行第③步.③將n的值放在m中,將r的值放在n中.④返回重新執(zhí)行第①步。程序如下:programex4_4;varm,n,a,b,r:integer;beginwrite('Inputm,n:');readln(m,n);a:=m;b:=n;r:=amodb;whiler<>0dobegina:=b;b:=r;r:=amodb;end;writeln('Thegreatestcommondivideis:',b:8);end.例3求輸入的一個(gè)整數(shù)的各位數(shù)之和。例4求兩個(gè)自然數(shù)m,n的最小公倍數(shù)。REPEAT循環(huán)一、直到循環(huán)(REPEAT-until語(yǔ)句)while語(yǔ)句可以實(shí)現(xiàn)"當(dāng)型循環(huán)"repeat-until"直到型循環(huán)"repeat-until"。直到循環(huán)語(yǔ)句的一般形式:Repeat<1>;:<n>;until<布爾表達(dá)式>;RepeatuntilPascal保留字,repeatuntil之間的所有語(yǔ)句稱(chēng)為循環(huán)體。說(shuō)明:①repeat次循環(huán)體。②repeat-until是一個(gè)整體,它是一個(gè)(構(gòu)造型)語(yǔ)句,不要誤認(rèn)為repeat是一個(gè)語(yǔ)句,until是另一個(gè)語(yǔ)句。③repeatbeginend把它們包起來(lái),repeatuntilbeginend的作用。whilerepeat循環(huán)是可以相互轉(zhuǎn)化的。2repeat-until循環(huán)實(shí)現(xiàn)如下:varm,n,a,b,r:integer;beginwrite('Inputm,n=');readln(m,n);a:=m;b:=n;repeatr:=amodb;a:=b;b:=r;untilr=0;writeln('Thegreatestcommondivideis',a);end.三種循環(huán)結(jié)構(gòu)的比較:一般說(shuō)來(lái),用forforforforwhile循環(huán)和repeat-until循環(huán),而且while循環(huán)和repeat-untilfor循whilerepeat-untilfor循環(huán)用于有確whilerepeat-until循環(huán)用于未確定循環(huán)次數(shù)的循環(huán)。WHILE語(yǔ)句和REPEAT語(yǔ)句的區(qū)別:WHILE語(yǔ)句先判斷后后執(zhí)行語(yǔ)句指定語(yǔ)句只能是一條語(yǔ)句或復(fù)合語(yǔ)句當(dāng)條件成立時(shí)重復(fù)執(zhí)行
REPEAT語(yǔ)句先擇行語(yǔ)句,后判斷條件beginend當(dāng)條件不成立時(shí)重復(fù)執(zhí)行當(dāng)條件一開(kāi)始就不成立時(shí)則不執(zhí)行循無(wú)論條件是否成立總要執(zhí)行一次循環(huán)體 體多重循環(huán)結(jié)構(gòu)當(dāng)一個(gè)循環(huán)的循環(huán)體中又包含循環(huán)結(jié)構(gòu)程序時(shí),我們就稱(chēng)之為循環(huán)嵌套。一、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)11!+2!+…+10!的值。分析:這個(gè)問(wèn)題是求10自然數(shù)的階乘之和,可以用for循環(huán)來(lái)實(shí)現(xiàn)。程序結(jié)構(gòu)如下:forn:=1to10dobegin①N!的值tN!end顯然,101!,2!…,10!,并同時(shí)累加起來(lái),S的值。T=N!,for循環(huán)來(lái)實(shí)現(xiàn):t=1;forj:=1tondot:=t*j;因此,整個(gè)程序?yàn)?programex4_5;vart,s:real;i,j,n:integer;beginS:=0;forn:=1to10dobegint:=1;forj:=1tondot:=t*j;S:=S+t;end;writeln('s=',s:0:0);end.forn!(n-1)!n1再累乘到n。程序可改為:programex4_5;vart,s:real;i,j,n:integer;beginS:=0;t:=1;forn:=1to10dobegint:=t*n;end;writeln('s=',s:0:0);end.1+2+…+10=55101?。??。?000!,則兩個(gè)程序的效率區(qū)別更明顯。例2 求100~999中的水仙花數(shù)若三位數(shù)abc,abc=a3+b3+c3,則稱(chēng)abc為水仙花數(shù)。如153,13+53十33=1+125+27=153,則153是水仙花數(shù)。根據(jù)題意采用三重循環(huán)求解,由于循環(huán)次數(shù)一定,用for循環(huán)最為簡(jiǎn)單。programp4_31;vara,b,C:integer;beginfora:=1to9doforb:=0 to9doforc:=0 to 9doif a*a*a+b*b*b+c*c*c=a*100+b*10+cthenwrite(a*100+b*10+c:6);readlnend.運(yùn)行結(jié)果:153 370 371 407同時(shí)也可以采用一個(gè)for循環(huán)來(lái)求解,程序如下:programp4_31_1;varm,a,b,c:integer;beginform:=100to999dobegina:=mdiv100;b:=(mmod100)div10;c:=cmod10;if a*a*a+b*b*b+c*c*c=m thenend;readlnend.表面上看好像優(yōu)于三重循環(huán),實(shí)際上卻比上面的程序效率低。例3一個(gè)炊事員上街采購(gòu),用500元錢(qián)買(mǎi)了90只雞,其中母雞一只15元,公雞一只10元,小雞一只5元,正好把錢(qián)買(mǎi)完。問(wèn)母雞、公雞、小雞各買(mǎi)多少只?I只,J只,90-I-J只,15*I10*J+(90-I-J)*5=500,i,j值,看I033,J050。源程序如下:programrex4_6;vari,j,k:integer;beginfori:=0to33doforj:=0to50dobegink:=90-i-j;if15*i+10*j+5*k=500thenwriteln(i:5,j:5,k:5);end;end.例4四個(gè)學(xué)生上地理課時(shí),回答我國(guó)四大淡水湖大小時(shí)這樣說(shuō)。甲說(shuō):“最大洞庭湖,最小洪澤湖,鄱陽(yáng)湖第三”;乙說(shuō):“最大洪澤湖,最小洞庭湖,鄱陽(yáng)湖第二,太湖第三”;丙說(shuō):“最小洪澤湖,洞庭湖第三”;丁說(shuō):“最大鄱陽(yáng)湖,最小太湖,洪澤湖第二,洞庭湖第三”。其中每個(gè)學(xué)生僅答對(duì)一個(gè),請(qǐng)編程確定湖的大小。1~4里的一個(gè)整數(shù),這個(gè)整數(shù)就代表它們各自的大小,用一個(gè)四重循環(huán),for循環(huán)。程序的編碼如下:programp4_33;vardong,hong,bo,tai:integer;beginfordong:=1to4doforhong:=1to4doif hong<>dong thenforbo:=1to4if(hong<>bo)and(bo<>dong)thenbegintai:=10--dong--hong—bO;if(ord(dong=1)+ord(hong=4)+ord(bo=3)=1)and(ord(hong=1)+ord(dong=4)+ord(bo=2)+ord(tai=3)=1)and(ord(dong=3)+ord(hong=4)=1)and(ord(bo=1)+ord(tai=4)+ord(hong=2)+ord(dong=3)=1)thentai);end;readlnend.運(yùn)行結(jié)果:dong:2hong:4bo:1tai:3關(guān)于goto語(yǔ)句goto語(yǔ)句的格式如下:goto標(biāo)號(hào)gotogoto語(yǔ)句時(shí),程序?qū)⒉焕^續(xù)執(zhí)行下一條語(yǔ)句,部分中第一個(gè)出現(xiàn),格式如下:label標(biāo)號(hào)1,標(biāo)號(hào)2,....;19999goto語(yǔ)句時(shí)應(yīng)注意以下幾點(diǎn):goto語(yǔ)句只能從一個(gè)語(yǔ)句結(jié)構(gòu)中轉(zhuǎn)出來(lái),而不允許從外部轉(zhuǎn)進(jìn)去;goto語(yǔ)句必須先說(shuō)明標(biāo)號(hào)。gotogoto語(yǔ)句后,程序的goto語(yǔ)句后,程序就goto語(yǔ)句是結(jié)構(gòu)化程序設(shè)計(jì)不推薦使goto語(yǔ)句,程序執(zhí)行的路線可能會(huì)變得十分復(fù)雜。在編程時(shí)應(yīng)盡量避免用goto語(yǔ)句,從理論上來(lái)說(shuō)Pascal程序完全可以不用goto語(yǔ)句。4_343~100之間的所有質(zhì)數(shù)。programp4_34(input,output);label10;var n,i:integer;beginforn:=3to100dobeginfori:=2 to n-1 beginif nmodi=0 thengotoend;writeln(n);10:endend.對(duì)于這個(gè)例子,就完全可以去掉gotof賦值為假,如果循環(huán)結(jié)束后標(biāo)志沒(méi)有改n一定是質(zhì)數(shù),將其輸出后繼續(xù)循環(huán),判斷下一個(gè)數(shù)。修改后的程序如下:var n,i:integer;f:boolean;beginforn:=3to100dobeginf:=true;fori:=2to n—l beginif nmodi=0then end;if f=truethen writeln(n)endend.綜合應(yīng)用例1、求100-200之間的所有素?cái)?shù)。100-200i2i的第一個(gè)約ii為素?cái)?shù)。源程序如下:vari:integer;x:integer;beginfori:=100to200dobeginx:=2;while(x<=trunc(sqrt(i)))and(imodx<>0)dobeginx:=x+1;end;ifx>trunc(sqrt(i))thenwrite(i:8);end;end.例2 某班共有50名學(xué)生已知他們的期中考試的數(shù)學(xué)成績(jī)現(xiàn)需要統(tǒng)計(jì)100分、90~99分80~89分70~79分60~69分與不及格各成績(jī)檔有多少人。programp4_35(input,output);vari,x1,x2,x3,x4,x5,x6:integer;a:real;beginxl:=0;x2:=0;x3:=0;x4:=0;x5:=0;x6:=0;forto50dobeginreadln(a);casetrunc(10) 10:x1:=xl+1;9:x2:=x2+1;8:x3:=x3+1;7:x4:=x4+1;6:x5:=x5+1;0,1,2,3,4,5:x6:=x6+1;endend;writeln(‘100:’,x1);writeln(‘90~99:’,x2);writeln(‘80~89:’,x3);writeln(‘70~79:’,x4);writeln(‘60~69:’,x5);writeln(‘0~59:’,x6)end.例3 用5元錢(qián)買(mǎi)100只紐扣其中金屬紐扣每只5角有機(jī)玻璃紐扣每只1角小、撳扣1分錢(qián)買(mǎi)3個(gè),編程求出各種紐扣各買(mǎi)了多少只var beginforx:
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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商鋪店面裝修合同范文
- 二零二五版墓地所有權(quán)轉(zhuǎn)讓與維護(hù)協(xié)議3篇
- 二零二五年度木材產(chǎn)業(yè)園區(qū)建設(shè)與運(yùn)營(yíng)合作協(xié)議3篇
- 二零二四年度新能源儲(chǔ)能信息保密與市場(chǎng)合作合同3篇
- 2025版木雕工藝品產(chǎn)業(yè)鏈上下游企業(yè)合作框架協(xié)議4篇
- 2025版牧業(yè)廢棄物處理技術(shù)合作協(xié)議3篇
- 二零二五版智慧城市10千伏電力施工項(xiàng)目合同范本2篇
- 2025年度食品產(chǎn)品貨款抵押與質(zhì)量安全保證合同4篇
- 壽縣瀝青砼施工方案
- 2025年度酒店布草洗滌服務(wù)質(zhì)量提升承包合同:顧客滿意度提升4篇
- 2025水利云播五大員考試題庫(kù)(含答案)
- 中藥飲片驗(yàn)收培訓(xùn)
- DB34T 1831-2013 油菜收獲與秸稈粉碎機(jī)械化聯(lián)合作業(yè)技術(shù)規(guī)范
- 創(chuàng)傷處理理論知識(shí)考核試題及答案
- 稅前工資反算表模板
- 2019級(jí)水電站動(dòng)力設(shè)備專(zhuān)業(yè)三年制人才培養(yǎng)方案
- 肝素誘導(dǎo)的血小板減少癥培訓(xùn)課件
- 抖音認(rèn)證承諾函
- 高等數(shù)學(xué)(第二版)
- 四合一體系基礎(chǔ)知識(shí)培訓(xùn)課件
- ICD-9-CM-3手術(shù)與操作國(guó)家臨床版亞目表
評(píng)論
0/150
提交評(píng)論