Kiến thức: - Biết được nhu cầu có cấu trúc lặp với số lần chưa biết trước trong ngôn ngữ lập trình.. - Biết ngôn ngữ lập trình dùng cấu trúc lặp với số lần chưa biết trước để chỉ dẫn máy
Trang 1Tiết: 50
I MỤC TIÊU:
1 Kiến thức:
- Biết được nhu cầu có cấu trúc lặp với số lần chưa biết trước trong ngôn ngữ lập trình
- Biết ngôn ngữ lập trình dùng cấu trúc lặp với số lần chưa biết trước để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc đến khi một điều kiện nào đó được thoả mãn
- Hiểu được hoạt động của câu lệnh lặp với số lần chưa biết trước while… do… trong ngôn ngữ Pascal
2 Kỹ năng:
- Rèn khả năng đọc chương trình, phân tích tác dụng các câu lệnh
- Viết được câu lệnh lặp ở những bài toán đơn giản
3 Thái độ:
- Ham thích môn học
- Tích cực học tập
II CHUẨN BỊ:
1 Giáo viên :
- SGK, tài liệu, giáo án
- Đồ dùng dạy học: máy tính
2 Học sinh :
- Đọc trước bài và học bài ở nhà
- SGK, Đồ dùng học tập
III PHƯƠNG PHÁP:
- Phương pháp thử, trực quan, thảo luận nhóm, thực hành
IV TIẾN TRÌNH DẠY HỌC:
1 Ổn định lớp :
2 Kiểm tra bài cũ:
Hãy cho biết cú pháp câu lệnh lặp với số lần chưa biết trước và giải thích ý nghĩa?
3 Bài mới:
HOẠT ĐỘNG 1: Giới thiệu bài
GV: Ở tiết trước, chúng ta đã được tìm hiểu cú pháp
của câu lệnh lặp với số lần chưa biết trước Chúng ta
tiếp tục tìm hiểu một số ví dụ vận dụng câu lệnh lặp
với số lần chưa biết trước vào giải bài toán
Tiết 50:
LẶP VỚI SỐ LẦN CHƯA BIẾT
TRƯỚC (tt)
HOẠT ĐỘNG 2: Ví dụ về lệnh lặp với số lần chưa biết trước
GV: Ta đã tìm hiểu thuật toán tính tổng n số trong ví dụ 2,
thuật toán đó được thể hiện bằng ngôn ngữ Pascal như thế
nào các em qua ví dụ 4
GV: Tính S=1+2+… >1000
S0
S S+1
S S+2
S S+3
…
GV: Cần cộng bao nhiêu số tự nhiên để tổng nhỏ nhất
2 Ví dụ về lệnh lặp với số lần chưa biết trước (tt).
Ví dụ 4: Tính S=1+2+3+ sao cho
tổng nhỏ nhất lớn hơn 1000
Trang 2HS: Không biết.
GV: Các em quan sát thấy các câu lệnh giống nhau Nếu
cô thay i=1,2,… thì tổng S thay bằng lệnh S S+?
HS: S S+i
GV: Lệnh S S+i lặp lại bao nhiêu lần?
HS: Không biết
GV: Ta sử dụng câu lệnh lặp nào để giải quyết bài toán?
HS: Lệnh lặp while…do…
GV: Điều kiện của câu lệnh lặp và câu lệnh?
HS: Điều kiện S<=1000
Câu lệnh S:= S+n; n:= n+1;
GV: Cho HS ghi chương trình vào vở
HS: Chép bài
GV: Yêu cầu HS khởi động chương trình Turbo pascal gõ
chương trình ví dụ 4 và chạy thử chương trình
HS: Thực hành
GV: Sau khi chạy chương trình em hãy cho biết kết quả?
HS: kết quả là n=45 và tổng nhỏ nhất lớn hơn 1000 là
1034
GV: Trong Pascal có những chương trình ngoài việc sử
dụng câu lệnh For do Ta cũng có thể sử dụng câu lệnh
While do thay cho câu lệnh For do mà vẫn cho
cùng một kết quả Để hiểu rõ hơn các em qua ví dụ 5
GV: Yêu cầu HS đọc đề bài
HS: Đọc bài
GV: Đề bài yêu cầu chúng ta làm gì?
HS: Viết chương trình tính tổng
T= 1+1/2+1/3+… +1/100
T0
T T+1/1
T T+1/2
T T+1/3
…
T T+1/100
GV: Các em quan sát thấy các câu lệnh giống nhau Nếu
cô thay i=1,2,… thì tổng S thay bằng lệnh T T+?
HS: T T+1/i
GV: Lệnh T T+1/i lặp lại bao nhiêu lần?
HS: 100 lần
GV: Ta sử dụng câu lệnh lặp nào để giải quyết bài toán?
HS: Lệnh lặp for…do…
GV: Em hãy cho cô biết cú pháp của câu lệnh For do
Hs: For <biến đếm> := <giá trị đầu> To <giá trị cuối> Do
<câu lệnh>;
GV: Em hãy cho cô biết giá trị đầu, giá trị cuối và câu
lệnh là gì?
Hs: - Giá trị đầu: 1
- Giá trị cuối: 100
- Câu lệnh: T := T + 1/i;
Var S,n: integer;
Begin
S:=0; n:=0;
While S<=1000 do Begin S:= S+n; n:= n+1 end;
Writeln ( ‘so n nho nhat de tong
>1000 la’,n);
Writeln (‘Tong dau tien >1000 la’,S);
Readln
End.
Ví dụ 5: SGK.
Program vidu5_1;
Var i: integer;
T: real;
Begin T:=0;
For i:=1 to 100 do T:=T+1/i; Writeln (T);
End
Trang 3GV: Cho HS chép chương trình vào vở.
HS: Chép bài vào vở
GV: Yêu cầu HS gõ chương trình vào máy và chạy thử
HS: Thực hành
GV: Nếu sử dụng câu lệnh while… do thì điều kiện của
chương trình là gì?
HS: i<=100
GV: Vòng lặp sẽ dừng lại khi nào?
HS: Dừng lại khi i>100
GV: Cho HS chép chương trình vào vở
HS: Chép bài
GV: Yêu cầu HS gõ chương trình vào máy và chạy thử
HS: Thực hành
GV: Sau khi chạy thử 2 chương trình, em hãy cho biết kết
quả?
HS: Kết quả giống nhau
GV: Qua ví dụ này cho ta thấy rằng chúng ta có thể sử
dụng câu lệnh While do thay cho câu lệnh for… do
Nhưng tùy trường hợp mà chúng ta sử dụng câu lệnh
for…do… thay cho câu lệnh while…do… vì lệnh lặp
while…do… chỉ phù hợp cho lệnh lặp với số lần chưa biết
trước còn câu lệnh for…do phù hợp lệnh lặp với số lần
biết trước
Program vidu5_2;
Var i: integer;
T: real;
Begin T:=0;
i:=1;
while i<=100 do begin T:=T+1/i; i:=i+1; end;
end
HOẠT ĐỘNG 3: Lặp vô hạn lần – lỗi lập trình cần tránh.
GV: Khi chương trình sử dụng cấu trúc lặp cần chú ý
tránh tạo nên vòng lặp không bao giờ kết thúc Đó được
gọi là lặp vô hạn lần Vậy thế nào là lặp vô hạn lần chúng
ta qua phần 3
GV: Các em quan sát ví dụ trong SGK
Var a: integer;
Begin
a:=5;
while a<6 do writeln (‘A’);
end.
HS: Quan Sát
GV: Em hãy cho biết điều kiện của bài toán là gì?
HS: điều kiện dừng là a<6
GV: Trong chương trình trên, giá trị của biến a luôn luôn
bằng 5, điều kiện a<6 luôn luôn đúng nên lệnh writeln
(‘A’) luôn được thực hiện
GV: Do vậy, khi thực hiện vòng lặp, điều kiện trong câu
lệnh phải được thay đổi để sớm hay muộn giá trị của điều
kiện được chuyển từ đúng sang sai Chỉ như thế chương
trình mới không rơi vào những vòng lặp vô tận
Lưu ý: Khi thực hiện vòng lặp, While ….do cần xác định
được điều kiện trong câu lệnh sau một số lần sẽ chuyển từ
đúng sang sai để thoát khỏi vòng lặp Không rơi vào
những “Vòng lặp vô tận”
- Trong vòng lặp While do điều kiện được kiểm tra trước
3 Lặp vô hạn lần – lỗi lập trình cần tránh.
Var a: integer;
Begin
a:=5;
while a<6 do writeln (‘A’);
end.
Trang 4khi thực hiện cậu lệnh, do đó có thể có trường hợp câu
lệnh không được thực hiện một lần nào
GV: Cho HS ghi bài
HS: Ghi bài
4 Củng cố:
- Nêu những dạng câu lệnh lặp mà em đã được học?
- Trả lời câu hỏi 4, 5 trang 71 SGK
5 Dặn dò:
- Về nhà học bài
- Coi trước bài thực hành 6 “Sử dụng lệnh lặp While do ”