《廣東省汕頭市金山中學高中信息技術 奧林匹克信息學競賽班進階篇 pascal02 循環(huán)語句課件》由會員分享,可在線閱讀,更多相關《廣東省汕頭市金山中學高中信息技術 奧林匹克信息學競賽班進階篇 pascal02 循環(huán)語句課件(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、PASCAL基本語句FOR 語句語句 循環(huán)語句循環(huán)語句(1)for 1)for 語句語句s := 0; s置初值0for i := 1 to 100 do s := s + i ;writeln(s=,s); 輸出累加和s下一條語句控制變量:初值控制變量初值1循環(huán)體變量終值falsetrue(a)DOWNTO情況s := 0; for i := 100 downto 1 do s := s + i ;writeln(s=,s); FOR 語句語句 for 語句注意事項 控制變量不能為控制變量不能為realreal型型 for for語句的步長是一定的,不要在循環(huán)體內改語句的步長是一定的,不要在
2、循環(huán)體內改 變循環(huán)控制變量變循環(huán)控制變量如:如: for k := 1 to 100 do begin k := 3; 循環(huán)體中改變了循環(huán)變量循環(huán)體中改變了循環(huán)變量k的值的值 endFOR 語句語句 for 語句注意事項語句注意事項 forfor語句執(zhí)行完,控制變量無定義,語句執(zhí)行完,控制變量無定義, 因此因此forfor語句的后續(xù)語句不能認為控制變量的語句的后續(xù)語句不能認為控制變量的值是終值而加以利用。值是終值而加以利用。 當初值超過終值時,不執(zhí)行循環(huán),循環(huán)次數(shù)為當初值超過終值時,不執(zhí)行循環(huán),循環(huán)次數(shù)為0 0。 例例1:換零錢:換零錢 例:換零錢例:換零錢 把一張一元鈔票換成一分、二分和五分
3、的硬幣把一張一元鈔票換成一分、二分和五分的硬幣( (每每種至少一枚種至少一枚) ),問有哪幾種換法?,問有哪幾種換法? 分析分析 采用窮舉法解決:采用窮舉法解決:令五分錢硬幣的個數(shù)為令五分錢硬幣的個數(shù)為k k,k k的取值范圍為的取值范圍為1 119 19 ;二分錢硬幣的個數(shù)為二分錢硬幣的個數(shù)為j j,j j的取值范圍為的取值范圍為1 149 49 ;一分錢硬幣的個數(shù)則為一分錢硬幣的個數(shù)則為100100k k5 5j j2 2 ;n n為計數(shù)器,累計兌換方案的總數(shù)。為計數(shù)器,累計兌換方案的總數(shù)。這樣利用二重循環(huán)就可以得到每一種組合。這樣利用二重循環(huán)就可以得到每一種組合。 例例1:換零錢:換零錢
4、program s100;var i , j , k , n : integer;beginn := 0; 計數(shù)器n清0 for k := 1 to 19 do 五分硬幣的個數(shù) for j := 1 to 49 do begin 二分硬幣的個數(shù) i := 100k * 5j * 2 ; 一分硬幣的個數(shù) if i 1 then begin 想想:為什么要加這一判斷 writeln ( 1 fen: , i , 2 fen:, j , 5 fen: , k ); n := n + 1; 計數(shù)器加1 end; if end;writeln ( total = , n );end.FOR 語句語句 f
5、or 語句嵌套打印 * 陣WHILE 語句語句 While語句條件下一條語句循環(huán)體falsetruevar i : longint;begin i:=1; while i50 do begin writeln ( i ); i:=i+3; end;end.輸出:輸出:1 4 7 10 13 16 WHILE 語句語句不小心出現(xiàn)死循環(huán)怎么辦?不小心出現(xiàn)死循環(huán)怎么辦?按按Ctrl+Break強制中斷程序運強制中斷程序運行。行。var i : longint;begin i:=1; while i50 do begin writeln ( i ); i:=i+3; end;end. 注意防止死循環(huán)注
6、意防止死循環(huán)循環(huán)體中必須有修改循環(huán)體中必須有修改WHILE后面的循環(huán)終止后面的循環(huán)終止條件操作條件操作 WHILE 語句語句 例:求最大公約數(shù)例:求最大公約數(shù)輾轉相除法輾轉相除法如果如果 x可以被可以被 y 整除(即整除(即 x mod y=0),則),則 y 為為 x 和和y 的最大公約數(shù)的最大公約數(shù);否則,設否則,設 z為為x除以除以y的余數(shù)(的余數(shù)( z:=x mod y),再設),再設 x:=y; y:=z;看看x可以被可以被 y 整除,若能整除,則整除,若能整除,則y為為x 和和y 的最大公約數(shù)的最大公約數(shù); 否則,繼續(xù)輾轉相除下去否則,繼續(xù)輾轉相除下去 WHILE 語句語句 例:求
7、最大公約數(shù)例:求最大公約數(shù)輾轉相除法輾轉相除法例如:例如: x=24 y=15x=24 y=15 x y z x y z 24 24 15 = 1 15 = 1 9 9 15 15 9 = 1 9 = 1 6 69 9 6 = 1 6 = 1 3 36 6 3 = 2 3 = 2 0 0 WHILE 語句語句 例:求最大公約數(shù)例:求最大公約數(shù)輾轉相除法輾轉相除法var a, b, c : longint var a, b, c : longint ;beginbegin readln(a,b); readln(a,b); while a mod b0 do begin while a mod
8、b0 do begin c:=a mod b; c:=a mod b; a:=b; a:=b; b:=c; b:=c; end; end; writeln(b); writeln(b);end.end.REPEAT 語句語句 repeat.until語句條件條件循環(huán)體循環(huán)體N-S圖表示圖表示:流程圖表示流程圖表示:truefalse語句語句n語句語句1條件條件REPEAT 語句語句 repeat.until語句var i : longint;begin i:=1; while i=50;end.REPEAT 語句語句 試商法判斷質數(shù)試商法判斷質數(shù) 輸入一個大于輸入一個大于1的整數(shù)的整數(shù)N,若為
9、質數(shù),輸出,若為質數(shù),輸出T,否則輸出,否則輸出F。 var x,i: integer;var x,i: integer; f : boolean; f : boolean;beginbegin readln(x); readln(x); f:=true; f:=true; i:=2; i:=2; if x2 then if x2 then repeat repeat if x mod i=0 then f:=false; if x mod i=0 then f:=false; i:=i+1; i:=i+1; until (isqrt(x) or (f=false); until (isqrt(x) or (f=false); if f=true then writeln( if f=true then writeln(TT) ) else writeln( else writeln(FF););end.end.i i能否被能否被x x整除整除沒必要從沒必要從2 2檢測到檢測到n-1n-1 x=a*b (a=b)24=2*12 =3*8 =4*6