Click here to load reader
Upload
xcodeesvn
View
294
Download
0
Embed Size (px)
Citation preview
1
Khoa Công Nghệ Thông Tin & Truyền Thông
Đại Học Cần Thơ
HÀMHÀMCHƯƠNG 4:CHƯƠNG 4:
(FUNCTION)(FUNCTION)
2
HàmHàm
Mục tiêuMô tả cách khai báo, định nghĩa, và gọi hàm
Nội dungKhai báo hàm, định nghĩa hàmTham số, đối số, phạm viBiến tự động, biến thanh ghi, biến nội tuyếnĐối số mặc định, đối số hàng lệnh
Chương 4
3
Hàm Là Gì?Hàm Là Gì? Một phương thức để đóng gói quá trình
tính toán dễ dàng sử dụng Định nghĩa hàm
Khai báo hàm Tên hàm Các tham số của hàm Kiểu trả về của hàm
Một phương thức để đóng gói quá trình tính toán dễ dàng sử dụng
Định nghĩa hàm Khai báo hàm
Tên hàm Các tham số của hàm Kiểu trả về của hàm
Định nghĩa hàm Các lệnh
Sử dụng hàmGọi hàm
Tên hàm ( ) Các đối số
Nhận kết quả trả về của hàm
Chương 4
4
Ví Dụ Về HàmVí Dụ Về Hàm
1 2 3 4 567
891011
12
int Power(int base, unsigned int exponent){
int result = 1;for (int i = 0; i < exponent; ++i)
result *= base;return result;
}
main (void)
{
cout << "2 ^ 8 = "<< Power(2,8)<< '\n';
}
Tên hàm Các tham số
Khai báo hàm
Định nghĩa hàm
Định nghĩa hàm
Các đối số
Chương 4
5
Phạm Vi Toàn Cục – Cục BộPhạm Vi Toàn Cục – Cục Bộ
Phạm vi toàn cục Được định nghĩa ở
phạm vi chương trình
Phạm vi cục bộ Được định nghĩa ở
phạm vi khối hay hàm
Toán tử phạm vi ::
int xyz = 1; // xyz là toàn cụcvoid Foo (int xyz) // xyz là cục bộ cho thân của Foo{ if (xyz > 0) { double xyz =2; // xyz là cục bộ cho khối này cout <<xyz; } else { cout<< ::xyz; } }
Chương 4
6
Biến Tự Động – Thanh GhiBiến Tự Động – Thanh Ghi
Biến tự động được xác định hoàn toàn tự động Ví dụ: int auto sum;
Biến thanh ghi được lưu trữ trong thanh ghi để tăng hiệu xuất của
chương trình Ví dụ:
for (register int i = 0; i < n; ++i) sum += i;
Chương 4
7
Hàm Nội Tuyến – Đệ QuiHàm Nội Tuyến – Đệ Qui Sử dụng hàm
Thuận lợi: chương trình dễ đọc, tăng khả năng sử dụng lại, tránh các hiệu ứng phụ
Bất lợi: tốn chi phí cho việc gọi hàmGiải pháp: định nghĩa hàm là nội tuyến (inline)
Đệ quiMột hàm gọi chính nó
inline int Abs (int n){ return n > 0 ? n : -n;}
int Factorial (unsigned int n){ return n == 0 ? 1 : n * Factorial(n-1);}
Chương 4
8
Đối Số Mặc Định - Hàng LệnhĐối Số Mặc Định - Hàng Lệnh
Đối số mặc địnhbỏ bớt đi gánh nặng phải chỉ định các giá trị
của đối số cho tất cả các tham số hàm Đối số hàng lệnh
Có thể nhận không hay nhiều đối số từ hàng lệnh
được tạo ra sẵn cho một chương trình C++ thông qua hàm main
Ví dụ: int main (int argc, const char* argv[]);
Chương 4