Slide 1 Trần Quang © 2016 Kỹ thuật lập trình 1 Chương 08 Hàm Chương 08 HÀM Trần Quang © 2016 Kỹ thuật lập trình 2 Chương 08 Hàm Hàm là gì? Hàm là một đơn vị xử lý, một chuỗi các lệnh có liên quan, được thực hiện cùng nhau để hoàn thành một công việc nào đó Ví dụ trong thư viện ta có Hàm sin(x) Là chuỗi lệnh để tính giá trị sin của một góc x được truyền vào, góc x có đơn vị tính là radian; hàm sin(x) trả về một số thực Hàm sqrt(x) Là chuỗi lệnh để tính căn bậc 2 của đại lượng.
Trang 1Ch ng 08
HÀM
Trang 5Hàm main
int main(){
// Các l nh x l c a hàm main return 0;
}
Giá tr tr v : ki u s ốguyêố int
Tên hàm: “ main ” M t ch ốg trìốh ph i và ch có 01 hàm main duy ốh t
Tr v giá tr cho bêố g i hàỐ Ốaiố
Trang 8#< Ti n x ĺ >
Module
Khai b́ o / đ nh ngh a
H̀ m 1 H̀ m 2 H̀ m 3 #< Ti n x ĺ >
Module
Khai b́ o / đ nh ngh a
H̀ m 1 H̀m 2 H̀ m 3
Trang 10Khai báo hàm
tr expr s đ c g i v n i g i hàm đ s d ng
arglist : là danh sách các tham s hình th c ( hà m
nhau b i d u ph y (,) và đ c mô t theo ć phá p
type parameter_name [ =defaultvalue ]
defaultvalue là giá tr gán m c đ nh cho tham s
n u không cung c p lúc g i hà m
Trang 13Nguyên t c th c thi khi g i hàm
Khi g i hàm thì b th c th i s làm các công vi c :
L u v t: l nh k ti p c a l nh g i hàm
Copy các thông s cho hàm đ c g i
Làm các công vi c h th ng khác
Chuy n đi u khi n th c thi cho hàm đ c g i đ nó
th c thi t l nh đ u tiên trong hàm đ c g i
Khi hàm đ c g i th c hi n l nh return.
Gi i phóng t t c các bi n c c b c a nó
Tr đi u khi n v l nh theo sau l nh g i hàm
Hàm g i gi i phóng các thông s đã truy n và th c thi
l nh k ti p theo l nh g i hàm
Trang 14s d ốg)
Cài đ t các ỏ ốh cho hàm
Trang 15T ch c mã ngu n
a ph n mô t vào m t t p tin riêng
G i là t p tin mô t (header): *.h
Có th s d ng l i nhi u t p tin khác trong d án
S d ng ch th #if !defined(.) endif đ tránh l i “đ nh ngh a l p l i” ( redefinition )
a ph n hi n th c vào m t t p tin riêng
G i là t p tin hi n th c (implementation): *.c; *.cpp
Có th s d ng l i nhi u t p tin khác trong d án
a ph n hi n th c vào m t t p tin riêng
Khai báo có s d ng đ n các hàm *.h nói trên
G i hàm
Trang 16T ch c mã ngu n
T p tiố ch a hàỐ main s d ốg các hàm troốg th vi ố t t o đ t
T p tiố ch a ph ố cài đ t hàm
T p tiố ch a ph ố ỐẾ t cho hàỐ, ki u
d ỏi u, v.v các ph ố ỐẾ t ốói chuốg
Trang 17đo n mã ngu n n m trong ph n t ng ng kh i #if
NG C L I thì không c n đ nh ngh a tên m i và không c n
biên d ch đo n mã ngu n t ng ng kh i if
Ph ố ỐẾ t cho hàm add
Trang 21 Truy n đ a ch b ng bi n con tr (ki u*).
Tham s hình th c (ki u* tên)
Tham s th c (&tên)
Truy n đ a ch b ng bi n tham kh o (ki u&)
Tham s hình th c (ki u& tên)
Tham s th c (tên)
Trang 26swap (&x, &y);
printf("Sau khi goi ham swap(x,y)\n");
printf("x = %3d; y = %3d\n", x, y);
// …
}
Giá tr x và y hoáố đ i ốhau
Trang 27Hàm và m ng, con tr
M ng và con tr đ u là nh ng ô nh ch a đ a ch
S d ng hàm đ x ĺ m ng, c n truy n vào hàm
M ng giá tr
Trong C đ truy n m ng vào hàm
truy n đ a ch c a ph n t đ u tiên vào hàm
truy n con tr đ n ph n t đ u tiên vào hàm
C luôn luôn truy n m ng vào hàm b ng ph ng pháp truy n b ng đ a ch
S l ng ph n t c a m ng
Trang 28Hàm và m ng, con tr
Cú pháp khai báo tham s
void print_array1( int arr[MAX_SIZE], int size){
Trang 30 => Làm t ng kích th c t p tin th c thi (*.EXE)
n u g i hàm inline có đo n mã th c thi l n và
nhi u l n
=> ch nên s d ng hàm inline khi c n t i u th i
gian th c thi