Kiến thức: - Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán - Hiểu cấu trúc lặp với số lần biết trước, cấu trúc lặp kiểm tra điều kiện trước - Biết cách vận dụng đúng đắn từng
Trang 1Tiết: 13, 14, 15
1 Kiến thức:
- Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán
- Hiểu cấu trúc lặp với số lần biết trước, cấu trúc lặp kiểm tra điều kiện trước
- Biết cách vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể
2 Kỹ năng:
- Mô tả được thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp
- Viết được thuật toán của một số bài toán đơn giản
II PHƯƠNG TIỆN DẠY HỌC
1 Giáo viên: Máy chiếu, demo các ví dụ
2 Học sinh: Theo sự hướng dẫn của tiết trước
III NỘI DUNG
1.Ổn định lớp: Kiểm tra sĩ số lớp
2.Kiểm tra bài cũ(5’)
3.Bài mới:
1 Lặp
Với a là số nguyên và a > 2
Bài toán 1: (Xem Sgk)
Bài toán 2: (Xem Sgk)
Cách giải:
- Bắt đầu S được gán với giá trị 1/a
- Tiếp theo mỗi lần cộng thêm vào S là 1/
(a+N) với N = 1, 2, 3, …
- Với bài toán 1, việc cộng thêm dừng khi
1/(a+N) < 0.0001, => số lần lặp chưa biết trước
- Với bài toán 2, việc cộng thêm dừng khi
N = 100, => số lần lặp đã biết trước
Trong lập trình, có những thao tác phải lặp lại
nhiều lần, khi đó ta gọi là cấu trúc lặp
Lặp thường có 2 loại:
- Lặp với số lần biết trước
- Lặp với số lần không biết trước
NNLT nào cũng cung cấp một số câu lệnh để
mô tả các cấu trúc lặp như trên
Sau đây chúng ta sẽ tìm hiểu các câu lệnh lặp
Gv: Đặt vấn đề vào bài mới
Hoạt động 1:
GV: Nêu bài toán 1 và 2 lên bảng HS: Xem Sgk
GV: Yêu cầu HS nêu ý tưởng giải các bài toán này
HS1: Đưa ra cách giải HS2:
GV: Đưa ra cách giải cho bài toán Giải theo các câu lệnh tuần tự S1:= 0;
If (1/a>0.0001) then S1:=S1+1/a;
If (1/a>0.0001) then S1:=S1+1/(a+1);
If (1/a>0.0001) then S1:=S1+1/(a+2);
If (1/a>0.0001) then S1:=S1+1/(a+3);
…
GV: Lấy ví dụ thực tế:
VD1: Bài toán gửi tiền vào ngân hàng.
Hằng tháng phải tính lãi và cộng thêm vào lãi gốc đang gửi hay nói cách khác gốc của tháng sau = gốc + lãi tháng trước
VD2: Tính tổng của một đoạn số
20’
Trang 2trong ngôn ngữ Pascal.
2 Lặp với số lần biết trước và câu lệnh for
– do
Trong Pascal, có 2 loại câu lệnh lặp có số lần
biết trước:
-Lặp dạng tiến:
For <biến đếm>:= <giá trị đầu> to <giá trị
cuối> do < câu lệnh>;
-Lặp dạng lùi:
For < biến đếm>:= <giá trị cuối> downto <giá
trị đầu> do <câu lệnh>;
Trong đó:
-Biến đếm (Kiểu đếm được) thường là biến
kiểu số nguyên
-Giá trị đầu, giá trị cuối là các biểu thức cùng
kiểu với biến đếm Giá trị đầu phải nhỏ hơn
hay bằng giá trị cuối
-Ở dạng lặp tiến: Biến đếm tự tăng dần từ giá
trị đầu đến giá trị cuối
-Ở dạng lặp lùi: Biến đếm tự giảm dần từ giá
trị cuối đến giá trị đầu
Tương ứng với mỗi giá trị của biến đếm, câu
lệnh sau do thực hiện 1 lần
nguyên mà không được dùng công thức
Hoạt động 2:
GV: Đưa ra 2 ví dụ ở Sgk, sau đó cho
HS so sánh hai thuật toán HS: Nêu việc so sánh của mình Thuật toán
Tong_ 1a B1:S:=1/a;N=:0;
B2:N:=N+1;
B3:Nếu N > 100 thì chuyển sang bước 5;
B4:S:=S+1(a+N) rồi quay lại bước 2;
B5:Đưa ra S rồi kết thúc
Thuật toán Tong_
1b B1:S:=1/a;N=:101; B2:N:=N-1;
B3:Nếu N < 1 thì chuyển sang bước 5;
B4:S:=S+1(a+N) rồi quay lại bước 2;
B5:Đưa ra S rồi kết thúc
GV: Cho Hs nhận xét về 2 thuật toán trên theo các vấn đề sau:
-Thuật toán có lặp không?
-Lặp bao nhiêu lần?
-Hai thuật toán giống nhau và khác nhau như thế nào?
-Đối tượng nào thay đổi trong 2 thuật toán này?
HS: Nhận xét
GV: Chốt lại vấn đề (Trình bày câu lệnh)
? Có thể nêu thêm VD cụ thể
16’
IV CŨNG CỐ VÀ DẶN DÒ:4’
GV: Nhắc lại K/n lặp và câu lệnh for – do
Về nhà: Xem lại các vấn đề vừa học xem trước các ví dụ tiếp theo ở Sgk
V RÚT KINH NGHIỆM