高中信息技術(shù) pascal教程05 第五課 基本語句(三)教案_第1頁
高中信息技術(shù) pascal教程05 第五課 基本語句(三)教案_第2頁
高中信息技術(shù) pascal教程05 第五課 基本語句(三)教案_第3頁
高中信息技術(shù) pascal教程05 第五課 基本語句(三)教案_第4頁
高中信息技術(shù) pascal教程05 第五課 基本語句(三)教案_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第五課 基本語句(三) 5.1 FOR語句FOR語句用于循環(huán)次數(shù)已知的情況,有兩種形式:FOR := TO DO ;FOR := DOWNTO DO ;FOR語句的兩種形式的邏輯功能圖:下一條語句控制變量:初值控制變量初值1循環(huán)體變量終值falsetrue(a)DOWNTO情況控制變量控制重復(fù)的次數(shù),它從初值到終值自動(dòng)順序取值(分遞增和遞減兩種順序),每取一次值就執(zhí)行一次循環(huán)體,直到控制變量的值大于(對(duì)于fortodo)或小于(對(duì)于fordowntoto)終值。【例】計(jì)算1+2+3+4+100之和。分析:設(shè)變量s為累加和,初值為0,然后依次加上1,2,3,一直到100; 輸出s的值。算法: s

2、 := 0; s := s+1; s := s+2; s := s+100; 輸出s 步驟中,要重復(fù)寫上100個(gè)賦值語句,其變化只是加號(hào)后的數(shù)值。因此,我們可以用一個(gè)for語句來代替這100個(gè)語句: for i := 1 to 100 do s := s + i ;program sample3611;var i , s :integer;begin s := 0; s置初值0for i := 1 to 100 dos := s + i ;writeln(s=,s); 輸出累加和send.程序: 1i0s1+01 s為累加和,初值為0; i為控制變量,初值為1,終值為100;第一次執(zhí)行循環(huán)體時(shí)

3、,i的值為1,s := s + i s := 0 + 1 , 執(zhí)行后s=1;2i1s2+13第二次執(zhí)行循環(huán)體時(shí),i的值變?yōu)?,s := s + i s := 1 + 2 , 執(zhí)行后s=3;第三次執(zhí)行循環(huán)體時(shí),i的值變?yōu)?,s := s + i s := 3 + 3 , 執(zhí)行后s=6;第四次 【例】 讀入n個(gè)數(shù),計(jì)算它們的和與積以及平均值。 分析: 讀入n ,n為整型變量; 設(shè)每次讀入的數(shù)放置在變量x中,和、積以及平均值分別用sum,mul,ave存放,它們都為實(shí)型變量。 為了求sum,mul與ave,可以利用一個(gè)循環(huán),讓它循環(huán)n次,每循環(huán)一次,讀一個(gè)新的x值,并把它分別加到sum上,乘到mul

4、上。注意,在循環(huán)前應(yīng)將sum置為0,將mul置為1。循環(huán)結(jié)束后,將sum除以n,求出ave,最后輸出sum,mul,ave。算法: 讀入n; 置sum初值為0 , mul為1; for j := 1 to n do1 讀入x2 將x累加到sum上: sum := sum + x ;3 將x累乘到mul上: mul := mul + x ; 計(jì)算ave: ave := sum / n ; 輸出sum,mul,ave 程序: program sample3612; var x , sum , mul , ave :real ; sum為和、mul為積、ave為平均值 j , n:integer ;

5、 Begin readln(n); 讀入nsum := 0; mul := 1; sum、mul置初值 for j := 1 to n do 循環(huán)n次,j為控制變量 begin 循環(huán)體內(nèi)的語句不止一句,所以要用begin和end括起 read(x); 每次讀入新的x sum := sum + x; 將x累加到sum上 mul := mul * x; 將x累乘到mul上 end; ave := sum / n; 求平均值ave writeln(sum= , sum , mul=, mul , ave=, ave); End 累加求和之前,累加單元(如sum)一定要清0,否則它可能是一個(gè)任意數(shù),這

