CHƯƠNG 6
HÀM (FUNCTION)
HÀM
(FUNCTION)
1. KHÁI NiỆM
• Hàm là mộtkhốilệnh thựchiệnmộtcôn
g
việchoànchỉnh (module), được đặttên
à
ề
ầ
ề
v
à
được
g
ọithực thi nhi
ề
ul
ầ
ntại nhi
ề
uvị
trí trong chương trình.
•Hàm còn gọi là chương trình con (subroutine)
1. KHÁI NiỆM
•Cóhailọai hàm:
–
Hàm thư vi
ệ
người
dùng
định
nghĩa
.
1. KHÁI NiỆM
ể
•Hàm có th
ể
được
g
ọitừ chươn
g
trình
chính (hàm main) hoặctừ 1 hàm khác.
•Hàm có giá trị trả về hoặckhông.Nếu
hàm khôn
g
có
g
iá tr
ị
trả về
gọ
ilàthủ t
ụ
c
g
g
ị
udữ liệucủa
g
iá trị trả
về bởihàm.Nếuhàmkhôngtrả về giá trị
ì
à
th
ì
returnType l
à
void
•
functionNam
e
:
T
ên hàm.
•
parameterList
:Danhsáchcácthamsố
hình
thức
phân
cách
nhau
bởi
dấu
phẩy
hình
ó
ộ
ờ
thựcthikhitron
g
chươn
g
tr
ì
nh c
ó
m
ộ
tl
ờ
i
gọi đếnhàmđó.
• Cú pháp gọihàm:
<Tên hàm>([Danh sách các tham s
ố
])
<Tên hàm>([Danh sách các tham s
ố
])
VÍ DỤ
à ìí
•Gọi h
à
m tron
g
ợ
ự
•Saukhithựchiện xong, quyền điềukhiển
được
trả
về
cho
chương
trình
gọi
.
được
trả
về
cho
chương
trình
gọi
.
4. NGUYÊN TẮC HOẠT ĐỘNG CỦA HÀM
void main()
{
it bUSC
int uscln
(
int a, int b
)
{
a=abs(a);
i
se
b
-=a;
}
return a
;}
return
a
;}
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
ầ
ố
ố
ể
• Khi hàm c
ầ
nnhận đ
ố
is
ố
(arguments) đ
ể
thực thi thì khi khai báo hàm cần khai báo
ố
ể
danh sách các tham s
ố
đ
ể
return
b
;
}
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
•Khigọi hàm, ta cung cấpcácgiátrị thật,
các
g
iá tr
ị
nà
y
sẽđư
ợ
csaoché
p
vào các
g
ị
y
ợ
p
tham số hình thứcvàcácgiátrị thật được
gọ
ilà
tha
m
s
ố
th
•Có hai cách truyền đốis
ố
vào tham s
ố
hình thức:
–Truyền
tham trị
–
Truyền
tham
biến
.
Truyền
tham
biến
.
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
•
Truyề
n
tha
m
tr
ị
(
cal
l
b
y
value
thay
đổi
của
tham
số
không
ảnh
hưởng đếngiátrị của đốisố.
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
í
Ví
dụ:
void double
(
int a
)
()
{
a = a
*
2;
a = a 2;
cout << “gia tri cua a trong ham double:“<< a;
}
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
void main()
{
{
int a=40;
double(a);
n
g
h
a
m
doub
le:“<<
a;
40
a=40 2;
cout<<
\
n Gia tri cua a
trong ham main: ”;
cout << “a = “ << a <<
og a doub a;
}
endl;
}
Gia tri cua a trong ham double: 80
Gia tri cua a trong ham double: 80
Gia tri cua a trong ham main: 40
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
• Truyền tham chiếu
(
cal
l
b
y
reference
tham
số
hình
Địa
chỉ
của
a
truyền
vào
cho
tham
số
hình
thứccủahàm:double(int *b)
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
void double(in
t
*b)
{
{
*b *= 2;
cout <<
“
Trong hàm double a =
“
<< *b;
cout
<<
int
*b)
{
*b * 2
40
a
b
80
i
n
t
a=
40
;
double(&a);
“
\
T
h
*b
*
=
2
;
cout << “Trong hàm
double a =
“
<< *b;
40
a
=
8
Trong hàm double a = 80
Trong hàm main a = 80
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
void main()
{
int a = 20
,
b = 40
;
{,;
int *pa =&a, *pb=&b;
swap(pa pb);
swap(pa
,
pb);
cout << “sau khi goi swap: “;
cout << “a = “ << a << endl;
cout << “b = “ << b << endl
;
}
;}
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
void swap(int *a, int *b)
dispayMessage()
Prototype : void dispayMessage()