Về kiến thức: - Củng cố thêm về cấu trúc rẽ nhánh - Luyện tập tổ chức lặp, chú ý bài toán tìm tổng dãy số.. Về kĩ năng: - Soạn đợc chơng trình giải các bài toán đơn giản áp dụng cấu trúc
Trang 1Tiết 17: Luyện tập (chơng III)
Ngày soạn: 15/12/2008
I. Mục tiêu bài học:
1 Về kiến thức:
- Củng cố thêm về cấu trúc rẽ nhánh
- Luyện tập tổ chức lặp, chú ý bài toán tìm tổng dãy số
- Tiếp tục làm quen với các công cụ phục vụ hiệu chỉnh chơng trình
2 Về kĩ năng:
- Soạn đợc chơng trình giải các bài toán đơn giản áp dụng cấu trúc điều khiển nêu trên
- Có khả năng phân tích bài toán để chọn kiểu cấu trúc điều khiển phù hợp tình huống
3 Về thái độ:
- Tiếp tục khơi gợi lòng ham thích giải toán bằng lập trình trên máy tính
- Tự giác, tích cực, chủ động trong giải quyết các bài tập
II Chuẩn bị ph ơng tiện, tài liệu, đồ dùng dạy học:
- Giỏo viờn: Giỏo ỏn, Mỏy chiếu, phũng mỏy,
- Học sinh : vở, Sgk, chuẩn bị bài cũ,…
III Phương phỏp dạy học:
Thực hành + thuyết trỡnh
IV Tiến trỡnh tổ chức dạy và học:
1 Ổn định lớp:
2 Kiểm tra bài cũ:
Nhắc lại kiến thức đó học về tổ chức rẽ nhỏnh và lặp
1 Yờu cầu hs nhắc lại cấu trỳc rẽ nhỏnh
2 Yờu cầu hs nhắc lại cấu trỳc của cỏc
lệnh lặp đó học
1 Độc lập suy nghĩ trả lời
- Rẽ nhỏnh:
IF <điều kiện > THEN <cõu lệnh>;
IF <điều kiện > THEN <cõu lệnh 1> ELSE <cõu lệnh 2>;
2 Suy nghĩ và trả lời
- Lặp FOR FOR <biến đếm> := <giỏ trị đầu> TO
<giỏ trị cuối> DO <cõu lệnh>;
FOR <biến đếm> := <giỏ trị cuối> DOWNTO <giỏ trị đầu> DO <cõu lệnh>;
- Lặp WHILE:
WHILE <điều kiện> DO <cõu lệnh>;
3 Dẫn dắt vào bài mới:
Chương III cung cấp cỏc cấu trỳc điều khiển trong lập trỡnh núi chung và cỏc cõu lệnh thể hiện cấu trỳc điều khiển cụ thể trong Pascal núi riờng, nhờ đú cỏc em cú thể bước đầu giải một số bài toỏn cơ bản Hụm nay chỳng ta sẽ cựng nhau làm một số bài tập rốn luyện kĩ năng lập trỡnh cấu trỳc rẽ nhỏnh và lặp
4 Giảng bài mới:
Luyện tập trên cơ sở các bài tập đã cho học sinh về nhà:
Trang 2
Bài 5 a (SGK_51)
Tìm hiểu bài tập 5 và giải quyết (trên
cơ sở HS đã làm ở nhà)
- Hỏi : Có thể khai triển biểu thức Y
thành tổng của các số hạng như thế
nào?
- Từ phân tích trên đưa ra quy luật của
bài toán?
- Nhìn vào công khai triển, cho biết N
lấy giá trị trong đoạn nào ?
- Hỏi : ta sử dụng cấu trúc điều khiển
lặp nào là phù hợp ?
- Yêu cầu viết chương trình
- HS trình bày lại
- Gọi hs khác nhận xét, đánh giá, bổ
sung
Quan sát và suy nghĩ để giải quyết bài toán
Y= 21 +32 + 43 +… + n n+1
- Thảo luận theo nhóm để viết chương trình
Program bai5a;
Var y: Real; n: byte;
BEGIN
Y:=0;
For n:=1 to 50 do y:=y+n/(n+1); Write (‘y=’, y:2:2);
Readln END
- Nhận xét, đánh giá, bổ sung các thiếu sót
B i 5 b (SGK_T51) à
Tính e(n) với n lần lượt bằng 3, 4,…
cho đến khi 1/n! < 2.10-6 Đưa các giá
trị e(n) ra màn hình Cách thức tiến
hành tương tự khi giải bài 5.a
Tuy nhiên cần nhấn mạnh về lí do
chọn lặp có số lần không biết trước
HS viết chương trình trên máy:
Uses crt;
Var n:longint; e,s:real;
Begin s:=1/2; n:=2; e:=2 + s; While s>=2*1E-6 do Begin inc(n);
s:=s*(1/n);
e:=e+s;
End;
Writeln (‘Gia tri e(n) la:’,e:10:6); Readln
End
Var tuoicha, tuoicon, nam:word;
Begin clrscr;
Write (‘Nhap tuoi cha va con’); Readln (tuoicha,tuoicon);
nam:=0;
Begin Tuoicha:=tuoicha + 1;
Tuoicon:=tuoicon + 1;
Nam:=nam + 1;
End;
Writeln(‘sau’,nam,’nam tuoi cha gap doi tuoi con’);
Readln End
Trang 3Bài tập thêm:
Hớng dẫn học sinh lập trình tính giai
thừa N!
Đa thêm bài tập này để đánh giá,
nhận xét giúp một số học sinh khá có
thể phát huy đợc kiến thức Em nào
làm đợc thì gọi lên chữa nếu đủ thời
gian Nếu không giáo viên gợi ý qua
và giao về nhà hoàn thành tiếp
GV nhắc lại các kiến thức cơ bản về
tính giai thừa của một số, sau đó cho
học sinh thời gian suy nghĩ và gọi lên
giải
?Tại sao phải khởi động gt=1?
(Vì trớc vòng lặp đầu tiên, gt cha xác
định)
? Nhận xét bài giải
Những lỗi mà học sinh thờng mắc
phải khi giải bài này:
- Đối với bài này cần chú ý:
Nếu nhập n<=7 chơng trình chạy
đúng, nhng nếu nhập n>7 chơng trình
sẽ chạy không chính xác bởi vì:
Gt: integer;
chỉ tính đến 32767 là hết
- Để khắc phục vấn đề này ta có thể
khai báo
N:= longint; nhng với kiểu longint
ch-ơng trình tính đợc đến n=12
Để tính giai thừa các số lớn hơn thì ta
phải khai báo nh thế nào?
(Khai báo gt kiểu real hoặc extended và
in ra có định dạng gt:1:0)
Chơng trình:
Var n,i,gt : integer;
Begin Write(‘giai thua cua n=’); Read(n);
Gt:=1;
If n< 0 then Writeln(‘không đợc vì n< 0’)
Else Begin
If n>0 then For i:= 1 to n do gt:=gt*i;
Writeln(n,’!=’,gt);
End;
End
5 Củng cố và dặn dò:
Qua tiết luyện tập hôm nay cô muốn các em nắm chắc đợc cấu trúc của câu lệnh
rẽ nhánh và lặp để từ đó vận dụng sao cho hợp lý đối với mỗi bài toán khác nhau
Giờ sau chúng ta ôn tập học kì I Về nhà các em ôn lại kiến thức 3 chơng I, II, III để chuẩn bị cho giờ ôn tập
6 Ra bài tập về nhà
- Nhắc học sinh về nhà hoàn thiện tất cả các bài tập trong SGK _ T51
- Bài về nhà:
Nhập và số thực e ( 0< e < 0,001) và x ( x khác không) Sau đó tính và đa ra kết quả của tổng sau với độ chính xác e :
S = 1 – x2/2 + x4/4 + … + (-1)n-1 x2n / 2n