Tải bản đầy đủ (.pdf) (39 trang)

PHƯƠNG PHÁP LẬP TRÌNH_6 doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (722.51 KB, 39 trang )

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


n: là nhữn
g
hàm đã đư

c

g

xây dựng sẵn. Muốnsử dụng các hàm
thư vi

n
p
hảikhaibáothư vi

nchứanó

p

trong phần khai báo #include.

Hàm
do
người
dùng
định
nghĩa
.
Hàm
do

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

g
iá tr

trả về
gọ
ilàthủ t

c
g
g


gọ

(procedure)
2. DẠNG TỔNG QUÁT CỦA HÀM

•Dạn
g
t

n
g
quát của hàm do n
g
ười dùn
g

định nghĩa:
returnType functionName(parameterList)
{
{
body of the function
}
}
2. DẠNG TỔNG QUÁT CỦA HÀM


returnTyp
e
:Ki


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ức
phân
cách
nhau
bởi
dấu
phẩy

VÍ DỤ
int max(int a, int b)
{
{
if(a<b)
return b;
return

b;
else
return a;
}
}
3. GỌI HÀM
•Mộthàmkhiđã định n
g
hĩanhưn
g
chún
g
vẫnchưa đượcthựcthi,hàmchỉđược
ì

ó


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

chươn
g
tr
ì
nh ch
í
nh:
void main()
{ int a, b;
cout<<” a=“; cin>>a;
cout<<”b=“; cin>>b;
cout<<”so lon nhat la:”<<max(a, b);
}
4. NGUYÊN TẮC HOẠT ĐỘNG CỦA HÀM


•Hàmcóth

được
g
ọitừ nhiềuch

khác
nhau trong chương trình.
•Khi hàm đượcgọi, khốilệnh tương ứng
củahàmđư

cth

cthi.



•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

n
t
a,
b
,
USC
;
cout<<“Nhap a,b: ”;
cin>>a>>b;
a=abs(a);
b=abs(b);
while
(
a!=b
)
cin>>a>>b;
USC = uscln(a,b);
cout<<“Uoc chun
g

()
{
if(a>b) a-=b;
l
b
g
lon nhat la: ”, USC);
}
e
l

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

đ


nhận giá trị từ
chương trình gọi. Các tham số này được

gọilàtham s

hình thứ
c
.
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC

d


d
ụ:
int min(int a, int b)
{
{
if(a<b)
return
a
;
Tham số hình thức
return
a
;
else
return
b
;

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


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
.
gọ

Ví dụ: Để tìm giá trị nhỏ nhấtcủa2số 5và6ta
g

i
hàm
min(
5
,
6
)

g

i
hàm
min(
5
,
6
)
min(int a, int b)
Tham s

thực
min(int a, int b)
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC

•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

)

Sao ché
p
g
iá tr

của
đố
i
s

vào
tha
m
p
g

số hình thức
củahàm.

Những
thay
đổi
của
tham
số
không
ảnh
Những

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
í

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);

double(a);
cout << “\n Gia tri cua a trong ham main: ”;
cout << “a = “ << a << endl;
}
}
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
void main()
void double( int a )
void main()
{
int a=40;
void double( int a )
{
a = a
*
2;
40
a=40
*
2;
int a=40;
double(a);
cout<<

\
n Gia tri cua a
a = a 2;
cout << “Gia tri cua a
tr
o

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

)

Sao ché
p
đ

achỉ của đốis

vào tham
p

số hình thức. Do đó, những thay đổi đối
vớithams

sẽ có tác d

n
g
trên đốis

.
ụ g
Ví dụ:Khigọihàmdouble(&a);
Địa
chỉ
của
a
truyền
vào
cho

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

<<


Trong

hàm

double

a

=

<<

*b;
}
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
void main()
void
double(
int
*b)
b
void

main()
{
it
40
void

double(

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
100
100
80
cout <<

\
T
rong
h
am
main : a = “ << a ;
}
double

a

=

<<

*b;
}
Trong
hàm
double a = 8
}
Trong
hàm
double


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)

{
{
int temp;
temp = *a;
*
a =
*
b;
a = b;
*b = temp;
}
6. PROTOTYPE (NGUYÊN MẪU)CỦA HÀM

•Dùn
g
đ

loạitrừ việcbắtbuộcphải định
nghĩahàmtrướckhigọi.
• Prototype khai báo giống như header của
hàm
Ví dụ:
Header
: void dispayMessage()
Header

:

void


dispayMessage()
Prototype : void dispayMessage()

×