1
Phm Đình Sc
sacvn@yahoo.com
Trường Cao đẳng Kthut Công ngh Đồng Nai
Khoa Công nghthông tin
NHP MÔN LP TRÌNH
HÀM (FUNCTI ON)
VC
VC &
&
BB
BB
22
Ni dung
NMLT - Hàm (Function)
Khái nim và cú pháp
1
Tm vc
2
Tham s li gi hàm
3
Đệ quy
4
VC
VC &
&
BB
BB
33
Đặt vn đề
Viết chương trình tính S = a! + b! + c! vi a, b, c
3 s nguyên dương nhp tbàn phím.
NMLT - Hàm (Function)
Chương trình
chính
Chương trình
chính
Nhp
a, b, c > 0
Nhp
a, b, c > 0
Tính
S = a! + b! + c!
Tính
S = a! + b! + c!
Xut
kết quS
Xut
kết quS
Nhp
a > 0
Nhp
a > 0
Nhp
b > 0
Nhp
b > 0
Nhp
c > 0
Nhp
c > 0
Tính
s1=a!
Tính
s1=a!
Tính
s2=b!
Tính
s2=b!
Tính
s3=c!
Tính
s3=c!
VC
VC &
&
BB
BB
44
Đặt vn đề
3 đon lnh nhp a, b, c > 0
NMLT - Hàm (Function)
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
VC &
&
BB
BB
55
Đặt vn đề
3 đon lnh tính s1 = a!, s2 = b!, s3 = c!
NMLT - Hàm (Function)
{ Tính s1 = a! = 1 * 2 * … * a }
s1 = 1;
for (i = 2; i <= a ; i++)
s1 = s1 * i;
{ Tính s2 = b! = 1 * 2 * … * b }
s2 = 1;
for (i = 2; i <= b ; i++)
s2 = s2 * i;
{ Tính s3 = c! = 1 * 2 * … * c }
s3 = 1;
for (i = 2; i <= c ; i++)
s3 = s3 * i;
VC
VC &
&
BB
BB
66
Đặt vn đề
Gii pháp => Viết 1 ln và sdng nhiu ln
Đon lnh nhp tng quát, vi n = a, b, c
Đon lnh tính giai tha tng quát, n = a, b, c
NMLT - Hàm (Function)
do {
printf(“Nhap mot so nguyen duong: ”);
scanf(“%d”, &n);
} while (n<= 0);
{ Tính s = n! = 1 * 2 * … * n }
s= 1;
for (i = 2; i <= n ; i++)
s= s* i;
VC
VC &
&
BB
BB
77
Hàm
Khái nim
Mt đon chương trình có tên, đầu vào và
đầu ra.
chc năng gii quyết mt svn đề
chuyên bit cho chương trình chính.
Được gi nhiu ln vi các tham skhác
nhau.
Được sdng khi có nhu cu:
•Tái sdng.
•Sa li và ci tiến.
NMLT - Hàm (Function)
VC
VC &
&
BB
BB
88
Hàm
pháp
Trong đó
•<kiu trv> : kiu bt kca C (char, int, long,
float,…). Nếu không trvthì void.
<tên hàm>: theo quy tc đặt tên định danh.
<danh sách tham s> : tham shình thc đầu vào
ging khai báo biến, cách nhau bng du ,
•<giátr> : trvcho hàm qua lnh return.
NMLT - Hàm (Function)
<kiu trv> <tên hàm>([danh sách tham s])
{
<các câu lnh>
[return <giá tr>;]
}
VC
VC &
&
BB
BB
99
Các bước viết hàm
Cn xác định các thông tin sau đây:
Tên hàm.
Hàm sthc hin công vic gì.
Các đầu vào (nếu có).
Đầu ra (nếu có).
NMLT - Hàm (Function)
Tên hàm
Tên hàm
Đầu vào 1
Đầu vào 2
Đầu vào n
Đầu ra (nếu có)
Các công vic
sthc hin
VC
VC &
&
BB
BB
1010
Hàm
d1
Tên hàm: XuatTong
Công vic: tính và xut tng 2 snguyên
Đầu vào: hai snguyên x và y
Đầu ra: không có
NMLT - Hàm (Function)
void XuatTong(int x, int y)
{
int s;
s = x + y;
printf(“%d cong %d bang %d”, x, y, s);
}