Có những bài toán ta bắt gặp những thao tác được lặp đi lặp lại khi chưa đủ số lần lặp hoặc khi 1 ĐK nào đó còn đúng, để viết được những thao tác đó, trong các NNLT đã cung cấp sẵn cho t[r]
Trang 1Tuần : 14 Ngày soạn 12 / 11/ 08
CHƯƠNG II CẤU TRÚC RẼ NHÁNH VÀ CẤU TRÚC LẶP Bài 10 CẤU TRÚC LẶP
A- Mục tiêu bài học:
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 ý nghĩa cấu trúc lặp;
Hiểu cấu trúc lặp với số lần biết trước: Lặp tiến và lặp lùi
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 cấu trúc lặp
Viết đúng câu lệnh lặp với số lần xác định trước
Viết được thuật toán của một số bài toán đơn giản
B- Phương pháp, phương tiện dạy học:
Thuyết trình, vấn đáp
Phương tiện: Bảng vẽ
C- Chuẩn bị của giáo viên và học sinh:
1 Giáo viên:
Chuẩn bị một số bài toán có sử dụng cấu trúc lặp
Nắm vững các cấu trúc lặp và các thuật toán
2 Học sinh:
chuẩn bị bài và nghiên cứu kĩ thuật toán trong SGK
D- Tiến trình lên lớp:
I- Ổn định lớp :
II- Kiểm tra bài cũ:
Viết chương trình kiểm tra N có phải là số chẵn và không chia hết cho 3 hay không?
III- Bài mới:
1 Đặt vấn đề:
Ta đã làm quen và viết được các chương trình giải các bài toán đơn giản, có những chương trình được viết theo cấu trúc tuần tự hoặc có sử dụng cấu trúc rẽ nhánh Có những bài toán ta bắt gặp những thao tác được lặp đi lặp lại khi chưa đủ số lần lặp hoặc khi 1 ĐK nào đó còn đúng, để viết được những thao tác đó, trong các NNLT đã cung cấp sẵn cho ta những cấu trúc Cấu trúc này đượ gọi là cấu trúc lặp.
2 Triển khai bài:
HĐ1: Tìm hiểu nhu cầu của cấu trúc lặp, ý nghĩa cấu trúc lặp
Gv: Đưa ra bài toán, yêu cầu HS tìm cách lập trình để
giải các bài toán này
Bài toán1:
HS: S:=1/a;
S:= S+ 1/(a+1);
S:= S+ 1/(a+2);
S:= S+ 1/(a+3);
:
:
S:= S+ 1/(a+100);
Gv Hãy nhận xét cách giải trên?
Hs: Với N=100 ta thực hiện 100 lần phép gán
Gv Ta thấy việc cộng này được lặp đi lặp lại 100 lần
=> số lần lặp là xác định (biết trước)
Gv.Hướng dẫn cho học sinh đưa ra cách giải bài toán 2
S:=0;
If (1/a<0.001) Then s:=1/a;
1 Khái niệm lặp.
xét 2 bài toán như sau với a>2 là số nguyên cho trước
Bài toán 1 Tính tổng
S=
a a a
Bài toán 2.
S=
1
a a a N với 1/(a+N)<0.001
Cách giải:
S:=1/a;
Lần lượt N=1,2,3, … ta tính s:=s+1/(a+N); Với bài toán 1, việc cộng thêm dừng khi N=100
=> số lần lặp biết trước Bài toán 2, việc cộng thêm dừng khi
TIẾT
14
Trang 2If (1/(a+1)<0.001) Then s:=s+1/(a+1);
If (1/(a+2)<0.001) Then s:=s+1/(a+2);
If (1/(a+3)<0.001) Then s:=s+1/(a+3);
:
:
Gv Yêu cầu học sinh nhận xét cách giả trên
Hs: Với cách trên ta không biết khi nào 1/(a+n)<0.001
nên ta không thể hiện được hết số câu lệnh trên
Gv Với cấu trúc trên đgl lặp số lần chưa xác định
1/(a+n)<0.001 => số lần lặp chưa biết trước
Như vậy: Trong lập trình, có những thao tác
được lặp đi lặp lại khi chưa đủ số lần lặp hoặc khi 1 ĐK nào đó còn đúng, khi đó ta gọi là cấu trúc lặp
Lăp: Lặp với số lần xác định và không xác định.
NNLT nào cũng cung cấp một số câu lệnh để
mô tả cấu trúc như trên.
HĐ2: Tìm hiểu thuật toán để giải bài toán 1,2 và Câu lệnh FOR - DO
Gv: Đưa ra hai thuật toán để giả bài toán 1
Thuật toán Tong_1a
B1: S 1/a; N 0;
B2: N N+1;
B3: Nếu N>100 đưa ra S
và kết thúc TT;
B4: S S+1/(a+N);
B5: Quay lại B2
Thuật toán Tong_1b
B1: S 1/a; N 101;
B2: N N-1;
B3: Nếu N< 1 thì đưa ra S
và kết thúcTT;
B4: S S+1/(a+N);
B5: Quay lại B2 Gv: gọi HS nhận xét về 2 TT trên về một số vấn đề:
Thuật toán có lặp không?
Lặp bao nhiêu lần?
Hai thuật toán giống và khác nhau như thế nào?
Cái gì thay đổi trong hai thuật toán này?
HS: Trao đổi và đưa ra ý kiến riêng của mình
Gv: Nhận xét và so sánh kĩ hai thuật toán trên sau đó
đưa ra 2 cách lặp trong ngôn ngữ TP
Gv: Lấy ví dụ minh họa trong Tp để HS hiểu rõ về cách
hoạt động của For - Do
2 Lặp với số ;ần biêt trước và câu lệnh For- do.
a) Thuật toán giải bài toán 1a và 1b Thuật toán Tong_1a (SGK)
Thuật toán Tong_1b (sgk) b) Câu lệnh For – do
- Lặp dạng tiến.
FOR <biến đếm>:= <gtrị đầ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
<gtrị đầu> DO <câu lệnh>;
Trong đó:
- Biến đếm thường là kiểu số nguyên
- Giá trị đầu , giá trị cuối là các biểu thức cùng kiểu biến đếm
- Dạng lặp tiến: giá trị biến đếm tăng dần
từ giá trị đầu đến giá trị cuối
- Dạng lặp lùi: giá trị biến đếm giảm dần
từ giá trị cuối đến giá trị đầu đến
IV- Củng cố bài :(2 phút)
- Nhắc lại nhu cấu của câu lệnh lặp trong khi viét chương trình
- Các ngôn ngữ lập trình thường cung cấp cho ta cấu trúc lặp dạng tiến và lùi
- Cấu trúc câu lệnh For – do và For downto – do và cách hoạt động các câu lệnh
V- Dặn dò : ( 2 phút)
Câu hỏi và bài tập về nhà
- Giải bài tập 5.a, 6, sách giáo khoa, trang 51
- Xem trước chương trình giải bài toán 1a và 1b
- Xem nội dung phụ lục B, sách giáo khoa trang 131: Lệnh rẽ nhánh và lặp
- Xem nội dung phụ lục C, sách giáo khoa trang 139: Lệnh rẽ nhánh và lặp
-làm BT : Viết TT tính
N ! =1*2*3*…*N với N nhập từ bàn phím
VI Rút kinh nghiệm