8

Click here to load reader

Lap trinh huong_doi_tuong_cpp_dhct_lesson04

Embed Size (px)

Citation preview

Page 1: Lap trinh huong_doi_tuong_cpp_dhct_lesson04

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)

Page 2: Lap trinh huong_doi_tuong_cpp_dhct_lesson04

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

Page 3: Lap trinh huong_doi_tuong_cpp_dhct_lesson04

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

Page 4: Lap trinh huong_doi_tuong_cpp_dhct_lesson04

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

Page 5: Lap trinh huong_doi_tuong_cpp_dhct_lesson04

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

Page 6: Lap trinh huong_doi_tuong_cpp_dhct_lesson04

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

Page 7: Lap trinh huong_doi_tuong_cpp_dhct_lesson04

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

Page 8: Lap trinh huong_doi_tuong_cpp_dhct_lesson04

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