V ậ y ậ
Bài 7: Hàm và chương trìnhBài 7: Hàm và chương trình
Bài 7: Hàm và chương trình
1.
1. Khái niệm Khái niệm Chương trình
Chương trình:: Một chương trình C bao gồm một hoặc Một chương trình C bao gồm một hoặc nhiều hàm. Hàm main() là thành phần bắt buộc của
nhiều hàm. Hàm main() là thành phần bắt buộc của
chương trình. Chương trình bắt
chương trình. Chương trình bắt đầu thực hiện từ câu đầu thực hiện từ câu
lệnh đầu ti
lệnh đầu tiên của hàm main( ) cho ên của hàm main( ) cho đến khi gặp dấu } đến khi gặp dấu }
cuối c
cuối cùng của hàm này.ùng của hàm này.
Hàm
Hàm: Là một : Là một đoạn chương trđoạn chương trình ình độc lập thực hiện trọn độc lập thực hiện trọn
vẹn một công việc rồi trả về một giá trị cho chương
vẹn một công việc rồi trả về một giá trị cho chương
tr
trình đã gọi nó.ình đã gọi nó.
Đặc điểm của hàm:
Đặc điểm của hàm:
Là một Là một đơn vị độc lập của chương trđơn vị độc lập của chương trình. ình.
2. Quy tắc xây dựng hàm: Một hàm gồm có các thành phần
2. Quy tắc xây dựng hàm: Một hàm gồm có các thành phần
sau
sau
- Nguyên mẫu của hàm: Nguyên mẫu của hàm: Bao gồmBao gồm
<kiểu dl của hàm> <
<kiểu dl của hàm> <tên hàmtên hàm(ds các tham số)>;(ds các tham số)>;
Có thể có hoặc không khai báo nguyên mẫu của hàm,
Có thể có hoặc không khai báo nguyên mẫu của hàm,
khi không khai báo nguyên mẫu thì bộ biên dịch sẽ
khi không khai báo nguyên mẫu thì bộ biên dịch sẽ
kiểm tra việc truyền tham số, giá trị trả về có phù hợp
kiểm tra việc truyền tham số, giá trị trả về có phù hợp
hay không rồi mới cho thực hiện hàm.
hay không rồi mới cho thực hiện hàm.
Tất cả nguyên mẫu của các hàm có trong chương trình
Tất cả nguyên mẫu của các hàm có trong chương trình
nên
Ki u giá tr c a hàmKi u giá tr c a hàmểể ị ủị ủ
Giá tr tr v c a hàm ị ả ề ủ
Giá tr tr v c a hàm ị ả ề ủ đđượược xác đ nh d a vc xác đ nh d a vịị ựự ào m c ào m c ụụ đích đích c a hủ
c a hủ àmàm. N u các h. N u các hếế àm không tr v giá tr ta ph i khai àm không tr v giá tr ta ph i khai ả ềả ề ịị ảả báo ki u void.ể
báo ki u void.ể
Tên hàmTên hàm
Ð t theo qui ặ
Ð t theo qui ặ đ nh đ i v i danh đ nhđ nh đ i v i danh đ nhịị ố ớố ớ ịị . Tên hàm trong . Tên hàm trong nguyên m u và khi khai báo ph i gi ng nhau.ẫ ả ố
nguyên m u và khi khai báo ph i gi ng nhau.ẫ ả ố
Tham s c a hàmTham s c a hàmố ủố ủ
Khi vi t m t hàm ta ph i xác ế ộ ả
Khi vi t m t hàm ta ph i xác ế ộ ả đ nh xem hđ nh xem hịị àm có bao nhiêu àm có bao nhiêu tham s ? ố
tham s ? ố
C u trúc c a m t hàmấ ủ ộ C u trúc c a m t hàmấ ủ ộ
<Ki u tr v ><Tên hàm>(<ds tham s hình th c hay đ i ể ả ề ố ứ ố <Ki u tr v ><Tên hàm>(<ds tham s hình th c hay đ i ể ả ề ố ứ ố
s >)ố s >)ố {
{ <Khai báo bi n c c b >;<Khai báo bi n c c b >;ếế ụụ ộộ
<Các câu l nh trong thân hàm>;ệ <Các câu l nh trong thân hàm>;ệ
[return<bt tr v giá tr hàm>];ả ề ị [return<bt tr v giá tr hàm>];ả ề ị }; }; Chú ý: Chú ý:
- Đ i v i các hàm không có ki u tr v ta có hàm ki u voidĐ i v i các hàm không có ki u tr v ta có hàm ki u voidố ớố ớ ểể ả ềả ề ểể
- Hàm không có đ i thì dùng ki u void đ khai báo đ i. VDHàm không có đ i thì dùng ki u void đ khai báo đ i. VDốố ểể ểể ốố void bell(void)
void bell(void) {
Cách sử dụng hàmCách sử dụng hàm: Hàm được sử dụng thông qua lời gọi : Hàm được sử dụng thông qua lời gọi
hàm.
hàm.
<tên hàm> ([ds tham số thực])
<tên hàm> ([ds tham số thực])
- Tham số thực phải bằng tham số hình thứcTham số thực phải bằng tham số hình thức
- Kiểu của tham số thực phải phù hợp với kiểu của tham Kiểu của tham số thực phải phù hợp với kiểu của tham số hình thức
số hình thức
Hoạt động của hàm khi có lời gọi hàmHoạt động của hàm khi có lời gọi hàm
Cấp phát bộ nhớ cho tham số hình thức và biến cục bộCấp phát bộ nhớ cho tham số hình thức và biến cục bộ
Gán giá trị của tham số thực cho tham số hình thứcGán giá trị của tham số thực cho tham số hình thức
Thực hiện các lệnh trong thân hàmThực hiện các lệnh trong thân hàm
Khi gặp câu lệnh return hoặc dấu hiệu kết thúc hàm thì Khi gặp câu lệnh return hoặc dấu hiệu kết thúc hàm thì bộ nhớ sẽ xoá các tham số hình thức và biến cục bộ sau
bộ nhớ sẽ xoá các tham số hình thức và biến cục bộ sau
đó thoát khỏi hàm quay về chương trình gọi hàm
3. Các tham s trong hàmố 3. Các tham s trong hàmố
3.1
3.1 Phân lo i tham s theo cách s d ng Phân lo i tham s theo cách s d ng ạạ ốố ử ụử ụ
o Tham s hình th c: Các tham s mà ta ghi trong nguyên Tham s hình th c: Các tham s mà ta ghi trong nguyên ốố ứứ ốố m u hay ghi lúc khai báo hàm g i là tham s hình th c.ẫ ọ ố ứ m u hay ghi lúc khai báo hàm g i là tham s hình th c.ẫ ọ ố ứ
o Tham s th c:Các giá tr , bi n mà ta ghi sau tên hàm khi Tham s th c:Các giá tr , bi n mà ta ghi sau tên hàm khi ố ựố ự ịị ếế g i hàm ọ
g i hàm ọ đó đ th c hi n g i lđó đ th c hi n g i lể ựể ự ệệ ọọ à tham s th c. Trong C, các à tham s th c. Trong C, các ố ựố ự tham s th c l i chia ra làm hai lo i:ố ự ạ ạ
tham s th c l i chia ra làm hai lo i:ố ự ạ ạ
Tham chi u: Là các tham s th c mà ta truy n cho Hàm Tham chi u: Là các tham s th c mà ta truy n cho Hàm ếế ố ựố ự ềề dướ ại d ng con tr (d ng ỏ ạ
dướ ại d ng con tr (d ng ỏ ạ đ a ch ). Tham chi u m i ghi đ a ch ). Tham chi u m i ghi ịị ỉỉ ếế ớớ nh n l i đậ ạ ược nh ng k t qu v a tính toán trong Hữ ế ả ừ
nh n l i đậ ạ ược nh ng k t qu v a tính toán trong Hữ ế ả ừ àm àm khi Hàm k t thúc.ế
khi Hàm k t thúc.ế
Tham tr : Là các tham s th c mà ta truy n cho Hàm dTham tr : Là các tham s th c mà ta truy n cho Hàm dịị ố ựố ự ềề ướưới i d ng bi n. Tham tr không b o l u l i nh ng k t qu ạ ế ị ả ư ạ ữ ế ả
3.2
3.2 Phân lo i theo công d ng Phân lo i theo công d ng ạạ ụụ
Tham s c a m t hàm có hai công d ng:Tham s c a m t hàm có hai công d ng:ố ủố ủ ộộ ụụ
Cung c p các giá tr cho hàm khi ta g i nó th c hi n .Cung c p các giá tr cho hàm khi ta g i nó th c hi n .ấấ ịị ọọ ựự ệệ L u các k t qu tính toán L u các k t qu tính toán ưư ếế ảả đđượược trong quá trc trong quá trình hàm ình hàm
ho t đ ngạ ộ ho t đ ngạ ộ
TTươương ng v i công d ng ta có các lo i tham s :ng ng v i công d ng ta có các lo i tham s :ứứ ớớ ụụ ạạ ốố Tham s vào: Cung c p giá tr cho hàm.Tham s vào: Cung c p giá tr cho hàm.ốố ấấ ịị
Tham s ra: L u k t qu tính toán Tham s ra: L u k t qu tính toán ốố ưư ếế ảả đđượược trong hc trong hàm. àm. Tham s v a vào, v a ra: v a cung c p giá tr cho Tham s v a vào, v a ra: v a cung c p giá tr cho ố ừố ừ ừừ ừừ ấấ ịị
hàm, v a l u k t qu tính toán ừ ư ế ả
4.
4. Hàm có đ i con trHàm có đ i con trốố ỏỏ Đ i s c a hố ố ủ
Đ i s c a hố ố ủ àm là con tr ki u àm là con tr ki u ỏ ểỏ ể int (float,double,. )int (float,double,. ) thì thì tham s th c tố ự ương ng ph i là ứ ả
tham s th c tố ự ương ng ph i là ứ ả đ a ch c a bi n ki u đ a ch c a bi n ki u ịị ỉ ủỉ ủ ếế ểể
int (float,double,.)
int (float,double,.). Khi . Khi đó đ a ch c a bi n đđó đ a ch c a bi n địị ỉ ủỉ ủ ếế ượược truy n c truy n ềề cho đ i con tr tố ỏ ương ng.ứ
cho đ i con tr tố ỏ ương ng.ứ
Khi mu n b o l u l i k t qu tính toán đố ả ư ạ ế ả ượ ủc c a các Khi mu n b o l u l i k t qu tính toán đố ả ư ạ ế ả ượ ủc c a các
đ i s trong hàm đ s d ng cho chố ố ể ử ụ ương trình g i hàm ọ đ i s trong hàm đ s d ng cho chố ố ể ử ụ ương trình g i hàm ọ
có đ i s thì chúng ta ph i khai báo đ i s c a hàm là ố ố ả ố ố ủ có đ i s thì chúng ta ph i khai báo đ i s c a hàm là ố ố ả ố ố ủ
tham chi u (con tr hay d ng đ a ch ).ế ỏ ạ ị ỉ tham chi u (con tr hay d ng đ a ch ).ế ỏ ạ ị ỉ
VD: VD: