Ngày soạn: 22
Ngày giảng: 24
Tiết theo PPCT: 15
§10. CẤU TRÚC LẶP (Tiết 3)
I - Mục tiêu bài học
1. Kiến thức
- Biết được ý nghĩa của cấu trúc lặp có số lần lặp chưa xác định.
- Biết được cấu trúc chung của lệnh lặp While trong ngôn ngữ Pascal.
- Biết được sự thực hiện của máy khi gặp lệnh lặp While.
2. Kĩ năng
- Phân biệt được sự giống và khác nhau giữa cấu trúc lặp For và While.
- Sử dụng đúng lệnh lặp While trong lập trình.
- Bước đầu biết lựa chọn đúng dạng lệnh lặp để lập trình giải quyết được một số bài
toán đơn giản.
II – Phương pháp, phương tiện dạy học
- Phương pháp: Thuyết trình, giảng giải, đàm thoại
- Phương tiện: sgk, máy chiếu
III - Tiến trình bài học
1. Ổn định tổ chức lớp
- Lớp:
- Sĩ số:
- Lí do vắng:
2. Kiểm tra bài cũ
3. Nội dung bài mới
Hoạt động của giáo viên và học sinh Nội dung
? Sự khác nhau của bài toán này với bài
toán đã viết ở tiết trước?
? Lặp bao nhiêu lần?
? Bài toán dừng lặp khi nào?
3. Lặp với số lần chưa biết trước và câu
lệnh While – do
Viết chương trình tính tổng:
S=
a
1
+
1
1
+a
+
2
1
+a
+ +
Na +
1
+ cho đến khi
Na +
1
<0,0001 thì dừng
Thuật toán Tong_2:
1
? Trong thuật toán trên có những bước nào
lặp đi lặp lại nhiều lần?
- Bước 2 đến bước 4
Như vậy, việc lặp lại số lần chưa biết
trước sẽ được kết thúc khi điều kiện cho
trước được thoả mãn
Câu lệnh sau từ khoá Do sẽ được thực
hiện khi biểu thức điều kiện còn nhận giá trị
True. Biểu thức điều kiện được tính trước
khi thực hiện câu lệnh, nhưng nếu ngay từ
đầu biểu thức điều kiện đã nhận giá trị
False thì câu lệnh không được thực hiện.
? Ý nghĩa của câu lệnh While – do?
? Vậy trường hợp btđk luôn nhận giá trị
True thì câu lệnh được thực hiện mãi gọi là
gi?
- Lặp vô hạn
? bài toán sử dụng những biến nào? Kiểu
dữ liệu?
B
1
: S:=
a
1
; N:=0;
B
2
:Nếu
Na +
1
<0,0001 thì chuyển đến B
5
;
B
3
:N:=N+1;
B
4
:S:=S+
Na +
1
;
B
5
:Đưa S ra màn hình rồi kết thúc
Để mô tả cấu trúc lặp như vậy,Pascal
dùng câu lệnh while-do có dạng:
While <điều kiện> do <câu lệnh>;
Trong đó:- Điều kiện là biểu thức logic;
- Câu lệnh là 1 câu lệnh đơn hoặc
lệnh ghép
* Ý nghĩa của câu lệnh While – do:
Câu lệnh sau từ khoá Do còn được thực
hiện khi btđk còn đúng, sau đó quay lại kiểm
tra điều kiện.
Ví dụ 1:
Chương trình tính Tong_2:
Program Bai_toan;
2
? Xác định Input? Output của bài toán?
- Input: 2 số nguyên M, N
- Output: ƯCLN
? Bài toán dừng lặp khi nào?
- Khi M = N
? Điều kiện để tiếp tục lặp là gì?
- Điều kiện: m<>n
? Các lệnh cần lặp lại là gì?
- Lệnh cần lặp:M:=M - N; hoặc N:= N-M;
? Những biến được sử dụng trong bài toán?
Kiểu dữ liệu?
Uses Crt;
Var a,N:Integer;
S:Real;
BEGIN
Clrscr;
Write(‘Nhap gia tri cua a = ‘);
Readln(a);
S:=1/a;N:=1;
WHILE 1/(a+N)>=0.0001 DO
BEGIN
N:=N+1;
S:=S+1/(a+N);
END;
Writeln(‘Gia tri cua tong S = ‘, S:8:3);
Readln;
END.
Ví dụ 2:
Nhập vào 2 số nguyên dương M, N. Tìm
ƯCLN của 2 số đó.
Thuật toán:
B1: Nhập M,N;
B2 : Nếu M = N thì lấy giá trị chung này làm
UCLN, chuyển B
B3: Nếu M>N thì M:=M-N, ngược lại thì
N:=N-M;
B4: Quay lại B2
B5: Đưa ra ƯCLN rồi kết thúc
Chương trình thể hiện thuật toán Tìm ƯCLN
Program UCLN;
Uses Crt;
3
Var M,N:Integer;
BEGIN
Clrscr;
Write(‘Nhap gia tri cua M = ‘);
Readln(M);
Write(‘Nhap gia tri cua N = ‘);
Readln(N);
WHILE M<>N DO
IF M> N THEN
M:=M – N
ELSE
N:= N – M;
Writeln(‘UCLN =’, M);
Readln;
END.
Chú ý: SGK – Tr.48
IV - Củng cố
- Cấu trúc và hoạt động của câu lệnh While – Do
- Câu hỏi củng cố:
Có thể dùng câu lệnh While – do thay thế cho câu lệnh for – do được không? Nếu
được hãy thực hiện điều đó với chương trình Tong_1a.
Trả lời:
Có thể thay thế đoạn chương trình chứa câu lệnh for – do (dạng tiến) bằng đoạn
chương trình chứa câu lệnh While – do như sau:
i:= <giá trị đầu>;
While (i<=giá trị cuối) do
Begin
<Câu lệnh>;
<tăng i lên 1 đơn vị>;
end;
Program UCLN;
Uses Crt;
Var a,N:Integer;
S:Real;
BEGIN
Clrscr;
Write(‘Nhap gia tri cua a = ‘);
Readln(a);
S:=1/a;N:=1;
4
WHILE N < 100 DO
BEGIN
N:=N+1;
S:=S+1/(a+N);
END;
Writeln(‘Gia tri cua tong S = ‘, S:8:3);
Readln;
END.
5