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 1Tuần: 25 Tiết: 49
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ũ
3 Bài mới :
Hoạt động 1: Giới thiệu
Gv: Ở bài trước các em đã được học về câu lệnh lặp với
số lần lặp đã biết trước Nhưng cũng có những hoạt động
lặp mà số lần lặp chưa biết trước Em hãy cho 1 ví dụ về
hoạt động lặp với số lần chưa biết trước đó
Hs: Học cho đến khi thuộc bài
Gv: Vậy thế nào là lặp với số lần chưa biết trước và trong
Pascal sử dụng câu lệnh nào để giải quyết bài tóan về số
lần lặp chưa biết trước Cô và các em sang bài mới
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Hoạt động 2: Hs làm quen với hoạt động lặp với số lần chưa biết trước.
Gv: Các em qua phần 1
Gv: Các em mở SGK trang 67 và đọc cho cô ví dụ 1
Gv: Yêu cầu Hs đọc ví dụ 1
Hs: Đọc bài
Gv: Một ngày chủ nhật, Long gọi điện cho Trang
1 Các hoạt động lặp lại với số lần chưa biết trước:
Trang 2- lần 1: không có người nhấc máy.
- Long gọi thêm 2 lần nữa
Gv: Vậy Long gọi điện cho Trang mấy lần?
Hs: 3 lần
Gv: Một ngày khác, Long quyết định cứ 10’ gọi điện cho
Trang 1 lần, cho đến khi nào có người nhấc máy
Gv: Các em có biết Long gọi điện cho Trang bao nhiêu
lần hay không?
Hs: Không biết
Gv: Vậy hoạt động Long gọi điện cho Trang cho đến khi
có người nhấc máy là hoạt động lặp với số lần chưa biết
trước
Gv: Ta xét thêm ví dụ nữa
Gv: Yêu cầu Hs đọc ví dụ 2
Hs: Đọc bài
Gv: Đề bài yêu cầu ta làm gì?
Hs: Tính tổng Tn của n số tự nhiên đầu tiên sao cho tổng
Tn nhỏ nhất > 1000
Gv: - Đầu tiên ta có tổng Tn của 1 số tự nhiên đầu tiên
tức là Tn = 1
- Tiếp đó ta sẽ tính tổng Tn của 2 số tự nhiên đầu tiên
tức là Tn = 1 + 2
- Tiếp tục ta có Tn = 1 + 2 + 3 là tổng của 3 số tự
nhiên đầu tiên
Cứ như thế ta có tổng Tn ngày càng tăng, đến lúc tổng Tn
nhỏ nhất > 1000, thì thuật tóan của ta sẽ kết thúc
Gv: Ta cần cộng bao nhiêu số tự nhiên đầu tiên để có
tổng Tn nhỏ nhất lớn hơn 1000?
Hs: Không biết
Gv: Trong trường hợp này, để quyết định thực hiện phép
cộng với số tiếp theo hay dừng, trong từng bước ta cần
kiểm tra điều gì?
Hs: Tổng đã lớn hơn 1000 hay chưa
Gv: Qua ví dụ 2 này ta không biết cần cộng thêm bao
nhiêu số tự nhiên vào để tổng Tn nhỏ nhất lớn hơn 1000,
đây là 1 hoạt động lặp với số lần chưa biết trước
Gv: Chúng ta hãy cùng tìm hiểu các bước của thuật toán
trong ví dụ này một cách cụ thể hơn
Gv: Tương tự như bài tóan tính tổng S=1+2+3+ +n thì
B1 ta phải làm gì?
Hs: Ta gán S 0 và n 0
Gv: Để quyết định việc cộng thêm hay dừng thì ta phải
kiểm tra điều kiện gì?
Hs: S <= 1000
Gv: Sau khi đã kiểm tra điều kiện và tăng biến n lên thì S
S + n và quay lại B2
Gv: Khi đã tìm ra tổng S > 1000 và n là số nhỏ nhất ta in
kết quả ra màn hình và kết thúc thuật toán
Gv: Cho Hs ghi thuật toán vào vở
Hs: Ghi bài
a Ví dụ 1: SGK
b Ví dụ 2: SGK
* Thuật toán:
- B1: S 0, n 0
- B2: Nếu S <= 1000, n n + 1; Ngược lại, chuyển tới B4
- B3: S S + n và quay lại B2
- B4: In kết quả: S và n là số tự nhiên nhỏ nhất sao cho S > 1000 Kết thúc thuật toán
Trang 3Gv: Các em quan sát trên bảng, bây giờ cô sẽ chạy tay thử
chương trình với điều kiện là S <= 10
1 Trước khi kiểm tra điều kiện: n = 0, S = 0
2 Khi bắt đầu kiểm tra điều kiện
S<=10 Đúng Đúng Đúng Đúng Đúng Sai
2 Kết thúc: n = 6, S = 15
Gv: Các em vừa tìm hiểu về việc thực hiện phép cộng
được lặp lại với số lần chưa biết trước, hoạt động đó phụ
thuộc vào điều kiện gì, phép cộng dừng khi nào?
Hs: Điều kiện S<= 10 và chỉ dừng khi điều kiện trên sai
(S > 10)
Gv: Đưa sơ đồ hình vẽ 39 và phân tích
Gv: Để viết chương trình chỉ dẫn máy tính thực hiện các
hoạt động lặp như trong các ví dụ trên, ta có thể sử dụng
câu lệnh có dạng lặp với số lần chưa biết trước
Gv: Các ngôn ngữ lập trình đều sử dụng câu lệnh lặp với
số lần chưa biết trước nhưng cú pháp câu lệnh ở các ngôn
ngữ lập trình là khác nhau Sau đây ta sẽ xét cú pháp câu
lệnh và một số ví dụ về câu lệnh lặp với số lần chưa biết
trước trong Turbo Pascal
* Ta có sơ đồ hoạt động sau:
Hoạt động 3: Một số ví dụ về lệnh lặp với số lần chưa biết trước.
Gv: Giới thiệu câu lệnh While… do… Hướng dẫn Hs
viết câu lệnh và giải thích ý nghĩa các thành phần
Hs: Ghi bài
Gv: Trong Pascal từ while, do được gọi là gì?
Hs: Từ khóa
Gv: Nếu câu lệnh là câu lệnh ghép thì nó được đặt trong
cặp từ nào?
Hs: Begin end
Gv: Hướng dẫn Hs biết cách thực hiện của câu lệnh
While do
1 Kiểm tra điều kiện.
2 Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực
hiện lệnh lặp sẽ kết thúc Nếu điều kiện đúng, thực hiện
câu lệnh và quay lại bước 1.
Gv: Để hiểu rõ việc thực hiện của câu lệnh While do
như thế nào, một em hãy đọc đề ví dụ 3
Gv: Hãy nhìn vào chương trình trong SGK Các em hãy
thảo luận nhóm để phân tích ý nghĩa câu lệnh trong
chương trình
Hs: Thảo luận và phân tích
Gv: Điều kiện là: x >= sai_so
Câu lệnh là: n:=n+1; x:=1/n;
Gv: Câu lệnh ở đây là câu lệnh ghép nên nó được đặt
2 Ví dụ về lệnh lặp với số lần chưa biết trước:
* Cú pháp:
While <điều kiện> do <câu
lệnh>;
Trong đó:
- Điều kiện thường là phép so sánh.
- Câu lệnh có thể là câu lệnh đơn
giản hay câu lệnh ghép
* Ví dụ 3: SGK
Điều kiện ? Câu lệnh
Sai
Đúng
Trang 4trong cặp Begin end
Gv: Bây giờ cô và các em hãy chạy thử chương trình để
hiểu rõ hơn về câu lệnh while do với điều kiện sai_so
= 0.3
1 Trước khi bắt đầu vòng lặp while do
n = 1, x = 1
2 Khi bắt đầu vòng lặp while do
3 Kết thúc: n = 4, x= 1/4
Gv: Cho Hs ghi chương trình vào vở
Hs: Ghi bài
Gv: Yêu cầu Hs viết chương trình và chạy thử Sau đó
sửa giá trị sai_so = 0.3, 0.002, 0.001
Hs: Thực hành
Program vd3;
Var x: real;
n: integer;
Const sai_so = 0.003;
Begin x:=1; n:=1;
while x >= sai_so do begin n:=n+1; x:=1/n end;
writeln('so n nho nhat de 1/n <', sai_so:6:4,' la ',n);
readln;
End
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 1, 2 trang 71 SGK
5 Dặn dò:
- Về nhà học bài, trả lời câu hỏi trong SGK
- Coi tiếp phần còn lại của bài “Lặp với số lần chưa biết trước”
x>=sai_so Đúng Đúng Đúng Sai
x 1/2 1/3 1/4