You are on page 1of 28

Trng i hc Khoa hc T nhin

Khoa Cng ngh thng tin


B mn Cng ngh phn mm

NHP MN LP TRNH

ThS. ng Bnh Phng


dbphuong@fit.hcmus.edu.vn

HM

VC

&
BB

Ni dung

Khi nim v c php

Tm vc

Tham s v li gi hm

quy

Hm

VC

&
BB

t vn

Vit chng trnh tnh S = a! + b! + c! vi a, b, c


l 3 s nguyn dng nhp t bn phm.
Chng trnh
chnh

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

3 on lnh nhp a, b, c > 0


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

VC

&
BB

t vn

3 on lnh tnh s1 = a!, s2 = b!, s3 = c!


// 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;
Hm

VC

&
BB

t vn

Gii php => Vit 1 ln v s dng nhiu ln


on lnh nhp tng qut, vi n = a, b, c
do {
printf(Nhap mot so nguyen duong: );
scanf(%d, &n);
} while (n <= 0);

on lnh tnh giai tha tng qut, n = a, b, c


// Tnh s = n! = 1 * 2 * * n
s = 1;
for (i = 2; i <= n ; i++)
s = s * i;
Hm

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

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).
u vo 1
u vo 2
u vo n

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

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

Thng thng ngi ta thng t phn tiu


hm/nguyn mu hm (prototype) trn hm
main v phn nh ngha hm di hm main.
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);
}
Hm

15

VC

&
BB

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.
void TruyenGiaTri(int x)
{

x++;
}
Hm

16

VC

&
BB

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.
void TruyenDiaChi(int *x)
{

*x++;
}
Hm

17

VC

&
BB

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.
void TruyenThamChieu(int &x)
{

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

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

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

Li gi chng trnh con

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

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

26

VC

&
BB

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

27

VC

&
BB

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 = 12 + 22 + + n2
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

28

You might also like