You are on page 1of 28

Trng i hc Khoa hc T nhin

Khoa Cng ngh thng tin


B mn Cng ngh phn mm
1
ThS. ng Bnh Phng
dbphuong@fit.hcmus.edu.vn
NHP MN LP TRNH
HM
VC
&
BB

2 2
Ni dung
Hm
Khi nim v c php 1
Tm vc 2
Tham s v li gi hm 3
quy 4
VC
&
BB

3 3
t vn
Vit chng trnh tnh S = a! + b! + c! vi a, b, c
l 3 s nguyn dng nhp t bn phm.
Hm
Chng trnh
chnh
Nhp
a, b, c > 0
Tnh
S = a! + b! + c!
Xut
kt qu S
Nhp
a > 0
Nhp
b > 0
Nhp
c > 0
Tnh
s1=a!
Tnh
s2=b!
Tnh
s3=c!
VC
&
BB

4 4
t vn
3 on lnh nhp a, b, c > 0
Hm
do {
printf(Nhap mot so nguyen duong: );
scanf(%d, &a);
} while (a <= 0);

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);
VC
&
BB

5 5
t vn
3 on lnh tnh s1 = a!, s2 = b!, s3 = c!
Hm
// Tnh s1 = a! = 1 * 2 * * a
s1 = 1;
for (i = 2; i <= a ; i++)
s1 = s1 * i;

// Tnh s2 = b! = 1 * 2 * * b
s2 = 1;
for (i = 2; i <= b ; i++)
s2 = s2 * i;

// Tnh s3 = c! = 1 * 2 * * c
s3 = 1;
for (i = 2; i <= c ; i++)
s3 = s3 * i;
VC
&
BB

6 6
t vn
Gii php => Vit 1 ln v s dng nhiu ln
on lnh nhp tng qut, vi n = a, b, c



on lnh tnh giai tha tng qut, n = a, b, c
Hm
do {
printf(Nhap mot so nguyen duong: );
scanf(%d, &n);
} while (n <= 0);
// Tnh s = n! = 1 * 2 * * n
s = 1;
for (i = 2; i <= n ; i++)
s = s * i;
VC
&
BB

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

8 8
Hm
C php



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.
Hm
<kiu tr v> <tn hm>([<danh sch tham s>])
{
<cc cu lnh>
[return <gi tr>;]
}
VC
&
BB

9 9
Cc bc vit hm
Cn xc nh cc thng tin sau y:
Tn hm.
Hm s thc hin cng vic g.
Cc u vo (nu c).
u ra (nu c).
Hm
Tn hm



u vo 1
u vo 2
u vo n
u ra (nu c)
Cc cng vic
s thc hin
VC
&
BB

10 10
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

Hm
void XuatTong(int x, int y)
{
int s;
s = x + y;
printf(%d cong %d bang %d\n, x, y, s);
}
VC
&
BB

11 11
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

Hm
int TinhTong(int x, int y)
{
int s;
s = x + y;
return s;
}
VC
&
BB

12 12
Chng trnh con - Function
V d 3
Tn hm: NhapXuatTong
Cng vic: nhp v xut tng 2 s nguyn
u vo: khng c
u ra: khng c

Hm
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);
}
VC
&
BB

13 13
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
VC
&
BB

14 14
Tm vc
Hm
int a;
int Ham1()
{
int a1;
}

int Ham2()
{
int a2;
{
int a21;
}
}

void main()
{
int a3;
}
VC
&
BB

15 15
Mt s lu
Thng thng ngi ta thng t phn tiu
hm/nguyn mu hm (prototype) trn hm
main v phn nh ngha hm di hm main.
Hm
void XuatTong(int x, int y); // prototype

void main()
{

}

void XuatTong(int x, int y)
{
printf(%d cong %d bang %d\n, x, y, x + y);
}
VC
&
BB

16 16
Cc cch truyn i s
Truyn Gi tr (Call by Value)
Truyn i s cho hm dng gi tr.
C th truyn hng, bin, biu thc nhng
hm ch s nhn gi tr.
c s dng khi khng c nhu cu thay i
gi tr ca tham s sau khi thc hin hm.
Hm
void TruyenGiaTri(int x)
{

x++;
}
VC
&
BB

17 17
Cc cch truyn i s
Truyn a ch (Call by Address)
Truyn i s cho hm dng a ch (con
tr).
Khng c truyn gi tr cho tham s ny.
c s dng khi c nhu cu thay i gi tr
ca tham s sau khi thc hin hm.
Hm
void TruyenDiaChi(int *x)
{

*x++;
}
VC
&
BB

18 18
Cc cch truyn i s
Truyn Tham chiu (Call by Reference) (C++)
Truyn i s cho hm dng a ch (con
tr). c bt u bng & trong khai bo.
Khng c truyn gi tr cho tham s ny.
c s dng khi c nhu cu thay i gi tr
ca tham s sau khi thc hin hm.
Hm
void TruyenThamChieu(int &x)
{

x++;
}
VC
&
BB

19 19
Lu khi truyn i s
Lu
Trong mt hm, cc tham s c th truyn
theo nhiu cch.
Hm
void HonHop(int x, int &y)
{

x++;
y++;
}
VC
&
BB

20 20
Lu khi truyn i s
Lu
S dng tham chiu l mt cch tr v gi
tr cho chng trnh.
Hm
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;
}
VC
&
BB

21 21
Li gi hm
Cch thc hin
Gi tn ca hm ng thi truyn cc i s
(hng, bin, biu thc) cho cc tham s theo
ng th t c khai bo trong hm.
Cc bin hoc tr ny cch nhau bng du ,
Cc i s ny c c t trong cp du
ngoc n ( )

<tn hm> (<i s 1>, , <i s n>);
Hm
VC
&
BB

22 22
Li gi hm
V d
Hm
// 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);
}
VC
&
BB

23 23
Li gi chng trnh con
V d
Hm
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;
}

VC
&
BB

24 24
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
Hm
VC
&
BB

25 25
quy
V d
Hm
int GiaiThua(int n)
{
if (n == 0)
return 1;
else
return GiaiThua(n 1) * n;
}
int GiaiThua(int n)
{
if (n > 0)
return GiaiThua(n 1) * n;
else
return 1;
}
VC
&
BB

26 26
Bi tp
1. Bi tp chng cu lnh iu kin v r nhnh
a. Vit hm i mt k t hoa sang k t thng.
b. Vit th tc gii phng trnh bc nht.
c. Vit th tc gii phng trnh bc hai.
d. Vit hm tr v gi tr nh nht ca 4 s nguyn.
e. Vit th tc hon v hai s nguyn.
f. Vit th tc sp xp 4 s nguyn tng dn.
Hm
VC
&
BB

27 27
Bi tp
2. Bi tp chng cu lnh lp. Hm nhn vo mt
s nguyn dng n v thc hin:
a. Tr v s o ca s .
b. C phi l s i xng (Tr v True/False)
c. C phi l s chnh phng.
d. C phi l s nguyn t.
e. Tng cc ch s l.
f. Tng cc ch s nguyn t.
g. Tng cc ch s chnh phng.
Hm
VC
&
BB

28 28
Bi tp
3. Bi tp chng Cu lnh lp. Hm nhn vo mt
s nguyn dng n v thc hin:
a. S = 1 + 2 + + n
b. S = 1
2
+ 2
2
+ + n
2
c. S = 1 + 1/2 + + 1/n
d. S = 1 * 2 * * n
e. S = 1! + 2! + + n!
4. Hm tr v USCLN ca 2 s nguyn.
5. In ra n phn t ca dy Fibonacy.
Hm

You might also like