Tải bản đầy đủ (.pdf) (36 trang)

Giáo án tin học 9 - BÀI CÂU LỆNH LẶP KIẾN THỨC YÊU CẦU ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (221.41 KB, 36 trang )

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.


Ví dụ:
Program Vonglap_FOR1;
Var
x : integer;
Begin
For x := 1 To 12 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: 1
Đây là tháng: 2
Đây là tháng: 3
Đây là tháng: 4
Đây là tháng: 5
Đây là tháng: 6
Đây là tháng: 7
Đây là tháng: 8
Đây là tháng: 9
Đây là tháng: 10
Đây là tháng: 11
Đây là tháng: 12

Ghi chú:
Không nên thay đổi trị của biến điều khiển i bên
trong phát biểu Caulenh.
Ví dụ:
Phát biểu sau sẽ chạy vô tận
For i:= 1 to 8 do
Begin

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

Đây là tháng: 2
Đây là tháng: 1
II/ Câu lệnh WHILE
1. Câu lệnh WHILE … DO …;
Dùng để lặp đi lặp lại một công việc trong khi một
điều kiện còn được thoả
Phát biểu While có dạng:
WHILE Dieukien DO
Caulenh;
 Dieukien: Biểu thức logic.
 Trước hết điều kiện được xét, nếu giá trị là False,
vòng lặp While sẽ kết thúc, nếu là True thì phát biểu
caulenh được thực hiện, sau khi thực hiện xong, quay
lại kiểm tra điều kiện, công việc cứ tiếp tục như lập
luận ở trên cho đến khi điều kiện có giá trị là False.
Ví dụ:
Program Vonglap_While;
Var
x : integer;
Begin
x := 1;
While (x<=12) Do
Begin
Writeln(‘Day la thang: ‘,x);
x := x +1;
End;
Readln;
End.

Bạn thấy kết quả như ví dụ trong vòng lặp For …

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

vòng lặp While.
Ví dụ : While True do Writeln(‘Se lap
vo tan’);
 Bạn thử thêm vào đoạn chương trình trên một
biến Dem có kiểu nguyên, gán cho biến này bằng 0,
cứ mỗi lần điều kiện While đúng biến đếm sẽ tăng
lên 1 (kiểm tra điều kiện trước, thực hiện biến dem
nếu điều kiện thoả). Bạn sẽ thấy số lần vòng lặp
While thực hiện sẽ bằng biến đếm. bạn xem ví dụ
sau:
Program TinhTong;
Var So : integer;
Tong : Longint;
Dem : integer;
Begin
Dem := 0;
Tong := 0;
Write(‘Ban nhap vao so nguyen bat ky, nhap 0
de ket thuc. ‘);
Readln(So);
While So <> 0 do
Begin
Dem := Dem + 1;
Tong := Tong + So;
Readln(So);
End;
Writeln(‘Tong cac so vua nhap vao la: ‘,
Tong);
Writeln(‘Bien dem luc nay bang: ‘,Dem);
Readln;

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à

True.
V í dụ:
Program TinhTong;
Var
So : integer;
Tong : Longint;
Dem : integer;
Begin
Dem := 0;
Tong := 0;
Write(‘Ban nhap vao so nguyen bat ky,
nhap 0 de ket thuc. ‘);
Readln(So);
Repeat
Begin
Dem := Dem + 1;
Tong := Tong + So;
Readln(So);
End;
Until So = 0;
Writeln(‘Tong cac so vua nhap vao la: ‘,
Tong);
Writeln(‘Bien dem luc nay bang: ‘,Dem);
Readln;
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
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 = ‘);

Readln(n);
Repeat
i := i + 1;
Gt := Gt * i;
Until i = n;
Writeln(n, ‘ giai thua = ‘, n);
Readln;
End.
2. Lưu ý vòng lặp Repeat
 Khác với vòng lặp For, trong vòng lặp Repeat,
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 i còn nhỏ hơn n.
 Bạn cần chú ý khi dùng điều kiện trong vòng
lặp Repeat, nếu chọn điều kiện luôn luôn sai 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 vòng
lặp Repeat.
 Trong câu lệnh Repeat …Until, hành động
được thực hiện rồi mới xét điều kiện lặp.

IV/ So sánh đặc điểm của các vòng lặp For, While,
Repeat
1. Điều kiện lặp
 Với vòng lặp FOR thì điều kiện lặp đã biết
trước, còn vòng lặp While và Repeat thì chưa biết
trước.
 So sánh While với Repeat. Với vòng lặp
While, điều kiện lặp được xét trước hành động. Với
vòng lặp Repeat thì hành động được thực hiện rồi

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.

 Đối với vòng lặp WHiLE, bạn xem ví dụ sau:
Ví dụ:
Program Vonglap_While;
Var
x:integer;
Begin
x:=1;
While x<>6 do
Begin
Write(x, ‘ ‘);
x:=x+1;
End;
Readln;
End.
Chạy thử chương trình bạn thấy: 1 2 3 4 5.
Ghi chú: Nếu bỏ câu lệnh x:= x+1; trong vòng lặp,
chương trình sẽ bị lặp vô tận. Bạn thử suy nghĩ tại
sao như vậy?
 Đối với vòng lặp REPEAT, bạn xem ví dụ sau:
Ví dụ:
Program Vonglap_Repeat;
Var
x:integer;
Begin
x:=1;
Repeat
Begin
Write(x, ‘ ‘);
x:=x+1;
End;

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

xong mới kiểm tra điều kiện, khác với vòng lặp
While, kiểm tra điều kiện ngay từ đầu.

3. Điều kiện thoát
 Đối với vòng lặp FOR: Khi giá trị của biến
điều khiển bằng bieuthuc2, thực hiện xong rồi
thoát.
 Với vòng lặp WHILE: Khi điều kiện sai sẽ
thoát khỏi vòng lặp.
 Với vòng lặp REPEAT: Khi điều kiện đúng thì
sẽ thoát khỏi vòng lặp.

TÓM LƯỢC

 Khi biết trước số lần lặp, chúng ta sẽ dùng vòng
lặp FOR. Nếu biểu thức 1 nhỏ hơn biểu thức 2, ta
dùng For … to … do, ngược lại thì chúng ta dùng
For … downto … do ….

×