Để xử lý vấn đề này các ngôn ngữ lập trình bậc cao cung cấp khả năng xây dựng các 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 [r]
Trang 1ChươngưIV
Trang 2Bµi17
Trang 3BÀI TOÁN MỞ ĐẦU
Hãy viết chương trình nhập
dữ liệu từ bàn phím, tính và đưa ra màn hình giá trị
Tluythua = an + bm + cp + dq
Trang 4Quan sát chương trình SGK trang 92
Trang 5Chương trình trên có những khối lệnh nào được viết tương tự nhau ?
Trang 6Để xử lý vấn đề này các ngôn ngữ lập trình bậc cao cung cấp khả năng xây dựng các 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 đó Luythua và x là giá trị kiểu thực
k thuộc kiểu nguyên
Đây là chương trình con được đặt tên là
Luythua(x,k)
Nhận xét: trong chương trình có 4 đoạn lệnh tương tự nhau, việc lặp lại những đoạn lệnh tương tự nhau làm
cho chương trình vừa dài vừa khó theo dõi.
Trang 7Luythua(a,n) Luythua(b,m)
Luythua(c,p)
Luythua(d,q)
Trang 8Quan sát chương trình sau khi đã cài đặt
chương trình con
Đây là 1 chương trình con
Trang 9Để 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ỏ, mỗi bài toán là một dãy lệnh mô tả một số thao tác nhất định (gọi là ctc) Sau đó ghép nối các ch ơng trình con thành ch ơng trình chính
Nhóm
tr ởng
Việc A
Việc B
1 Ch ơng trình con (ctc)
Trang 102 Phân loại 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à
trả về một giá trị
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
trả về giá trị nào qua tên của nó.
Tính tổng luỹ thừa
S = an + bm + cp + dq
Vẽ và đ a ra màn hình
5 hình chữ nhật có
Trang 11<PhÇn ®Çu>
<PhÇn khai b¸o>
< PhÇn th©n>
<PhÇn ®Çu>
<PhÇn khai b¸o>
< PhÇn th©n>
Phần đầu : khai báo tên chương trình con;
Phần khai báo: có thể khai báo biến cho dữ liệu vào
và ra,các hằng và biến dùng trong chương trình con.
Phần thân: là dãy câu lệnh thực hiện để từ những
dữ liệu vào ta nhận được dữ liệu ra hay kết quả
mong muốn;
3 CÊu tróc cña ch ¬ng tr×nh con
Trang 123 CÊu tróc cña ch ¬ng tr×nh con
Function <Tªnhµm> [<ds tham sè>) : kiÓu cña hµm;
[< PhÇn khai b¸o >]
Begin
[<D·y c¸c lÖnh>]
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;
<PhÇn ®Çu>
<PhÇn khai b¸o>
< PhÇn th©n>
<PhÇn ®Çu>
<PhÇn khai b¸o>
< PhÇn th©n>
Trang 134 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ố
Ví dụ: nhập 6/10 => ra 3/5
* INPUT : Nhập phân số a/b;
* OUTPUT : Phân số c/d - Trong đó: c = a/ƯCLN(a,b);
d = b/ƯCLN(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 14Program tgps;
Uses crt;
Var tu,mau,c,d : integer;
Function UCLN( a,b :integer) : integer;
Begin While a<> b do
if a>b then a := a-b else b:=b-a;
UCLN := a;
end;
BEGIN
Write( Nhap vao tu so vµ mau so: ); readln(tu,mau);‘ ’
C := tu div UCLN(tu,mau) ; d := mau div UCLN(tu,mau); Writeln( Phan so toi gian = , c, / , d);‘ ’ ‘ ’
Write( 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);‘ ’ ‘ ’
Readln;
BEGIN
Readln(tu,mau);
USCLN=2;
USCLN=2;
Nhap vao tu so va mau so: 6 10 Phan so toi gian= 3/5
Trang 15• 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
Trang 16H·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 khai b¸o>
<PhÇn khai b¸o>