+ GV: Phân tích hướng dẫn để Hs thấy được số lượng các phép tính ở chương trình cải tiến ít hơn so với chương trình ban đầu.. + GV: Từ những hướng dẫn giải thích trên Gv yêu cầu Hs nhận [r]
Trang 1BÀI TẬP
I Mục tiêu:
1 Kiến thức:
- Ôn tập câu lệnh lặp với số lần biết trước for … to … do … trong Pascal;
2 Kĩ năng:
- Làm các bài tập về câu lệnh lặp với số lần biết trước for … to … do … trong Pascal.
- Viết chương trình sử dụng câu lệnh lặp lệnh ghép trong Pascal
3 Thái độ:
II Chuẩn bị
- Gv: Sách giáo khoa, máy tính điện tử, giáo án, máy chiếu.
- Hs: Vở ghi, sách giáo khoa.
III Phương pháp:
- Gv đặt vấn đề, hướng dẫn, ra bài tập, ôn luyện Hs vấn đáp làm việc nhóm, làm bài tập
IV Tiến trình bài dạy:
1 Ổn định lớp: (1’)
8A1: 8A2:
2 Kiểm tra bài cũ: (5’)
Câu hỏi: Cho biết lỗi sai trong các câu lệnh sau, vì sao?
a) for i:=100 to 1 do writeln(‘A’);
b) for i:=1.5 to 10.5 do writeln(‘A’);
c) var x:real; begin for x:=1 to 10 do writeln(‘A’); end
3 Nội dung bài mới:
Hoạt động 1: (38’) Bài tập.
+ GV: Yêu cầu Hs từ thuật toán bài
tập 6 SGK/61 viết chương trình tính
tổng A
+ GV: Chia lớp thành 6 nhóm học
tập và làm các bài tập trên
+ GV: Yêu cầu Hs viết chương
trình
+ GV: Hướng dẫn các em sử dụng
câu lệnh lặp for <biến đếm>:=<giá
trị đầu> to <giá trị cuối> do <câu
lệnh>; của Pascal, để viết chương
trình?
+ GV: Yêu cầu đại diện các nhóm
lên trình bày
+ GV: Yêu cầu các nhóm khác giải
thích nhận xét bổ xung cho bài làm
+ GV: Nhận xét, chốt nội dung
+ GV: Đưa ra yêu cầu bài tập 2: Bài
toán cổ: Vừa gà vừa chó Bó lại cho
tròn Ba mươi sáu con Một trăm
+ HS: Đọc và nghiên cứu SGK dựa trên thuật toán ở tiết trước thực hiện theo yêu cầu
+ HS: Thảo luận nhóm và viết chương trình theo yêu cầu
Program bai6;
Uses Crt;
Var A: Real;
n, i: Integer;
BEGIN Clrscr;
Write(‘Nhap n: ’); Readln(n);
A := 0;
For i := 1 To n Do
A := 1/(i*(i+2));
Write(‘Tong A = ’,A);
Readln END
+ HS: Đọc yêu cầu của bài toán của Gv đưa ra và tìm hiểu nghiên cứu bài toán trên
2 Bài tập.
a Bài tập 1:
* Bài toán: Bài tập 6
SGK/61 viết chương trình tính tổng A
Program bai6;
Uses Crt;
Var A: Real;
n, i: Integer;
BEGIN Clrscr;
Write(‘Nhap n: ’);
Readln(n);
A := 0;
For i := 1 To n Do
A := 1/(i*(i+2));
Write(‘Tong A = ’,A); Readln
END
* Bài toán: Bài toán cổ:
Vừa gà vừa chó Bó lại cho tròn Ba mươi sáu con Một
Ngày soạn: 13/01/2013 Ngày day: 15/01/2013
Tuần 20
Tiết: 40
Trang 2chân chẵn Tìm số lượng gà và chó.
+ GV: Giới thiệu chương trình yêu
cầu Hs tìm hiểu, giải thích tại sao
chương trình này cho phép giải bài
toán đặt ra
Var ga, cho: Byte;
BEGIN
For ga := 1 to 35 do
For cho := 1 to 35 do
If (ga*2 + cho*4 = 100) and
(ga + cho = 36) then Writeln(‘So ga
la: ’, ga, ‘; So cho la: ’, cho);
Readln
END
+ GV: Hướng dẫn phân tích bài toán
cho Hs thấy và hiểu được bài toán
+ GV: Từ đó yêu cầu Hs cải tiến để
có chương trình hiệu quả hơn
+ GV: Hướng dẫn các em thực hiện,
ý nghĩa của các câu lệnh trong
chương trình
+ GV: Cách thức hoạt động của
chương trình cải tiến
+ GV: Phân tích hướng dẫn để Hs
thấy được số lượng các phép tính ở
chương trình cải tiến ít hơn so với
chương trình ban đầu
+ GV: Từ những hướng dẫn giải
thích trên Gv yêu cầu Hs nhận xét
và rút ra kết luận trong quá trình viết
chương trình
+ GV: Nhận xét chốt nội dung
+ HS: Nghiên cứu chương trình của Gv đưa ra Ý tưởng cơ bản là xét tất cả các trường hợp và kiểm tra xem trường hợp nào thỏa mãn:
ga + cho = 36 và ga*2 + cho*4
= 100 thì đó là một đáp số của
bài toán
+ HS: Chú ý quan sát, tìm hiểu về bài toán Hiểu về chương trình
+ HS: Chương trình cải tiến
Var ga, cho: Byte;
BEGIN For cho := 1 To 24 Do Begin
ga := 36 – cho;
If (2*ga + 4*cho = 100) Then Writeln(‘Ga: ’, ga, ‘, Cho: ’,cho);
End;
Readln END
+ HS: Các câu lệnh trong Pascal được sử dụng lồng ghép nhau với
cú pháp chặt chẽ Thuật toán ở chương trình sau hiệu quả hơn so với chương trình trước
+ HS: Ghi nhớ kiến thức
trăm chân chẵn Tìm số lượng gà và chó
Chương trình.
Var ga, cho: Byte;
BEGIN For ga := 1 to 35 do For cho := 1 to 35 do
If (ga*2 + cho*4 = 100) and (ga + cho = 36) then Writeln(‘So ga la: ’,
ga, ‘; So cho la: ’, cho); Readln
END
Chương trình cải tiến.
Var ga, cho: Byte;
BEGIN For cho := 1 To 24 Do Begin
ga := 36 – cho;
If (2*ga + 4*cho = 100) Then Writeln(‘Ga: ’, ga,‘, Cho: ’,cho);
End;
Readln END
4 Củng cố:
- Củng cố trong nội dung bài học
5 Hướng dẫn và dặn dò về nhà: (1’)
- Học bài kết hợp SGK
- Xem lại các bài tập đã làm Đọc trước nội dung bài thực hành tiếp theo
6 Rút kinh nghiệm: