• Các ch ơng trình đ ợc viết bởi các nhóm nhỏ A, B, C đ ợc gọi là các ch ơng trình con CTC.. Lợi ích của việc sử dụng ch ơng trình con:• Tránh đ ợc việc phải viết lặp đi lặp lai cùng một
Trang 1Bµi 17
Trang 2§Ó viÕt ch ¬ng tr×nh gi¶i c¸c bµi to¸n lín, phøc t¹p ng êi lËp tr×nh cã thÓ chia thµnh nhiÒu bµi to¸n nhá
Nhãm
tr ëng ViÖc A
ViÖc B
1 Kh¸i niÖm Ch ¬ng tr×nh con (ctc)
Trang 3luythua= an + bm + cp + dq
Ta chia công việc cho ng ời A: luythua1= an
luythua1:=1;
For i:=1 to n do luythua1:=luythua1*a;
Ta chia công việc cho ng ời B: luythua2= bm
luythua2:=1;
For i:=1 to m do luythua2:=luythua2*b;
Ta chia công việc cho ng ời C: luythua3= cp
luythua3:=1;
For i:=1 to p do luythua3:=luythua3*c;
Ta chia công việc cho ng ời D: luythua4= dq
luythua4:=1;
For i:=1 to q do luythua4:=luythua4*d;
Làm thế nào để tính giá trị cho từng lũy thừa và tổng lũy thừa?
Các ch ơng trình trên có gì đặc biệt?
Trang 4VÝ dô: §Ó lµm bµi to¸n qu¶n lý häc sinh gåm c¸c c«ng viÖc sau:
• NhËp th«ng tin cho tõng häc sinh (1)
• Xö lý sè liÖu vÒ kÕt qu¶ häc tËp: xÕp lo¹i, s¾p xÕp häc sinh theo chiÒu gi¶m cña ®iÓm TB …(2) (2)
• In kÕt qu¶ ra mµn h×nh (3)
C¸c c«ng viÖc nµy sÏ ® îc chia ra nh sau:
Trang 5• Giao c«ng viÖc (1) cho nhãm A
• Giao c«ng viÖc (2) cho nhãm B
• Giao c«ng viÖc (3) cho nhãm C
• Nhãm tr ëng thu l¹i c¸c ch ¬ng tr×nh nhá tõ c¸c nhãm vµ tæng hîp l¹i thµnh ch ¬ng tr×nh qu¶n
lý häc sinh hoµn chØnh.
Trang 6• Các ch ơng trình đ ợc viết bởi các nhóm nhỏ A, B,
C đ ợc gọi là các ch ơng trình con (CTC).
• Ch ơng trình mà nhóm tr ởng viết để gọi ra các ch
ơng trình con của các nhóm A, B, C gọi là ch ơng trình chình.
tácưnhấtưđịnhưvàưcóưthểưđượcưthựcưhiệnư(đượcưgọi)ưtừưnhiềuưvịư tríưtrongưchươngưtrình.
Trang 7Lợi ích của việc sử dụng ch ơng trình con:
• Tránh đ ợc việc phải viết lặp đi lặp lai cùng một dãy lệnh nào đó
• Hỗ trợ việc thực hiện các ch ơng trình lớn.
• Phục vụ cho quy trình trừu t ợng hóa.
• Mở rộng khả năng ngôn ngữ.
• Thuận tiện cho phát triển, nâng cấp ch ơng trình.
Trang 82 Phân loại và cấu trúc của ch ơng trình con
Ch ơng trình con
Hàm (Function)
Là ch ơng trình con
thực hiện một số
thao tác nào đó, và
trả về một giá trị
qua tên của nó.
Hàm (Function)
Là ch ơng trình con
thực hiện một số
thao tác nào đó, và
qua tên của nó.
Thủ tục (Procedure)
Là ch ơng trình con thực hiện một số thao tác nào đó, và không trả về giá trị nào qua tên của nó.
Thủ tục (Procedure)
Là ch ơng trình con thực hiện một số thao tác nào đó, và không
tên của nó.
Tính tổng luỹ thừa
Vẽ và đ a ra màn hình
5 hình chữ nhật có kích th ớc khác nhau.
a) Phân loại
Trang 92 Ph©n lo¹i vµ CÊu tróc cña ch ¬ng tr×nh con
<PhÇn ®Çu>
[<PhÇn khai b¸o>]
< PhÇn th©n>
<PhÇn ®Çu>
[<PhÇn khai b¸o>]
< PhÇn th©n>
Function <Tªnhµm> [(<ds tham sè>)] :kiÓu cña hµm;
[< PhÇn khai b¸o >]
Begin
Begin [<D·y c¸c lÖnh>]
End ; tªnhµm := gi¸trÞ ; End;
Procedure <tªn thñ tôc> [(<ds tham sè>)];
[< PhÇn khai b¸o >]
Begin
[<D·y c¸c lÖnh>]
End;
b) CÊu tróc cña CTC
Tr¶ vÒ gi¸ trÞ qua tªn hµm
Trang 10VD1: Lập ch ơng trình tính tổng luỹ thừa luythua = an +bm +cp +dq VD1: Lập ch ơng trình tính tổng luỹ thừa luythua = an +bm +cp +dq
Trong đó: Luythua, x kiểu thực, k kiểu nguyên
Luythua(a,n) luythua(b,m), luythua(c,p),luythua(d,q)
* OUTPUT : luythua
Trang 11Function luythua(a:real;b:integer):real;
var
i:integer;
tich:real;
Begin
tich:=1.0;
For i:=1 to b do tich:=tich*a;
luythua:=tich;
End;
Tên hàm
Tha
m số hình thức
Kiểu dữ
liệu
Biến cục bộ
Các biến đ ợc khai báo cho dữ liệu vào/ra
Các CTC khác không thể sử dụng các biến cục bộ của một CTC, nh ng mọi CTC đều sử dụng đ ợc các biến của ch ơng trình chính
Trang 124 Mét sè vÝ dô
Bµi to¸n 1: LËp ch ¬ng tr×nh tèi gi¶n ph©n sè
Bµi to¸n 1: LËp ch ¬ng tr×nh tèi gi¶n ph©n sè
* INPUT : NhËp ph©n sè a/b;
ViÕt ch ¬ng tr×nh con thùc hiÖn t×m ¦CLN(a,b) vµ gäi nã khi tÝnh c,d trong ch
¬ng tr×nh chÝnh
Trang 13Program tgps;
Uses crt;
Var tu,mau,c,d : integer;
Function UCLN( a,b :integer) : integer;
Begin While a<> b do
UCLN := a;
end;
BEGIN
Writeln( Phan so toi gian = , c, / , d);‘ Nhap vao tu so vµ mau so:’); readln(tu,mau); ’); readln(tu,mau); ‘ Nhap vao tu so vµ mau so:’); readln(tu,mau); ’); readln(tu,mau);
Readln;
END
Write( Nhap vao tu so va mau so: );‘Nhap vao tu so va mau so:’); ’);
C := 6 div UCLN(6,10); d := 10 div UCLN(6,10);
Writeln( Phan so toi gian = , 3, / , 5);‘ Nhap vao tu so vµ mau so:’); readln(tu,mau); ’); readln(tu,mau); ‘ Nhap vao tu so vµ mau so:’); readln(tu,mau); ’); readln(tu,mau);
Readln;
END
BEGIN
Readln(tu,mau);
USCLN=2;
USCLN=2;
Nhap vao tu so va mau so: 6 10 Phan so toi gian= 3/5
Trang 14• Các CTC th ờng đ ợc đặt sau
phần khai báo của ch ơng trình chính
• CTC chỉ đ ợc thực hiện khi
có lời gọi nó.
• Lợi ích của việc sử dụng
ch ơng trình con:
Hỗ trợ việc thực hiện các ch ơng trình lớn.
Tránh đ ợc việc phải viết lặp đi lặp lại cùng một dãy lệnh nào đó.
Thuận tiện cho việc phát triển và nâng cấp ch ơng
Trang 15Biến
cục
số
sự
số h
ình
Mọi CTC đều có thể sử dụng biến của
ch ơng trình chính
Trang 17H·y nhí!
Ch ¬ng tr×nh con lµ mét d·y
lÖnh gi¶i quyÕt mét bµi to¸n con cô thÓ.
CÊu tróc ch ¬ng tr×nh gåm:
Ph©n lo¹i ch ¬ng tr×nh con:
+ Hµm + Thñ tôc
<PhÇn ®Çu>
[<PhÇn khai b¸o>]
< PhÇn th©n>
<PhÇn ®Çu>
[<PhÇn khai b¸o>]
< PhÇn th©n>