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

CHƯƠNG 6 HÀM (FUNCTION) pps

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 (1.21 MB, 39 trang )

Á Ệ
1. KH
Á
I Ni

M
y
Hàm

một
khối
lệnh
thực
hiện
một
công
y
Hàm

một
khối
lệnh
thực
hiện
một
công
việchoànchỉnh (module), được đặttênvà
được
gọi
thực


thi
nhiều
lần
tại
nhiều
vị
trí
được
gọi
thực
thi
nhiều
lần
tại
nhiều
vị
trí
trong chương trình.
Hàm
còn
gọi

chương
tình
con
(
bti
)
y
Hàm

còn
gọi

chương
t
r
ình
con

(
su
b
rou
ti
ne
)
Á Ệ
1. KH
Á
I Ni

M
y

hai
lọai
hàm
:
y


hai
lọai
hàm
:
y
Hàm thư viện
:lànhững hàm đã đượcxây
dự

M ố

d
á

thư
iệ
dự
n
g
s

n.
M
u

ns

d
ụn
g

c
á
c

m
thư
v
iệ
n
phảikhaibáothư việnchứanótrongphần
khai
báo
#incl de
khai
báo
#incl
u
de
.
y
Hàm do người dùng định nghĩa
.
Á Ệ
1. KH
Á
I Ni

M
y
Hàm


thể
được
gọi
từ
chương
trình
chính
y
Hàm

thể
được
gọi
từ
chương
trình
chính
(hàm main) hoặctừ 1 hàm khác.

ó

t ị
t ả

h ặ
khô
Nế

y


mc
ó
giá
t
r

t
r

v

h
o

c
khô
n
g
.
Nế
u

m
không có giá trị trả về gọilàthủ tục
(d)
(
proce
d
ure

)
Ổ Á Ủ À
2. DẠNG T

NG QU
Á
T C

A H
À
M
y
Dạng tổng quát củahàmdongười dùng
y
Dạng

tổng

quát

của

hàm

do

người

dùng


định nghĩa:
et T e
f tio N e( ete Li t)
r
et
urn
T
yp
e
f
unc
tio
n
N
am
e(
param
ete
r
Li
s
t)
{
body of the function
}
}
Ổ Á Ủ À
2. DẠNG T

NG QU

Á
T C

A H
À
M
y
returnType
:
Kiểu
dữ
liệu
của
giá
trị
trả
về
y
returnType
:
Kiểu
dữ
liệu
của
giá
trị
trả
về
bởihàm.Nếuhàmkhôngtrả về giá trị thì
returnType


void
returnType

void
y
functionName
:Tênhàm.
á
á

y
p
arameterLis
t
:Danhs
á
ch c
á
cthams

hình thức phân cách nhau bởidấuphẩy
Í

DỤ
int
max(
int
a
int

b)
int
max(
int
a
,
int
b)
{
if(a<b)
return b
;
;
else
return a;
return

a;
}
À
3. GỌI H
À
M
y
Một
hàm
khi
đã
định
nghĩa

nhưng
chúng
vẫn
y
Một
hàm
khi
đã
định
nghĩa
nhưng
chúng
vẫn
chưa đượcthựcthi,hàmchỉđượcthựcthi
khi
trong
chương
trình

một
lời
gọi
đến
khi
trong
chương
trình

một
lời

gọi
đến
hàm đó.

pháp
gọi
hàm
y

pháp
gọi
hàm
:
<Tên hàm>([Danh sách các tham s

])
<Tên hàm>([Danh sách các tham s

])
Í

DỤ
y
Gọi
hàm
trong
chương
trình
chính
:

y
Gọi
hàm
trong
chương
trình
chính
:
void main()
{
int
ab;
{

int
a
,
b;
cout<<” a=“; cin>>a;
cout
<<”b “;
cin
>>b;
cout
<<”b
=
“;

cin
>>b;

cout<<”so lon nhat la:”<<max(a, b);
}
}
4. NGUYÊN TẮC HOẠT ĐỘNG CỦA HÀM
y
Hàm

thể
được
gọi
từ
nhiều
chỗ
khác
Hàm

thể
được
gọi
từ
nhiều
chỗ
khác
nhau trong chương trình.
à



y Khi h
à

m được
g
ọi, kh

il

nh tươn
g

n
g
củahàmđượcthựcthi.
y Sau khi thự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
id i ()

it
l
(
it
it
b)
vo
id
ma
i
n
()
{
int
abUSC;
i
n
t
usc
l
n
(
i
n
t
a,
i
n
t
b)

{
a
=
abs(a);
int
a
,
b
,
USC;
cout<<“Nhap a,b: ”;
cin>>a>>b
;
a abs(a);
b=abs(b);
while(a!=b)
;
USC = uscln(a,b);
cout<<“Uoc chung lon
nhat
la: ” USC);
{
if(a>b) a-=b;
else
b
-
=a;
nhat
la:



,
USC);
}
else

