Bài 5: Hàm và thư viện<br />
<br />
1<br />
<br />
EE3490: Kỹ thuật lập trình – HK1 2017/2018<br />
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội<br />
<br />
Hàm<br />
(functions)<br />
<br />
2<br />
<br />
EE3490: Kỹ thuật lập trình – HK1 2017/2018<br />
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội<br />
<br />
Khái niệm<br />
Hàm là một khối các câu lệnh thực hiện một nhiệm vụ<br />
nhất định, và có thể được gọi khi cần<br />
Mỗi hàm có một tên (các hàm trong C không được trùng<br />
tên nhau), một số tham số, và một giá trị trả về<br />
Sử dụng hàm giúp:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Chia nhỏ chương trình thành nhiều bài toán con<br />
Sử dụng lại trong một hoặc nhiều chương trình<br />
<br />
Cách khai báo:<br />
<br />
<br />
<br />
<br />
<br />
() {<br />
Khai báo các biến dùng cho hàm<br />
Các câu lệnh của hàm<br />
}<br />
<br />
Câu lệnh return dùng để thoát khỏi hàm và trả kết quả<br />
<br />
<br />
3<br />
<br />
EE3490: Kỹ thuật lập trình – HK1 2017/2018<br />
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội<br />
<br />
Ví dụ<br />
Hàm tính tổng hai số<br />
<br />
<br />
<br />
<br />
<br />
double sum(double x, double y) {<br />
double z = x+y;<br />
return z;<br />
}<br />
int main() {<br />
double x = 10, y = sum(2,3);<br />
printf("x + y = %g", sum(x,y));<br />
return 0;<br />
}<br />
<br />
Các tham số và các biến nội bộ chỉ giới hạn trong phạm<br />
vi của hàm<br />
<br />
<br />
<br />
4<br />
<br />
EE3490: Kỹ thuật lập trình – HK1 2017/2018<br />
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội<br />
<br />
Phạm vi của biến, hằng<br />
Biến toàn cục: được khai báo ở ngoài các hàm, có phạm vi trong<br />
toàn chương trình và tồn tại trong suốt quá trình chạy<br />
Biến địa phương: được khai báo ở trong một hàm hoặc một khối<br />
lệnh, chỉ có phạm vi trong hàm/khối đó, và bị huỷ sau khi kết thúc<br />
chạy hàm/khối đó<br />
<br />
<br />
<br />
<br />
<br />
<br />
Khai báo biến địa phương sẽ “che” mất biến cùng tên khác có phạm vi rộng hơn<br />
<br />
<br />
<br />
Trong C, biến địa phương phải được khai báo ở đầu hàm hoặc khối lệnh<br />
<br />
Ví dụ biến địa phương của hàm:<br />
<br />
<br />
<br />
<br />
<br />
5<br />
<br />
int x = 10, y = 20;<br />
int sum() {<br />
int z = x+y;<br />
return z;<br />
}<br />
int main() {<br />
int x = 1, y = 2;<br />
int z = sum();<br />
return 0;<br />
}<br />
<br />
/* phải khai báo trước hàm sum() */<br />
<br />
/* trả về: 10+20 */<br />
<br />
EE3490: Kỹ thuật lập trình – HK1 2017/2018<br />
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội<br />
<br />