一、for語句
格式 for 控制變數:=初值 to 終值 do 語句; for 控制變數:=初值 downto 終值 do 語句;
for語句執行過程:
1、先將初值賦給左邊的變數(稱為迴圈控制變數); 2、判斷迴圈控制變數的值是否已「超過」終值,如已超過,則跳到步驟5; 3、果末超過終值,則執行do後面的那個語句(稱為迴圈體); 4、控制變數返回步驟2; 5、迴圈結束,執行for迴圈後語句。
說明: 迴圈控制變數必須是順序型別。例如,可以是整型、字元型等,但不能為實型。 迴圈控制變數的值選用to則為遞增;選用downto則遞減。 迴圈控制變數的值「超過」終值,對遞增型迴圈,「超過」指大於,對遞減型迴圈,「超過」指小於。 迴圈控制變數的初值和終值一經確定,迴圈次數就確定了。但是在迴圈體內對迴圈變數的值進行修改,常常會使得迴圈提前結束或進入死環。建議不要在迴圈體中隨意修改控制變數的值。 for語句中的初值、終值都可以是順序型別的常量、變數、表示式。
例5_1、求s=1+2+3+…+ 100 var n,i : integer; {i為迴圈變數} s : longint; {s為累加器} begin write('input n='); readln(n); s:=0; for i:=2 to n do s:=s+i; {從2到n累加到s中}
writeln('1+2+3+…+ 100=',s);
end.
例5_2、輸出斐波那契數列的前20項。
規律: f1=0 (n=1)
f2=1 (n=2)
fn=fn-1+fn-2 (n>=3) 即 0,1,1,2,3,5,8,13,21,……
分析:由公式fn=fn-1+fn-2,採用遞推演算法求解。
方法一
var a,b,i: longint;
begin
a:=0; b:=1; write(a, ', ',b);
for i=2 to 10 do
begin a:=a+b; b:=a+b; write( ', 'a, ', ',b); end;
end.
方法二
var a,b,c,i:integer;
begin
a:=0; b:=1; write(a, ', ',b);
for i=3 to 20 do
begin c:=a+b; a:= b; b:=c; write(', ',c); end;
end.
二、while 當型迴圈語句
對於for迴圈有時也稱為計數迴圈,當迴圈次數未知,只能根據某一條件來決定是否進行迴圈時,用while 語句或repeat語句實現迴圈更方便。 格式: while 布林表示式 do ; 《迴圈體》 while語句的執行過程為: 1、判斷布林表示式的值,布林表示式的值為true時,執行do後面的語句(步驟2),否則執行步驟4; 2、執行迴圈體語句; 3、返回步驟1; 4、結束迴圈,執行while的下乙個語句。 說明: while語句的特點是先判斷,後執行。 當布林表示式成立時,重複執行do後面迴圈體的語句。
例4_3、斐波那契數列的第n項的值恰好大於10000,求n。 var a,b,c,n: integer;
begin a:=0; b:=1; n:=2; while c<=10000 do begin
c:=a+b; a:=b; b:=c; n:=n+1; end; writlen('n=',n);
end.
例4_4、求兩個正整數m和n的最大公約數。 分析:採用輾轉相除法求解,分別用m、n、r表示被除數、除數、餘數。 1、求m/n的餘數r;
2、若r=0,則n為最大公約數,若r≠0,執行第3步; 3、將n的值賦於m,將r的值賦於n; 4、返回重新執行第1步。 var m,n,r:integer; begin writeln('input m,n:'); readln(m,n); r:=m mod n; while r<>0 do begin m:=n; n:=r; r:=m mod n end; writeln('the greatest common divide is: ',n); end.
二、repeat-until直到型迴圈語句 repeat-until語句的含義是 「重複執行迴圈,直到指定的條件為真時為止」。 直到迴圈語句的一般形式: repeat 語句1; : 語句n; until 布林表示式; repeat與until之間的所有語句稱為迴圈體。 說明: 1、repeat語句的特點是:先執行迴圈,後判斷結束條件,因而至少要執行一次迴圈體。 2、repeat-until是乙個整體,它是乙個(構造型)語句,不要誤認為repeat是乙個語句, until是另乙個語句。 3、repeat迴圈體可以是若干個語句,不需用begin和end。
while迴圈和repeat迴圈是可以相互轉化的。
例5_5、兩個正整數的最大公約數,可用repeat-until迴圈實現:
本例輸出語句中有m、n的原值,所以在程式中增加了兩個中間變數a、b。 var m,n,r,a,b : integer; begin write('input m,n='); readln(m,n);
a:=m; b:=n; repeat r:=a mod b; a:=b; b:=r; until r=0; writeln('the greatest common divide of ',m, 'and ',n, 'is ',a); end.
一般說來,用for 迴圈比較簡明,只要能用for迴圈,就盡量作用for迴圈。只在無法使用for迴圈時才用while迴圈和repeat-until迴圈, for 迴圈在大多數場合也能用whiel和repeat-until迴圈來代替。一般for迴圈用於有確定次數的迴圈,而while和repeat-until 迴圈用於未確定迴圈次數的迴圈
Delphi基礎語法
1 lowercase const s string string uppercase const s string string 2 comparestr const s1,s2 string integer 本函式區分大小寫,是對比字母ascii的值,得出值的差,是從第乙個字母開始對比,如果對比...
第2章 基礎語法 迴圈語句
本章節將向大家介紹python的迴圈語句,程式在一般情況下是按順序執行的。程式語言提供了各種控制結構,允許更複雜的執行路徑。迴圈語句允許我們執行乙個語句或語句組多次,下面是在大多數程式語言中的迴圈語句的一般形式 python提供了for迴圈和while迴圈 在python中沒有do.while迴圈 ...
swift基礎語法 13 for迴圈語句
oc int sum 0 for int i 0 i 10 i nslog d sum 輸出結果 10 int sum 0 int i 0 for i 10 i nslog d sum 輸出結果 10 int sum 0 int i 0 for i 10 nslog d sum 輸出結果 10 in...