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 đó o 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[r]
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
Đá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;
Trang 2Chươ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.
Bà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.
Write(‘Luy thua ‘,a:2:2,’^’,n,’
=’,LuyThua:8:4);
Readln;
END.
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 đó
Trang 3- 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
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 đó
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à lưu trữ kết quả của an
Tương tự LuyThua2, LuyThua3, LuyThua4 dùng để tính toán và lưu 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ự
Trang 4- Để 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;
Function 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;
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 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)
Trang 5write('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
chương trình 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: 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
Trang 6- 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ố.
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
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
Trang 7* 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ụ:
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
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ì?
Trang 8chương trình con luỹ thừa.
- Thuận tiện cho phát triển, nâng cấp
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
* Lưu ý: 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 lưu ý:
Chương trình con
o Dãy lệnh thực hiện 1 công việc nào đó
o 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 9Nhậ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