Ch ng 6: Hàm
6.1 Khái ni m
− Hàm chia các nhi m v tính toán l n thành các mô-đun nh h n
− u đi m c a vi c s d ng hàm:
• D dàng phát tri n ng d ng h n
• Cho phép s d ng l i các môđun đã cài đ t trong các ch ng trình khác
• Tránh đ c vi c l p l i các đo n mã trong ch ng trình
6.2 C u trúc hàm
<Ki u> TênHàm (danh_sách_tham_s ) {
Các khai báo & câu l nh
}
− N u hàm không ph i tr v giá tr nào, thì dùng ki u void N u không vi t rõ ki u tr
v là gì, ki u tr v m c đ nh là int
− n cu i c a ph n thân hàm, c n ph i tr l i quy n đi u khi n cho n i mà t i đó hàm này đ c g i
• N u hàm tr l i m t giá tr , c n dùng l nh return bth c; đ tr l i giá tr
c a bi u th c cho hàm g i nó
• N u hàm không tr l i giá tr nào, c n ph i có l nh return;
6.3 Tham s hàm
− C n c vào vai trò, tham s hàm đ c chia ra làm hai lo i:
• Tham s hình th c: là tham s đóng vai trò “đ i di n” cho các tham s th c trong
l i g i hàm
• Tham s th c: là tham s th c s đ c truy n t i hàm
− Ví d : trong đ nh ngh a hàm int max(int a, int b, int c) thì a, b, c
là ba tham s hình th c, còn trong l i g i hàm: max(2, 4, 6); thì 2, 4, 6 là các tham s th c s
− C n c vào ph m vi, tham s hàm đ c chia thành:
• Tham s c c b : là tham s có ph m vi trong hàm ch a nó
• Tham s toàn c c: là tham s có ph m vi trong toàn b ch ng trình
Trang 26.4 Truy n tham s cho hàm
− Trong C và C++, t t c các tham s đ u đ c truy n theo tr
− Chú ý: Tham s hình th c c a hàm c ng có th là con tr Khi này tham s th c
t ng ng ph i là m t đ a ch bi n ho c là tên c a bi n m ng
6.5 Khai báo hàm
− khai báo hàm, ng i ta ph i s d ng khai báo nguyên m u (còn đ c g i là hàm
nguyên m u) Các thông tin ph i khai báo là:
<ki u> TênHàm (danh sách ki u c a tham s );
− Ví d : int power(int, int);
6.6 Hàm nguyên m u (prototype)
− Hàm nguyên m u là m t d ng khai báo hàm
− Thông báo cho trình biên d ch bi t ki u d li u hàm tr l i, ki u, s l ng và th t
c a các tham s đ c truy n cho hàm
− Không nh t thi t ph i có hàm nguyên m u Trình biên d ch C s t t o ra hàm nguyên
m u ng m đ nh n u l p trình viên không khai báo hàm nguyên m u
− u đi m: d báo đ c t tr c v các l i có th x y ra
− c tính quan tr ng c a hàm nguyên m u là kh n ng chuy n ki u tham s Vi c
chuy n ki u ph i tuân theo quy t c: Chuy n t ki u d li u nh h n sang ki u d li u
l n h n Sau đây là b ng s p x p các ki u d li u theo th t gi m d n v kích th c:
long double double float unsigned long int long int unsigned int int short char
6.7 T p tiêu đ
− M i m t th vi n chu n c a C có m t t p tiêu đ
− M t t p tiêu đ ch a:
• Ph n khai báo c a t t c các hàm trong th vi n
Trang 3• Các đ nh ngh a v ki u d li u và h ng dùng trong hàm đó
− Các t p tiêu đ này có ph n m r ng là h
− L p trình viên có th t t o các t p tiêu đ v i ph n m r ng c a t p là h
− khai báo t p tiêu đ c n dùng trong ch ng trình, ch th #include đ c s d ng
6.8 M t s hàm trong th vi n chu n
Ph n này gi i thi u m t s hàm hay đ c s d ng trong th vi n chu n Danh sách đ y
đ các hàm đ c đ a vào ph l c
Hàm thao tác v i ký t : Hàm nh n tham s là m t giá tr ki u int và tr v giá tr ki u
int Hàm tr v m t s khác không ( ÚNG) n u tham s c th a mãn đi u ki n đ c đ t
ra, hàm tr v giá tr không n u c không th a mãn đi u ki n s d ng các hàm này,
chúng ta c n khai báo th vi n ctype.h
iscntrl(c) Ki m tra xem c có ph i là ký t đi u khi n không
tr ng, space)
space)
tr ng, ký t ho c s )
formfeed, newline, carriage return, tab, vertical tab)
isupper(c) Ki m tra xem c có ph i là ký t vi t hoa không
Trang 4Hàm toán h c: s d ng các hàm này, chúng ta c n khai báo th vi n math.h
asin(x) arcsin(x) trong kho ng [-pi/2,pi/2], x trong kho ng [-1,1]
acos(x) arccos(x) trong kho ng [0,pi], x trong kho ng [-1,1]
atan(x) arctg(x) trong kho ng [-pi/2,pi/2]
log(x) ln(x), x>0
log10(x) log10(x), x>0
y
L i s x y ra n u x=0 và y<=0, ho c n u x<0 và y không ph i là s
nguyên
sqrt(x) c n b c hai c a x, v i x>=0
ceil(x) S nguyên nh nh t không nh h n x, tr v giá tr ki u double
floor(x) S nguyên l n nh t không v t quá x, tr v giá tr ki u double
fabs(x) Giá tr tuy t đ i c a |x|