6、樣在第一次累加時(shí)就不對(duì)了。同理,在累乘求積前,累乘單元(如mul)必須置初值1,否則會(huì)出錯(cuò)。 清0和置1,一定要在循環(huán)前做,在循環(huán)中執(zhí)行累加和累乘。(思考:否則會(huì)怎樣?) 循環(huán)體中如果有多個(gè)語句,必須用begin和end括起作為一個(gè)語句(復(fù)合語句)?!咀⒁狻? 初值和終值可以是表達(dá)式??刂谱兞康念愋捅仨毰c初值、終值的類型相同??刂谱兞勘仨毷怯行蝾愋停S谜?、字符型,不允許為實(shí)型變量。2 FOR語句的步長是一定的,雖Pascal允許在循環(huán)體內(nèi)修改控制變量,但一般不贊成這樣做,在循環(huán)體中改變控制變量往往會(huì)造成混亂。 如: for k := 1 to 100 do begin k := 3; 循環(huán)

7、體中改變了循環(huán)變量k的值 end. 3 當(dāng)FOR語句執(zhí)行完畢后,控制變量的值無定義,因此FOR語句的后續(xù)語句不能認(rèn)為控制變量的值是終值而加以利用。4 當(dāng)初值超過終值時(shí),不執(zhí)行循環(huán),循環(huán)次數(shù)為0。如: for aa := 10 to 1 do 將不執(zhí)行循環(huán)5.1 FOR語句的嵌套在實(shí)際應(yīng)用中,可能在循環(huán)體內(nèi)再包含有重復(fù)語句,這就出現(xiàn)了嵌套問題。以上三種循環(huán)語句都允許自己之間或相互之間嵌套,這樣一層套一層便形成了多重循環(huán)。下面是一個(gè)二重循環(huán)語句:外層內(nèi)層for i := 1 to 3 do for j := 1 to 4 dobegin k := i * j; writeln(i=, i , j=

8、, j , k=, k); end;可見,內(nèi)層的重復(fù)語句是包含它的外層重復(fù)語句的一個(gè)循環(huán)體。 使用多重循環(huán)時(shí),必須注意:內(nèi)層循環(huán)必須完全被包含在外層循環(huán)體內(nèi),內(nèi)外循環(huán)不得循環(huán)騎跨,對(duì)嵌套的FOR語句而言,內(nèi)外層循環(huán)的控制變量不能同名。下面的兩段程序都是不允許的: for i := 1 to 10 do for i := 1 to n do begin begin repeat x := x + 1; for i := 1 to n do write(x); end; end; until x 100; 【例】打印九九乘法表,大家注意觀察循環(huán)的嵌套。program s99; var i, j :

9、 integer;begin for i:=1 to 9 do begin 循環(huán)體內(nèi)的語句不止一句,所以要用begin和end括起for j:=1 to i do write (j , * , i , = , i*j , );writeln; 輸出換行 end;end.變量變化情況及輸出:i=1 j=1 1*1=1 換行i=2 j=1 1*2=2 j=2 2*2=4 換行i=3 j=1 1*3=3 j=2 2*3=6 j=3 3*3=9 換行1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9 輸出: 【例】把一張一元鈔票換成一分、二分和五分的硬幣(每種至少一枚),問有哪幾種換法

10、?分析: 這道題是一個(gè)組合問題,采用窮舉法解決:令五分錢硬幣的個(gè)數(shù)為k,k的取值范圍為119 ;二分錢硬幣的個(gè)數(shù)為j,j的取值范圍為149 ;一分錢硬幣的個(gè)數(shù)則為100k5j2 ;n為計(jì)數(shù)器,累計(jì)兌換方案的總數(shù)。這樣利用二重循環(huán)就可以得到每一種組合。program s100;var i , j , k , n : integer;beginn := 0; 計(jì)數(shù)器n清0 for k := 1 to 19 do 五分硬幣的個(gè)數(shù) for j := 1 to 49 do begin 二分硬幣的個(gè)數(shù) i := 100k * 5j * 2 ; 一分硬幣的個(gè)數(shù) if i 1 then begin 想想:為什

11、么要加這一判斷 writeln ( 1 fen: , i , 2 fen:, j , 5 fen: , k ); n := n + 1; 計(jì)數(shù)器加1 end;end;writeln ( total = , n );end.程序: 、【例】輸出如下圖形,行數(shù)n由鍵盤輸入。*n行123nn行分析:如果覺得輸出這個(gè)圖形有困難的話,我們先做個(gè)最簡單的:讀入 n ,輸出n行,第1行輸出1,第2行輸出2, 這個(gè)程序很容易實(shí)現(xiàn):program x01;var n , i :integer;begin readln(n); for i:=1 to n do 循環(huán)控制變量i可以利用 writeln ( i );

