You are on page 1of 22

CHNG VI:

CHNG TRNH CON


- FUNCTION

1 10/4/2016
t Vn

V d 1: Vit chng trnh nhp vo mng


cc s nguyn v in ra mn hnh. Thc
hin SX mng tng dn v gim dn
V d 2: vit chng trnh nhp vo 3 s a,
b, c. Tm phn t ln nht v nh nht
trong 3 s

2 10/4/2016 Ths. Trnh Th Xun


I. Gii thiu

Hm(Function): L mt on chng trnh c


lp thc hin trn vn mt cng vic ri tr v
mt gi tr cho chng trnh gi n.

c im ca hm:
L mt n v c lp ca chng trnh.
Khng cho php xy dng mt hm bn trong
mt hm khc.

3 10/4/2016 Ths. Trnh Th Xun


* V d:
#include
//Tm phn t ln nht ca 2 s m1 = Max2S( a, b);
int Max2S( int x, int y) m = Max2S( m1, c);
{
int m; printf(\n Gia tri lon nhat la: %d, m);
if (x>y) m = x;
else m = y; getch();
return m;
} }

int main( )
{
int a, b, c, m1, m;

printf(Nhap so a:); scanf(%d, &a);


printf(Nhap so b:); scanf(%d, &b);
printf(Nhap so c:); scanf(%d, &c);

4 10/4/2016 Ths. Trnh Th Xun


II. Quy tc xy dng hm

type <name_func> ( [<parameter>] )


{
[khai bo cc bin cc b]
<Statement;>
[return expression; ]
}

Ch : Cc hm phi khai bo v nh ngha


trc khi s dng

5 10/4/2016 Ths. Trnh Th Xun


*Trong :

<type>:
L kiu d liu ca kt qu tr v ca hm.
L nhng kiu c sn ca C (int, float, char, )
Nu hm khng c kt qu tr v th <kiu> l void.
<name_func>:
l tn phn bit gia cc hm.
Tn hm c t theo qui tt t tn chung ca bin, hm, mng,
Cc hm phi khc tn nhau
[<parameter>]:
l gi tr a vo thc hin x l hm hoc kt qu cn thu c ca hm
Nu hm khng c i no th ta cng dng void khai bo i.
Cn nu hm c nhiu i th nhng i phi c cch nhau bi du phy (,).
[khai bo cc bin cc b]:
l cc bin ch dng ring trong phm vi lm vic ca hm
<statements>:
l Nhng lnh m s thc hin nhim v chnh ca hm.
[return <expression>]:
l gi tr cn tr li ca hm
nu kiu tr li ca hm l void th khng c phn ny

6 10/4/2016 Ths. Trnh Th Xun


Khi xy dng hm cn xc nh:
Hm c tr li gi tr khng?
Tham s truyn vo l g?
Thao tc thc hin tng ng ca hm?

7 10/4/2016 Ths. Trnh Th Xun


III. Cch s dng hm

Hm c s dng thng qua li gi ti n.


Cch vit mt li gi hm nh sau:
name_func ( [danh sch cc tham s thc] );
tn-bin = name_func ( [ danh sch cc tham s thc] );
Cn lu :
S tham s thc phi bng s i.
Kiu ca tham s thc phi ph hp vi kiu ca i tng ng.
Li gi ny c th l:
mt cu lnh c lp
hoc t trong cc biu thc, t trong biu thc th hm phi c gi tr
tr v thc hin tnh ton biu thc

8 10/4/2016 Ths. Trnh Th Xun


Qu trnh s din ra theo trnh t 4 bc nh sau:
Cp pht b nh cho cc i v cc bin cc b.
Gn gi tr ca cc tham s thc cho cc i tng ng.
Thc hin cc cu lnh trong thn hm.
Khi gp cu lnh return hoc } cui cng ca thn hm th my s
xo cc i, cc bin cc b v thot khi hm tr v chng
trnh gi n.

9 10/4/2016 Ths. Trnh Th Xun


V d 1:
Vithm tm min ca 2 s thc
p dng nhp vo 3 s thc v in ra mn hnh
phn t nh nht ca 3 s
V d 2:
Vit CTC hon i gi tr ca 2 s nguyn
p dng nhp vo mt mng cc s nguyn.
Sau thc hin SX mng tng dn v in ra
kt qu

10 10/4/2016 Ths. Trnh Th Xun


IV. Cch truyn tham s

truyn theo gi tr
truyn theo a ch

11 10/4/2016 Ths. Trnh Th Xun


1. Truyn theo gi tr - tham tr

Nu i ca hm c truyn theo gi tr th
khng lm nh hng g n nhng gi tr ca
tham s thc c truyn vo t chng trnh
chnh.
Khi tham s thc truyn vo cho cc i tng
ng th cc i ny s c cp pht b nh
ring v chng s b xo trc khi hm kt thc.
Hm ch lm vic trn cc i, tc l ch lm vic
trn cc bn sao ny. Cc i c th b bin i
trong thn hm, nhng cc tham s thc
khng h b thay i ch ly gi tr lm
vic
12 10/4/2016 Ths. Trnh Th Xun
* V d:

#include<stdio.h>
#include<conio.h>
void swap(int x, int y)
{
int temp;
temp = x; x = y; y = temp;
return;
}

void main()
{
int a,b;
printf("Nhap a: "); scanf("%d",&a);
printf("Nhap b: "); scanf("%d",&b);
swap(a,b);
printf("Gia tri a: %d",a);
printf("\nGia tri b: %d",b);
getch();
}
13 10/4/2016 Ths. Trnh Th Xun
2. Truyn theo a ch - tham bin

Khi i ca hm c truyn theo a ch th


nhng thay i ca i bn trong hm s lm
thay i gi tr ca tham s thc.
i tng ng Tham s thc

Bin kiu int (float, double,) Gi tr kiu int (float, double,)


VD: void swap(int &a, int &b) VD: swap( x, y );
Con tr kiu int (float, double,) a ch kiu int (float, double,)
VD: void swap( int *a, int *b) VD: swap( &x , &y );
Con tr cng kiu mng hoc khai bo mng Tn mng mt chiu
khng c ch s phn t VD: nhapmang( b, n);
VD: void nhapmang( int a[ ], int &n);
Mng cc con tr hoc con tr ti con tr Tn mng hai chiu
VD: void nhapmang( int a[ ][10],int &h, int &c); VD: nhapmang( b, h, c);

14 10/4/2016 Ths. Trnh Th Xun


V. Dng mng mt chiu lm i s hm

Khi truyn tham s di dng mng cho


hm th mng c truyn di dng tham
bin gi tr ca phn t trong mng s b
nh hng nu c s thay i
Nguyn tc: khai bo hm nhng khng
xc nh chnh xc s phn t mng

C php:
<type> name_func ( type a[ ], int n, )
19 10/4/2016 Ths. Trnh Th Xun
Bi tp p dng

Vit cc on chng trnh con sau:


Nhp vo mt mng cc s nguyn
In li mng cc s nguyn
Tnh tng cc phn t ca mng
In cc s chn ca mng
p dng cc on chng trnh con trn
thc hin nhp vo mt mng cc s v
in ra cc kt qu tng ng

20 10/4/2016 Ths. Trnh Th Xun


S thc hin
Begin

Nhp mng s nguyn

In mng s nguyn

Tnh tng cc phn t mng

In cc phn t chn mng

End

21 10/4/2016 Ths. Trnh Th Xun


VI. Dng mng hai chiu lm i s hm

C php:
<type> name_f ( type a[ ][max], int h, int c, )
max: l s ct ti a c th lm vic ca
mng hai chiu
V d: c mng 2 chiu a[4][3]
tham s truyn: a[][3]
lm vic vi phn t a[i][j]
ch s hng * s ct + ch s ct
i * 3 + j

22 10/4/2016 Ths. Trnh Th Xun


Bi tp p dng

Vit cc on chng trnh con sau:


Nhp vo mt mng 2 chiu cc s thc
In li mng 2 chiu cc s thc
m s phn t dng ca mng
Tnh tng cc phn t trn mt hng no
p dng cc on chng trnh con trn thc
hin nhp vo mt mng hai chiu cc s
thc v in ra mn hnh cc kt qu tng ng

23 10/4/2016 Ths. Trnh Th Xun


S thc hin
Begin

Nhp mng 2 chiu s thc

In mng 2 chiu s thc

m s phn t dng mng 2 chiu

Tnh tng cc phn t trn mt hng

End

24 10/4/2016 Ths. Trnh Th Xun


Bi tp v nh

Bi 1: Vit cc on chng trnh con sau:


nhp vo mt mng cc s thc
in li mng cc s thc
m s phn t dng
Tnh gi tr phn t nh nht

p dng cc on chng trnh con trn thc hin nhp vo mt


mng cc s v in ra cc kt qu tng ng
Bi 1: Vit cc on chng trnh con sau:
nhp vo mt mng 2 chiu cc s nguyn
in li mng 2 chiu cc s nguyn
Tnh tng cc phn t ca mng 2 chiu
Tnh tng cc phn t trn mt hng no

p dng cc on chng trnh con trn thc hin nhp vo mt


mng 2 chiu cc s v in ra cc kt qu tng ng

25 10/4/2016 Ths. Trnh Th Xun


Bi tp v nh

Bi 1: Vit chng trnh nhp vo mt chui.


m s t ca chui
Bi 2:
VitCTC kim tra mt s c phi l s nguyn t hay
khng?
p dng nhp vo mt mng cc s nguyn bt k. In
ra mn hnh cc s nguyn t c trong mng
Bi 3:
VitCTC tm UCLN ca 2 s
p dng nhp vo 4 s bt k v in ra UCLN ca 4 s

26 10/4/2016 Ths. Trnh Th Xun

You might also like