b
-
=a;
}
return a
;}
;}
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
y
Khi
hàm
cần
nhận
đối
số
(
arguments
)
để
y
Khi
hàm
cần
nhận

đối
số
(
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ừ
danh
sách
các
tham
số
để
nhận
giá
trị
từ
chương trình gọi. Các tham số này đượcgọi

tham

số
hình
thức

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

dụ
:

dụ
:
int min(int a, int b)
{

{
if(a<b)
return a
;
Tham s

hình thức
;
else
return b;

}
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
y
Khi
gọi
hàm
ta
cung
cấp
các
giá
trị
thật
các
y
Khi
gọi
hàm
,
ta
cung
cấp
các
giá
trị
thật
,
các
giá trị này sẽđược sao chép vào các tham số
hình

thức

các
giá
trị
thật
được
gọi

tham
hình
thức

các
giá
trị
thật
được
gọi

tham
số thực
.

d
Đ

ì



h

h


2

5
à
6

d
ụ:
Đ

t
ì
m
giá
tr

n
h

n
h

tc

a

2
s

5

6
ta
gọihàmmin(5, 6)
Tham số thực
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
y

hai
cách
truyền
đối
số
vào
tham
số
hình
y


hai
cách
truyền
đối
số
vào
tham
số
hình
thức:
T ề
th
t ị
y
T
ruy

n
th
a
m
t
r

y Truyền
tham biến.
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
y
Truyền
tham

trị
(call
by
value)
y
Truyền
tham
trị
(call
by
value)
y Sao chép giá trị của
đốisố
vào
tham
s

hìn
h
thứ
c
củahàm.



ô

y Nhữn
g
thay đ


ic

athams

kh
ô
n
g

nh
hưởng đếngiátrị của đốisố.
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
Ví d

:
Ví d

:
void double(int a)
{
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()
void main()

{
int a=40;
double
(
a
);
();
cout << “\n Gia tri cua a trong ham main: ”;
cout <<

a =

<< a << endl;
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
t
r
o
n
g
h
a
m
doub
l
e

:“<<
a;
40
a=40 2;
cout
<<
\
n
Gia
tri
cua
a
trong ham main: ”;
cou
t
<< “a = “ << a <<
to g
adoube a;
}
endl;
}
Gia tri cua a trong ham double: 80
Gia
tri
cua
a
trong
ham main: 40
Gia
tri

cua
a
trong
ham main: 40
5. THAM SỐ HÌNH THỨC &THAM SỐ THỰC
y
Truyền
tham
chiếu
(call
by
reference)
Truyền
tham
chiếu
(call
by
reference)
y Sao chép địachỉ của đốisố vào tham
số
hình
thức
Do
đó
những
thay
đổi
đối
số
hình

thức
.
Do
đó
,
những
thay
đổi
đối
vớithamsố sẽ có tác dụng trên đốisố.
Ví dụ:Khigọihàmdouble(&a);
Địachỉ củaatruyềnvàochothamsố
hình thứccủahàm:double
(
int *b
)
(
)

Ì


5. THAM S

H
Ì
NH TH

C &THAM S


T
H

C
void
double(int
*
b)
void

double(int
b)
{
*b * 2
*b

*
=
2
;
cout << “Trong hàm double a = “ << *b;
}

Ì


5. THAM S

H
Ì

NH TH

C &THAM S

T
H

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

\
h
*b

*
=
2
;
cout << “Trong hàm
double a

<< *b;
40
a
100
100
80
cout <<

\

T
ron
g
h
am
main : a = “ << a ;
}
double

a
=
<<

*b;
}
}
Trong
hàm
doublea 80
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()
void

main()

{ int a = 20, b = 40;
it* & *b &b
i
n
t

*
pa =
&
a,
*
p
b
=
&b
;
swap(pa,pb);
cout << “sau khi goi swap: “;
cout <<

a
=“
<<a<<endl;
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)
void swap(
int
a
,

int
b)
{
in
t
temp;
temp =
*
a;
temp = a;

*a = *b;
*b = temp;
}
}
6. PROTOTYPE (NGUYÊN MẪU)CỦA HÀM
y
Dùng
để
loại
trừ
việc
bắt
buộc
phải
định
Dùng
để
loại
trừ
việc
bắt
buộc
phải
định
nghĩahàmtrướckhigọi.
y
Prototype
khai
báo
giống

như
header
của
y
Prototype
khai
báo
giống
như
header
của
hàm

d

dụ
:
Header : void dispayMessage()
Prototype : void dispayMessa
g
e()

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×