Tiế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 chiu, phũng mỏy,...
- Hc sinh : v, Sgk, chun b bi c,
III. Phng phỏp dy hc:
Thc hnh + thuyt trỡnh.
IV. Tin trỡnh t chc dy v hc:
1. n nh lp:
2. Kim tra bi c:
Nhc li kin thc ó hc v t chc r nhỏnh v lp.
HOT NG CA GIO VIấN HOT NG CA HC SINH
1. Yờu cu hs nhc li cu trỳc r nhỏnh.
2. Yờu cu hs nhc li cu trỳc ca cỏc
lnh lp ó hc.
1. c lp suy ngh tr li.
- R nhỏnh:
IF <iu kin > THEN <cõu lnh>;
IF <iu kin > THEN <cõu lnh 1>
ELSE <cõu lnh 2>;
2. Suy ngh v tr li.
- Lp FOR
FOR <bin m> := <giỏ tr u> TO
<giỏ tr cui> DO <cõu lnh>;
FOR <bin m> := <giỏ tr cui>
DOWNTO <giỏ tr u> DO <cõu
lnh>;
- Lp WHILE:
WHILE <iu kin> DO <cõu lnh>;
3. Dn dt vo bi mi:
Chng III cung cp cỏc cu trỳc iu khin trong lp trỡnh núi chung v cỏc cõu
lnh th hin cu trỳc iu khin c th trong Pascal núi riờng, nh ú cỏc em cú th
bc u gii mt s bi toỏn c bn. Hụm nay chỳng ta s cựng nhau lm mt s bi
tp rốn luyn k nng lp trỡnh cu trỳc r nhỏnh v lp.
4. Ging bi mi:
Luyện tập trên cơ sở các bài tập đã cho học sinh về nhà:
65
HOẠT ĐỘNG CỦA GIÁO VIÊN HOẠT ĐỘNG CỦA HỌC SINH
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=
2
1
+
3
2
+
4
3
+…..+
1
+
n
n
- 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.
Bµi 7 (SGK_T51)
Uses crt;
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.
66
Bà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 x
2
/2 + x
4
/4 + + (-1)
n-1
x
2n
/ 2n
67