Professional Documents
Culture Documents
Bài 7 Hàm PDF
Bài 7 Hàm PDF
NHP MN LP TRNH
HM
VC
&
BB
Ni dung
Tm vc
Tham s v li gi hm
quy
Hm
VC
&
BB
t vn
Nhp
a, b, c > 0
Nhp
a>0
Nhp
b>0
Tnh
S = a! + b! + c!
Nhp
c>0
Tnh
s1=a!
Tnh
s2=b!
Xut
kt qu S
Tnh
s3=c!
Hm
VC
&
BB
t vn
do {
printf(Nhap mot so nguyen duong: );
scanf(%d, &b);
} while (b <= 0);
do {
printf(Nhap mot so nguyen duong: );
scanf(%d, &c);
} while (c <= 0);
Hm
VC
&
BB
t vn
VC
&
BB
t vn
VC
&
BB
Hm
Khi nim
Mt on chng trnh c tn, u vo v
u ra.
C chc nng gii quyt mt s vn
chuyn bit cho chng trnh chnh.
c gi nhiu ln vi cc tham s khc
nhau.
c s dng khi c nhu cu:
Ti s dng.
Sa li v ci tin.
Hm
VC
&
BB
Hm
C php
<kiu tr v> <tn hm>([<danh sch tham s>])
{
<cc cu lnh>
[return <gi tr>;]
}
Trong
<kiu tr v> : kiu bt k ca C (char, int, long,
float,). Nu khng tr v th l void.
<tn hm>: theo quy tc t tn nh danh.
<danh sch tham s> : tham s hnh thc u vo
ging khai bo bin, cch nhau bng du ,
<gi tr> : tr v cho hm qua lnh return.
8
Hm
VC
&
BB
Cc bc vit hm
Tn hm
u ra (nu c)
Cc cng vic
s thc hin
Hm
VC
&
BB
Hm
V d 1
Tn hm: XuatTong
Cng vic: tnh v xut tng 2 s nguyn
u vo: hai s nguyn x v y
u ra: khng c
void XuatTong(int x, int y)
{
int s;
s = x + y;
printf(%d cong %d bang %d\n, x, y, s);
}
Hm
10
VC
&
BB
Hm
V d 2
Tn hm: TinhTong
Cng vic: tnh v tr v tng 2 s nguyn
u vo: hai s nguyn x v y
u ra: mt s nguyn c gi tr x + y
int TinhTong(int x, int y)
{
int s;
s = x + y;
return s;
}
Hm
11
VC
&
BB
V d 3
Tn hm: NhapXuatTong
Cng vic: nhp v xut tng 2 s nguyn
u vo: khng c
u ra: khng c
void NhapXuatTong()
{
int x, y;
printf(Nhap 2 so nguyen: );
scanf(%d%d, &x, &y);
printf(%d cong %d bang %d\n, x, y, x + y);
}
Hm
12
VC
&
BB
Tm vc
Khi nim
L phm vi hiu qu ca bin v hm.
Bin:
Ton cc: khai bo trong ngoi tt c cc hm (k
c hm main) v c tc dng ln ton b chng
trnh.
Cc b: khai bo trong hm hoc khi { } v ch c
tc dng trong bn thn hm hoc khi (k c
khi con n). Bin cc b s b xa khi b nh khi
kt thc khi khai bo n.
Hm
13
VC
&
BB
Tm vc
int a;
int Ham1()
{
int a1;
}
int Ham2()
{
int a2;
{
int a21;
}
}
void main()
{
int a3;
}
Hm
14
VC
&
BB
Mt s lu
// prototype
void main()
{
}
void XuatTong(int x, int y)
{
printf(%d cong %d bang %d\n, x, y, x + y);
}
Hm
15
VC
&
BB
Cc cch truyn i s
x++;
}
Hm
16
VC
&
BB
Cc cch truyn i s
*x++;
}
Hm
17
VC
&
BB
Cc cch truyn i s
x++;
}
Hm
18
VC
&
BB
Lu khi truyn i s
Lu
Trong mt hm, cc tham s c th truyn
theo nhiu cch.
void HonHop(int x, int &y)
{
x++;
y++;
}
Hm
19
VC
&
BB
Lu khi truyn i s
Lu
S dng tham chiu l mt cch tr v gi
tr cho chng trnh.
int TinhTong(int x, int y)
{
return x + y;
}
void TinhTong(int x, int y, int &tong)
{
tong = x + y;
}
void TinhTongHieu(int x, int y, int &tong, int &hieu)
{
tong = x + y; hieu = x y;
20
Hm
}
VC
&
BB
Li gi hm
21
VC
&
BB
Li gi hm
V d
// Cc hm c khai bo y
void main()
{
int n = 9;
XuatTong(1, 2);
XuatTong(1, n);
TinhTong(1, 2);
int tong = TinhTong(1, 2);
TruyenGiaTri(1);
TruyenGiaTri(n);
TruyenDiaChi(1);
TruyenDiaChi(&n);
TruyenThamChieu(1);
TruyenThamChieu(n);
}
Hm
22
VC
&
BB
V d
void HoanVi(int &a, int &b);
void main()
{
HoanVi(2912, 1706);
int x = 2912, y = 1706;
HoanVi(x, y);
}
void HoanVi(int &a, int &b)
{
int tam = a;
a = b;
b = tam;
}
Hm
23
VC
&
BB
quy
Khi nim
Mt chng trnh con c th gi mt chng
trnh con khc.
Nu gi chnh n th c gi l s quy.
S ln gi ny phi c gii hn (im dng)
V d
Tnh S(n) = n! = 1*2**(n-1)*n
Ta thy S(n) = S(n-1)*n
Vy thay v tnh S(n) ta s i tnh S(n-1)
Tng t tnh S(n-2), , S(2), S(1), S(0) = 1 24
Hm
VC
&
BB
quy
V d
int GiaiThua(int n)
{
if (n == 0)
return
else
return
}
int GiaiThua(int n)
{
if (n > 0)
return
else
return
}
1;
GiaiThua(n 1) * n;
GiaiThua(n 1) * n;
1;
Hm
25
VC
&
BB
Bi tp
Hm
26
VC
&
BB
Bi tp
27
VC
&
BB
Bi tp
28