12、 第i行輸出的數(shù)字是i end.*n行 接著,我們?cè)囍鴣磔敵鲞@樣的圖形:觀察這個(gè)圖形,可以發(fā)現(xiàn),第i行上正好有i個(gè) * ,我們可以利用二重循環(huán),外循環(huán)控制行數(shù),控制變量i表示正在輸出第i行;內(nèi)循環(huán)控制輸出 * ,控制變量j表示輸出j個(gè) * 。program x02;var n , i , j :integer;begin readln(n); for i:=1 to n do begin 為什么要加begin for j:=1 to i do write ( * ); 這里改成writeln行不?為什么? writeln; 這句刪去會(huì)出現(xiàn)什么情況? end;end. 然后,我們?cè)賹⑸厦娴某绦蛏?/p>

13、改改,輸出下面這個(gè)圖像:*n行進(jìn)一步觀察,發(fā)現(xiàn)這個(gè)圖形各行 * 數(shù)與i的對(duì)應(yīng)規(guī)律:第i行上有2*i-1個(gè) * ,因此,我們僅需修改控制輸出 * 數(shù)的那個(gè)位置:for i:=1 to n do begin for j:=1 to i do write ( * );2*i-1 writeln; *n行 end;最后,我們?cè)儆^察題目要輸出的這個(gè)圖形:第i行在 * 之前有n-i個(gè)空格,然后再輸出2*i-1個(gè) * 。程序如下:program x04;var n , i , j :integer;begin readln(n); for i:=1 to n do begin for j:=1 to n-i

14、 do write ( ); 輸出空格for j:=1 to i*2-1 do write ( * ); 想想,這里的控制變量j會(huì)不會(huì)出錯(cuò)? writeln; end;end.課后練習(xí)五:1、 閱讀下面程序,寫出程序的運(yùn)行結(jié)果。var i : integer ;beginfor i:=5 to 10 dowriteln (i*2-1);end.(1) 程序的運(yùn)行結(jié)果是: var i : integer ;beginfor i:=1 to 5 dofor j:=2 to i do writeln (*);end.(2) 程序的運(yùn)行結(jié)果是:(3) 程序的運(yùn)行結(jié)果是:var i,j : intege

15、r ;begin for i=5 downto 1 do begin for j=1 to 3 do write(*); writeln; end;end.var i,j : integer ;begin for i=1 to 5 do begin for j=1 to 5-i do write( ); for j=1 to i*2-1 do write( * ); writeln; end;end.(4) 程序的運(yùn)行結(jié)果是:2、編程求解下列問題。(1)假設(shè)你們學(xué)習(xí)小組有15個(gè)同學(xué),請(qǐng)你幫老師統(tǒng)計(jì)你們小組成績的總分和平均分。 輸入:15個(gè)人的成績 輸出:總分和平均分(2)求所有三位數(shù)的水仙花數(shù)

16、。 水仙花數(shù):一個(gè)數(shù)各位數(shù)字的立方和等于這個(gè)數(shù)本身,如:135333153 。(3)有一天小猴摘下了若干個(gè)桃子,當(dāng)即吃掉了一半,還覺得不過癮,又多吃了一個(gè);第二天接著吃了剩下的桃子中的一半,仍不過癮,又多吃了一個(gè);以后每天都吃尚存桃子的一半零一個(gè)。到第5天早上就只剩一個(gè),問小猴那天共摘下了多少個(gè)桃子?(4)相傳古代印度有一位宰相叫達(dá)依爾,是國際象棋的發(fā)明者,非常聰明。國王要獎(jiǎng)勵(lì)他,問他想要什么。達(dá)依爾說:“只要在國際象棋的棋盤上的第一個(gè)格子里放上一粒麥子,第二格放兩粒麥子,第三格放四粒麥子,以后每一格加倍,一直放到第64格為止,我就感恩不盡了?!眹跸耄骸?4格有多少,這還不容易?!庇谑橇钊丝竵硪淮溩樱芸炀陀猛炅?,又扛來一袋,又用完了。國王又令人扛來幾十袋麥子,還是不夠。國王非常奇怪,怎么需要這么

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論