Mục đích yêu cầu Học sinh cần biết: Chơng trình con thực chất là một khối lệnh tập các lệnh nhằm giải quyết một bài toán con để góp phần giải quyết một bài toán lớn hơn bằng một chơng
Trang 1Ngời soạn: Hà Trung Hòa Lớp: SP Tin 40
Giáo viên hớng dẫn: Lê Thị Bích Liên
Ngày soạn : 30/09/2008
Ngày giảng : / /2008
Chơng VI: Chơng trình con và lập trình có cấu trúc
Bài 17: Chơng trình con và phân loại
I Mục đích yêu cầu
Học sinh cần biết:
Chơng trình con thực chất là một khối lệnh (tập các lệnh) nhằm giải quyết một bài toán con để góp phần giải quyết một bài toán lớn hơn bằng một chơng trình
Khi phải viết chơng trình dài, phức tạp, việc sử dụng chơng trình con là hết sức cần thiết
II Phơng pháp, phơng tiện giảng bài
Phơng pháp: Thuyết trình, giảng giải
Phơng tiện: SGK, SGV
Bảng phụ:
III Tiến trình bài giảng
Kiểm tra bài cũ: Viết chơng trình tính
LuyThua=an Với a là số thực, n là số
nguyên nhập từ bàn phím
Chơng VI: Chơng trình
con và lập trình có
cấu trúc Bài 17: Chơng trình con và
phân loại
1 Khái niệm chơng trình con.
Đáp án:
Program TinhLuyThua;
Var a,LuyThua:real;
i,n:integer;
BEGIN Write(‘Nhap a=’);readln(a);
Write(‘Nhap n=’);readln(n);
LuyThua:=1.0;
For i:=1 to n do LuyThua:=LuyThua*a;
Write(‘Luy thua ‘,a:2:2,’^’,n,’
=’,LuyThua:8:4);
Readln;
END.
Trang 2Bài toán 1: Tính tổng bốn luỹ thừa:
TLuythua=an+bm+cp+dq
Với a, b, c, d là các số thực, n, m, p, q là
các số nguyên
Input: a, b, c, d kiểu thực; m, n, p, q kiểu
nguyên
Output: Đa ra màn hình kết quả
TLuythua=an + bm + cp + dq.
- Việc chia nhỏ các bài toán thành các
bài toán con đợc gọi là cách thiết kế từ
trên xuống
GV: Các chơng trình giải các bài
toán phức tạp thờng rất dài, có thể gồm rất nhiều lệnh Khi đọc những chơng trình dài rất khó nhận biết đợc chơng trình thực hiện các công việc gì và hiệu chỉnh chơng trình cũng khó khăn Vậy phải cấu trúc chơng trình nh thế nào để cho chơng trình
dễ đọc, dễ hiệu chỉnh, nâng cấp?
Tr-ớc tiên chúng ta đi xét bài toán sau
GV: Đa ra bài toán 1
GV: Theo toán học để giải đợc bài
toán này ta làm nh thế nào?
HS: Ta sẽ tính từng luỹ thừa, sau đó
cộng tổng các luỹ thừa đó lại ta đợc kết quả TLuythua
GV: Giả sử có bài toán sau:
TLuyThua= 63+ 64+ 65+ 66 Khi em là nhóm trởng (nhóm gồm 4 ngời ) và nhóm em nhận đợc bài toán thì làm cách nào để có kết quả nhanh nhất
HS: Trả lời
GV: Nhận xét và khẳng định: Có thể giao cho 4 ngời mỗi ngời thực hiện một bài Giá trị TluyThua là tổng kết quả của bốn bài toán con đó
Trang 3- Để nâng cao hiệu quả lập trình, các
ngôn ngữ lập trình bậc cao đều cung cấp
khả năng xây dựng chơng trình con dạng
tổng quát “đại diện” cho nhiều đoạn lệnh
tơng tự nhau Ví dụ: tính luỹ thừa
luythua=xk, trong đó lũy thừa và x là giá
trị kiểu thực còn k thuộc kiểu nguyên Ta
có thể đặt tên cho chơng trình con này là
luythua và tham số cần thiết là x và k
Khi cần tính luỹ thừa cụ thể ta chỉ cần
viết tên chơng trình con và thay thế (x,k)
bằng giá trị cụ thể tơng ứng
program Tinh_tong;
var TLuyThua,a,b,c,d:real;
m,n,p,q:integer;
GV: áp dụng ý tởng đó trong lập
trình ta sẽ dùng các biến LuyThua1
để tính toán và lu trữ kết quả của an.
Tơng tự LuyThua2, LuyThua3,
LuyThua4 dùng để tính toán và lu trữ
kết quả của bm, cp, dq.
GV: Cả lớp theo dõi chơng trình
tinh_tong trang 92 SGK
GV: Hãy quan sát và cho biết có mấy
khối lệnh đợc viết tơng tự nhau?
HS: Có 4 khối lệnh đợc viết tơng tự
nhau
GV: Bằng trực quan một em cho cô
biết khi viết nh vậy em có nhận xét gì không ?
HS: ở đây có 4 khối lệnh tơng tự nhau đợc lặp đi lặp lại làm cho chơng trình vừa dài, vừa khó theo dõi
GV: Để nâng cao hiệu quả lập trình,
các ngôn ngữ lập trình bậc cao đều cung cấp khả năng xây dựng chơng trình con dạng tổng quát “đại diện” cho nhiều đoạn lệnh tơng tự nhau Chẳng hạn, tính luỹ thừa luythua=xk, trong đó lũy thừa và x là giá trị kiểu thực còn k thuộc kiểu nguyên Ta có thể đặt tên cho chơng trình con này là
luythua và tham số cần thiết là x và k
Khi cần tính luỹ thừa cụ thể ta chỉ cần viết tên chơng trình con và thay thế (x,k) bằng giá trị cụ thể tơng ứng chẳng hạn để tính an , bm, cp, dq ta
viết luythua(a, n), luythua(b, m),
luythua(c, p), luythua(d,q)
GV:Sau đây thầy sẽ giới thiệu cho
các em chơng trình tính TLuyThua
có sử dụng chơng trình con đợc viết bằng ngôn ngữ Pascal
GV: Treo bảng phụ.
GV: Bảng phụ sử dụng một chơng
trình con là hàm LuyThua kiểu thực với các tham số hình thức là x kiểu
Trang 4Function LuyThua(x:real;k:integer):real;
var i:integer;
Tich:real;
begin
Tich:=1.0;
For i:=1 to k do
Tich:=Tich*x;
LuyThua:=Tich;
end;
BEGIN
write('Nhap du lieu theo thu tu
a, b, c, d, m, n, p, q:');
readln(a,b,c,d,m,n,p,q);
TLuyThua:=LuyThua(a,m)+LuyThua(b,n)
+LuyThua(c,p)
+LuyThua(d,q);
write('Tong luy thua=',TLuyThua:2:2);
readln;
END.
* Nhận xét: Sử dụng chơng trình con
ơng trình ngắn gọn, dễ theo dõi hơn
ch-ơng trình không sử dụng chch-ơng trình con
thực, k kiểu nguyên Khi cần tính các giá trị cụ thể ta chi việc gọi tên
ch-ơng trình Ví dụ: Tính LuyThua=an
Ta sẽ gọi LuyThua(a,n)
GV: Một em cho thầy biết chơng
trình có sử dụng chơng trình con có ngắn gọn và dễ theo dõi hơn so với chơng trình không sử dụng chơng trình con không?
HS: Trả lời
GV: Nhận xét và khẳng định: Chơng
trình có sử dụng chơng trình con ngắn gọn, dễ theo dõi hơn chơng trình không sử dụng chơng trình con
GV: Theo em, để sản xuất ra đợc một
chiếc xe máy, có phải chỉ cần qua tay một ngời thợ ? Hay phải qua một dây chuyền sản xuất ?
HS: Trả lời GV: Đúng vậy, để sản xuất ra một
chiếc xe máy ngời ta phải phân thành nhiều công đoạn nh sản xuất ra khung xe, yên xe, Mỗi công đoạn
đợc giao cho các tổ lao động chuyên làm một bộ phận Và có một bộ phận chuyên lắp ráp sản phẩm từ các bộ phận nhỏ
GV: Đối với lập trình cũng vậy, khi
lập trình giải toán, ta có thể phân chia chơng trình thành các khối (môđun),
Trang 5- Khi lập trình giải toán, ta có thể phân
chia chơng trình thành các khối (môđun),
mỗi khối bao gồm các lệnh giải một bài
toán nào đó Mỗi khối lệnh sẽ đợc xây
dựng thành một chơng trình con Sau đó,
chơng trình chính sẽ đợc xây dựng từ các
chơng trình con này Chơng trình con
cũng có thể đợc xây dựng từ các chơng
trình con khác Cách lập trình nh vậy dựa
trên phơng pháp lập trình có cấu trúc và
chơng trình đợc xây dựng gọi là chơng
trình có cấu trúc
* Chú ý: Chơng trình con đôi khi chỉ đợc
dùng đúng một lần xong khi đó nó vẫn có
tác dụng làm sáng sủa chơng trình
Bài toán 2: Viết chơng trình nhập vào số
nguyên dơng N (0 < N < 50) và
dãy số nguyên dơng a1, , an Đa ra số
l-ợng số nguyên tố
Input: Số nguyên dơng ( 0 < N < 50) và
dãy số nguyên dơng a1, , an
Output: Số lợng số nguyên tố.
mỗi khối bao gồm các lệnh giải một bài toán nào đó Mỗi khối lệnh sẽ
đ-ợc xây dựng thành một chơng trình con Sau đó, chơng trình chính sẽ đợc xây dựng từ các chơng trình con này Chơng trình con cũng có thể đợc xây dựng từ các chơng trình con khác
Cách lập trình nh vậy dựa trên phơng pháp lập trình có cấu trúc và chơng trình đợc xây dựng gọi là chơng trình
có cấu trúc
GV: Cần chú ý là chơng trình con đôi
khi chỉ đợc dùng đúng một lần xong khi đó nó vẫn có tác dụng làm sáng sủa chơng trình
GV: Để hiểu rõ hơn về việc cần thiết
phải sử dựng chơng trình con chúng
ta đi xét bài toán 2
GV: Đa ra bài toán
GV: Từ bài toán trên một em xác
định Input, Output?
HS: Trả lời.
GV: Để giải đợc bài toán trên ta cần
phải làm gì?
HS: Trả lời
GV: Tạo 1 biến: đếm số lợng số
nguyên tố Lần lợt với mỗi số ai (với i=1, ,n) ta kiểm tra số đó có là
số nguyên tố hay không Nếu là số nguyên tố thì tăng biến đếm lên 1
đơn vị Nh vậy với N = 50 thì ta phải viết đi viết lại 50 lần dãy lệnh tơng tự nhau để kiểm tra một số nguyên
d-ơng có phải là số nguyên tố hay không?
GV: Nh vậy chúng ta thấy đợc việc
Trang 6* Khái niệm chơng trình con (SGK)
* Lợi ích của việc sử dụng chơng trình
con
- Tránh đợc việc phải lặp đi lặp lại cùng
một dãy lệnh nào đó VD: Bài toán 1, 2
- Hỗ trợ việc thực hiện các chơng trình
lớn VD: Bài toán quản lý điểm
- Phục vụ cho quá trình trừu
tợng hoá Ví dụ khi sử dụng các hàm
toán học nh sin(x), cos(x), ta không cần
xem nó đợc xây dựng nh thế nào Trừu
t-ợng hoá là t tởng chủ đạo để xây dựng
chơng trình nói chung và chơng trình có
cấu trúc nói riêng.
-Mở rộng khả năng ngôn ngữ Ví dụ:
Trong bài toán 1 ta xây dựng thêm đợc
ch-ơng trình con luỹ thừa
- Thuận tiện cho phát triển, nâng cấp
ch-ơng trình
cần thiết phải sử dụng chơng trình con trong chơng trình
GV: Qua các ví dụ trên ta có khái
niệm chơng trình con Vậy mời 1 em
đọc khái niệm chơng trình con
HS: Đọc khái niệm chơng trình con
trong SGK
GV: Qua hai ví dụ trên một em cho
biết sử dụng chơng trình con có những lợi ích gì?
GV (Giải thích): Do chơng trình đợc
tạo thành từ các chơng trình con nên
dễ đọc, dễ hiểu, dễ kiểm tra và hiệu chỉnh Việc nâng cấp, phát triển chơng trình con nào đó, thậm chí bổ sung thêm các chơng trình con mới nói chung không gây ảnh hởng tới các
ch-ơng trình con khác
* Lu ý: Nếu còn thời gian thì yêu cầu
học sinh suy nghĩ và đa ra các bài toán cần thiết phải sử dụng chơng trình con
III Củng cố
Tóm lại qua bài học hôm nay chúng ta cần lu ý:
Chơng trình con
o Dãy lệnh thực hiện 1 công việc nào đó
Trang 7o Xây dựng nên chơng trình chính và có thể đợc xây dựng từ các chơng trình con khác
o Đợc gọi từ nhiều vị trí khác nhau
Khi nào thì cần thiết phải sử dụng chơng trình con: Khi chơng trình lặp đi lặp lại các đoạn lệnh tơng tự nhau
Lợi ích của việc sử dụng chơng trình con
IV Dặn dò
Học bài cũ và đọc trớc mục 2.Phân loại và cấu trúc của chơng trình con
V Rút kinh nghiệm
Trang 8NhËn xÐt cña gi¸o viªn híng dÉn
Ngµy th¸ng n¨m 2008
Gi¸o viªn híng dÉn