Giáo án tin học 9
BÀI
CÂU LỆNH LẶP
KIẾN THỨC YÊU CẦU:
Biết xác định vấn đề nào có sử dụng đến câu lệnh
lặp, cách dùng câu lệnh lặp nào cho phù hợp.
Biết cách thoát khỏi các vòng lặp khi cần, biết
tránh làm vòng lặp vô tận.
KIẾN THỨC ĐẠT ĐƯỢC
Biết và nắm vững các câu lệnh lặp trong Pascal,
cách dùng câu lệnh cho phù hợp, khi nào nên dùng
câu lệnh FOR, WHILE và REPEAT.
Biết số lần lặp của từng câu lệnh.
Biết tránh những trường hợp sẽ làm cho vòng lặp
vô tận.
Biết dùng các câu lệnh để thoát khỏi vòng lặp khi
cần thiết.
I/ Câu lệnh FOR
Ta dùng câu lệnh lặp For khi biết trước số lần lặp.
Câu lệnh For có 2 dạng:
Dạng 1: For … to … do …
Dạng 2: For … downto … do …
1. Câu lệnh For … to … do …
FOR i:= bieuthuc1 TO bieuthuc2 DO
Caulenh;
i gọi là biến điều khiển, thuộc kiểu rời rạc.
Biểu thức 1 phải nhỏ hơn hoặc bằng biểu thức
2.
Writeln(i);
i := 12;
End;
2. Câu lệnh For … Dowto … Do …
FOR i:= Bieuthuc1 DOWNTO
bieuthuc2 DO
Caulenh;
i gọi là biến điều khiển, thuộc kiểu rời rạc.
Biểu thức 1 phải lớn hơn hoặc bằng biểu thức
2.
Ví dụ:
Program Vonglap_FOR2;
Var
x : integer;
Begin
For x := 12 Downto 1 Do
Writeln(‘Day la thang: ‘, x);
Readln;
End.
Chạy thử chương trình, bạn sẽ có kết quả sau:
Đây là tháng: 12
Đây là tháng: 11
Đây là tháng: 10
Đây là tháng: 9
Đây là tháng: 8
Đây là tháng: 7
Đây là tháng: 6
Đây là tháng: 5
Đây là tháng: 4
Đây là tháng: 3
to … do …;
Ví dụ: Tính tổng các số nguyên nhập vào cho đến
khi nhập vào số 0.
Program TinhTong;
Var
So : integer;
Tong : Longint;
Begin
Tong := 0;
Write(‘Ban nhap vao so nguyen bat ky,
nhap 0 de ket thuc. ‘);
Readln(So);
While So <> 0 do
Begin
Tong := Tong + So;
Readln(So);
End;
Writeln(‘Tong cac so vua nhap vao la: ‘,
Tong);
Readln;
End.
2. Lưu ý trong vòng lặp While
Khác với vòng lặp For, trong vòng lặp While,
số lần lặp không xác định được, nó tuỳ thuộc vào
người sử dụng, ví dụ như ở chương trình trên, số lần
lặp thực hiện mãi khi bạn chưa nhập vào số 0.
Bạn cần chú ý khi dùng điều kiện trong vòng
lặp While, nếu chọn điều kiện luôn luôn đúng thì
vòng lặp sẽ thực hiện vô tận, không thoát ra được, trừ
khi Caulenh có chứa một phát biểu Goto nhảy khỏi
End.
Chạy thử chương trình, giả sử nhập vào các số như
sau (sau mỗi lần nhập, gõ phím Enter):
2
2
3
4
1
0
Bạn thấy kết quả sẽ là :
Tong cac so vua nhap vao la: 12
Bien dem luc nay bang: 5
III/ Câu lệnh Repeat … Until
1. Câu lệnh Repeat … Until;
Dùng để lặp đi lặp lại một công việc cho đến
khi nào một điều kiện được thoả.
REPEAT
Caulenh 1;
Caulenh 2;
…………
…………
Caulenh n;
UNTIL Đieukien;
Các phát biểu bên trong thân Repeat được thực
hiện, sau đó sẽ kiểm tra biểu thức logic điều kiện, nếu
trị là True thì phát biểu Repeat thực hiện xong, nếu trị
là False thì quay lại thực hiện các phát biểu bên trong
Repeat, quá trình tiếp tục cho đến khi điều kiện là
4
1
0
Bạn thấy kết quả sẽ là:
Tong cac so vua nhap vao la: 12
Bien dem luc nay bang: 5
Kết quả này giống như ở vòng lặp While.
Ví dụ:
Program Vonglap_Repeat;
Var
x : integer;
Begin
x := 1;
While (x<=12) Do
Begin
Writeln(‘Day la thang: ‘,x);
x := x +1;
End;
Readln;
End.
Ví dụ:
Tính n giai thừa (n!). n! = 1*2*3* … *n.
Program Giaithua;
Var Gt : Longint;
i : integer;
n : integer;
Begin
i := 0;
Gt := 1;
Write(‘Ban nhap vao so n = ‘);
mới xét điều kiện lặp.
FOR: Thực hiện cho đến điều kiện biết trước.
WHiLE: Điều kiện lặp xét trước, đúng thì
thực hiện.
REPEAT: Điều kiện lặp xét sau, đúng thì
dừng.
Chú ý: Khi viết vòng lặp, cần cân nhắc giữa While và
repeat để chọn cho phù hợp.
2. Số lần lặp
Đối với vòng lặp FOR … TO … DO … số lần thực
hiện sẽ bằng (bieuthuc2 – bieuthuc 1) + 1.
Đối với vòng lặp FOR … DOWNTO … DO … số
lần thực hiện sẽ bằng (Bieuthuc1 – Bieuthuc2) +1.
Ví dụ:
For x:=1 to 5 do
Writeln(x, ‘ ‘);
Chạy thử chương trình, bạn sẽ được 1 2 3
4 5. Sẽ thực hiện 5 lần (5 - 1) +1.
For x:=5 downto 1 do
Writeln(x, ‘ ‘);
Chạy thử chương trình, bạn sẽ được 5 4 3 2 1. Sẽ
thực hiện 5 lần (5 – 1)+1.
For x:=1 To 1 do
Writeln(x, ‘ ‘);
Hoặc:
For x:=1 Downto 1 do
Writeln(x, ‘ ‘);
Chạy thử chương trình, bạn sẽ thấy kết quả là: 1.
thực hiện 1 lần (1 – 1)+1.
Until x = 6;
Readln;
End.
Chạy thử chương trình bạn thấy: 1 2 3 4 5.
Nếu bỏ câu lệnh x := x+1; chương trình cũng bị lặp
vô tận.
Bạn xem ví dụ sau để biết thêm về vòng lặp While
và Repeat.
Program Vonglap_While;
Var
i : integer;
Begin
i := 10;
While i <> 10 do
Writeln(i);
Readln;
End.
Chạy thử chương trình bạn sẽ không được gì hết,
vì vòng lặp While không thực hiện. Cũng ví dụ trên,
nhưng dùng vòng lặp Repeat.
Program Vonglap_Repeat;
Var i : integer;
Begin
i := 10;
Repeat
Writeln(i);
Until i = 10;
Readln;
End.
Chạy thử chương trình bạn sẽ được 10. Thực hiện