+ 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 thỏa mãn.. + Hiểu hoạt độn
Trang 1GIÁO ÁN MÔN TIN HỌC
TUẦN 26 Tiết PPCT: 13 Tiết TKB: 3 LỚP: 8/1
Ngày soạn : 27/02/2010 Ngày dạy : 02/03/2010 GVHD: La Thị Huyền Đan
SV dạy: Trần Ngọc Khoa
BÀI 8 LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
I MỤC TIÊU
- Kiến thức:
+ Biết nhu cầu cần 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 thỏa mãn
+ Hiểu 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 Pascal
- Kỹ năng: vận dụng được câu lệnh While do để giải các bài tập có cấu trúc
lặp với số lần chưa biết trước
- Thái độ: tập trung, tích cực trong giờ học
II CHUẨN BỊ
- GV: giáo án, sgk, bảng phụ
- HS: xem kỹ bài cũ, đọc trước bài mới
III TIẾN TRÌNH BÀI DẠY
HĐ1: Kiểm tra bài cũ, đặt vấn đề vào bài mới ( 8’)
- HS:
(?) Câu lệnh For to do dùng để làm gì?
(?) Cho biết cấu trúc của câu lệnh lặp For to do?
Trang 2+ Cho đoạn chương trình sau
V a r i , j : i n t e g e r ;
b e g i n
j : = 0 ;
F o r i : = 1 ; t o 3 d o j : = j + i ;
e n d ;
(?) Hãy kiểm tra xem chương trình có lỗi hay không và cho biết sau khi thực
hiện chương trình, biến j sẽ mang giá trị bằng bao nhiêu?
- GV nhận xét, cho điểm
- Đặt vấn đề vào bài mới:
Xét bài toán sau:
“Tính tổng S của 100 số tự nhiên đầu tiên 1, 2, 3, 100
S = 1 + 2 + 3 + … + 100”
Với bài toán trên, ta nhận thấy tổng S sẽ được tính sau 99 lần lặp lại thao tác
cộng, ta dễ dàng giải quyết bài toán bằng lệnh lặp For to do trong Turbo Pascal.
Nhưng nếu như bài toán trên trở thành
“Tính tổng S các số tự nhiên đầu tiên S = 1 + 2 + 3 + … cho đến khi
S>1000”
Vấn đề đặt ra ở đây là chúng ta phải thực hiện thao tác cộng bao nhiêu lần để điều kiện S>1000 được thỏa mãn Rõ ràng ta thấy xuất hiện sự lặp lại thao tác cộng với số lần chưa biết trước Vậy, lặp với số lần chưa biết trước là như thế nào? Trong ngôn ngữ lập trình Pascal được thể hiện ra sao? Để tìm hiểu kỹ hơn về vấn
đề này, chúng ta vào bài 8
Bài 8 LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Trước tiên ta cần hiểu rõ thế nào là lặp với số lần chưa biết trước thông qua
một số ví dụ
Trang 3HĐ2: 1) Tìm hiểu một số ví dụ về Các hoạt động lặp với số lần chưa biết
trước (20’)
a) GV cho một số ví dụ
- Gieo hai hạt xí ngầu cho đến
khi được hai mặt có cùng số
nút
(?) Phải gieo bao nhiêu lần?
(?) Khi nào ngừng gieo?
- Thử nhiều chìa khóa vào một
ổ khóa cho đến khi tìm được
đúng chìa khóa của ổ khóa
(?) Phải thử bao nhiêu lần?
(?) Khi nào ngừng thử?
- HS ghi nhận
- Không thể biết trước
- Khi hai mặt cùng số nút
- HS ghi nhận
- Không thể biết trước
- Khi tìm được đúng chìa khóa để mở ổ khóa
1 Các hoạt động lặp với
số lần chưa biết trước
- Nhận xét: có sự lặp lại cho
đến khi thỏa mãn một điều
kiện nào đó Xét ví dụ trong
SGK để làm rõ vấn đề này
- HS ghi nhận
b) Xét Ví dụ 1 SGK
- Gọi HS đọc Ví dụ 1
- GV phân tích vế đầu: bạn
Nam lặp lại thao tác gọi điện
thoại trong 3 lần
(?) Việc bạn Nam thực hiện ba
cuộc gọi có phải là hoạt động
lặp với số lần chưa biết trước
hay là hoạt động lặp với số lần
biết trước ?
- Đó là hoạt động lặp với
số lần lặp biết trước
a) Ví dụ 1 SGK trang 67
- GV phân tích vế sau: bạn
Trang 4thoại cho đến khi nào có người
nhấc máy
(?) Việc gọi điện thoại cho đến
khi có người nhấc máy là hoạt
động lặp với số lần biết trước
hay chưa biết trước?
- Hoạt động lặp với số lần chưa biết trước
(?) Khi nào thì hoạt động lặp
lại này kết thúc?
- Khi có người nhấc máy nghe điện thoại
(?) Nếu không có người bắt
máy thì sẽ như thế nào?
- Tiếp tục gọi cho đến khi
có người nhấc máy
- Ta thấy có sự lặp lại các thao
tác tương tự nhau (gieo xí
ngầu, thử chìa khóa, gọi điện
thoại) với số lần lặp là chưa thể
biết trước, cho đến khi thỏa
mãn một điều kiện nào đó (hai
mặt có cùng số nút, tìm đúng
chìa khóa, có người nhấc máy
nghe điện thoại) Đây chính là
hoạt động lặp với số lần chưa
biết trước Ta sẽ đi sâu vào vấn
đề này qua Ví dụ 2
c) Xét Ví dụ 2
- Gọi HS đọc Ví dụ 2 - Cá nhân HS đọc
b) Ví dụ 2 SGK 67 (?) Bài toán yêu cầu làm gì? - Cá nhân HS dựa vào
SGK trả lời
(?) Hãy giải thích cụm từ
“Tổng tự nhiên nhỏ nhất lớn
hơn 1000”?
- Cộng các số tự nhiên đến một giá trị n nào đó thì tổng S sẽ lớn hơn 1000
Giá trị S tại thời điểm đó
Trang 5gọi là “Tổng tự nhiên nhỏ
nhất lớn hơn 1000”.
- GV nhận xét, tóm ý - HS ghi nhận
- Gợi ý hướng giải quyết bài
toán:
+ Gán S0 =0;
+ Tính S1 : S1 = S0 + n (n=1);
+ Xét điều kiện, nếu S1<1000
thì tính S2=S1+n (n=2); nếu
S1>1000 thì dừng lại
+ Thực hiện tương tự với
n=3,4… cho đến khi có một số
n mà Sn>1000
- HS ghi nhận
- Cho HS (chia 4 nhóm) thảo
luận nhóm (trong 4 phút) làm
rõ các bước của thuật toán ở Ví
dụ 2
(?) Biến n có ý nghĩa gì?
(?) Giải thích từng bước của
thuật toán?
- Thảo luận nhóm
- Lưu trữ giá trị tăng dần của các số tự nhiên
- B1: gán giá trị cho biến;
B2: thực hiện thao tác so sánh Nếu S<= 1000 thì tăng n, tức gán giá trị của
số tự nhiên tiếp theo vào
n, ngược lại thì kết thúc bài toán
B3: thực hiện cộng tổng
S = S +n và trở về B2.
B4: in kết quả.
(?) Ở ví dụ 2 ta có xác định - Không thể xác định
Trang 6(?) Vòng lặp phụ thuộc vào
điều kiện nào?
- Phụ thuộc vào điều kiện S<=1000
(?) Khi nào kết thúc vòng lặp? - Khi S>1000 (tức điều
kiện sai)
(?) Tổng quát : việc lặp với số
lần chưa biết trước phụ thuộc
vào điều gì? Phụ thuộc như thế
nào?
- Cá nhân HS trả lời - Việc lặp với số lần chưa
biết trước phụ thuộc vào một điều kiện cụ thể nào
đó có được thỏa mãn hay không
- Gọi HS đọc nội dung SGK - Cá nhân HS đọc
- Treo hình 39 (SGK 68) và
gọi HS mô tả
- GV nhận xét
- Ta đã hiểu được thế nào là
thao tác lặp với số lần chưa
biết trước Vậy trong Pascal
thao tác này được thể hiện như
thế nào? Ta hãy tìm hiểu phần
2
- Cá nhân HS mô tả + B1 : Xét điều kiện
+ B2 : Nếu điều kiện đúng thì thực hiện câu lệnh và quay trở lại B1, ngược lại kết thúc bài toán
- Có thể mô tả việc lặp với
số lần chưa biết trước bằng
sơ đồ khối dưới đây
HĐ3: 2 Ví dụ về lệnh lặp với số lần chưa biết trước (12’)
- Giới thiệu câu lệnh lặp
While do
- HS ghi nhận - Câu lệnh lặp với số lần
chưa biết trước có dạng
While <điều kiện> do
<câu lệnh>;
+ Điều kiện thường là
một phép so sánh
Trang 7+ Câu lệnh có thể là câu
lệnh đơn giản hay câu lệnh ghép
(?) Câu lệnh While do được
thực hiện như thế nào?
- HS dựa vào SGK trả lời - Câu lệnh While do
được thực hiện:
1 Kiểm tra điều kiện.
2 Nếu điều kiện sai, câu
lệnh bỏ qua, lệnh lặp kết
thúc; điều kiện đúng, câu
lệnh được thực hiện và
quay lại bước 1
- Dùng câu lệnh While do
viết chương trình thực hiện bài
tập ở ví dụ 2
Hướng dẫn :
(?) Chương trình cần những
biến nào? Khai báo ra sao?
(?) Điều kiện ở đây là gì?
(?) Câu lệnh ở đây là gì?
- HS (chia 4 nhóm) thảo luận (trong 4 phút)
- Biến S và n
S:=0; n:=0;
- S<= 1000
- While S<=1000 do Begin
n:=n+1; S:= S+n;
End;
- Yêu cầu các nhóm trình bày
vào bảng phụ và treo lên bảng
- Các nhóm hoàn thành chương trình vào bảng phụ
và treo lên bảng
- GV nhận xét và cho HS ghi
nhận vào vở
- HS ghi nhận
HĐ4: Củng cố (4’)
(?) Lặp với số lần biết trước và
lặp với số lần chưa biết trước
- Cá nhân HS trả lời
Trang 8khác nhau như thế nào?
(?) Cho một số ví dụ trong
cuộc sống thể hiện lặp với số
lần chưa biết?
- Cá nhân HS cho ví dụ
(?) Câu lệnh While do được
thực hiện như thế nào?
- Cá nhân HS trả lời
HĐ5: Dặn dò (1’)
- Về xem lại cấu trúc của lệnh lặp While do, so sánh sự khác nhau giữa câu
lệnh For to do với While do.
- Đọc trước bài mới
Duyệt của GVHD Trường THCS Phường 4, ngày 27/02/2010
SV soạn
TRẦN NGỌC KHOA