Bài giảng Kỹ thuật lập trình - Chương 3: Hàm (Trường Đại học Bách khoa Hà Nội)
Số trang: 43
Loại file: pdf
Dung lượng: 602.36 KB
Lượt xem: 9
Lượt tải: 0
Xem trước 5 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Kỹ thuật lập trình - Chương 3: Hàm. Chương này cung cấp cho học viên những nội dung về: truyền tham trị, tham biến và tham số ngầm định; đa năng hóa hàm (function overload); con trỏ hàm và tham số hóa hàm; khái quát hóa hàm (function templates); biểu thức lamda và hàm nặc danh;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình - Chương 3: Hàm (Trường Đại học Bách khoa Hà Nội)Chương 3: HàmNội dung1. Truyền tham trị, tham biến và tham số ngầm định2. Đa năng hóa hàm (function overload)3. Con trỏ hàm và tham số hóa hàm4. Khái quát hóa hàm (function templates)5. Biểu thức lamda và hàm nặc danh 2Khái niệm về hàm• Là một nhóm các khai báo và các câu lệnh được gán một tên gọi • Đây là khối lệnh được đặt tên nên sử dụng thuận tiện, hiệu quả • Hàm thường trả về một giá trị• Là một chương trình con • Khi viết chương trình C/C++ ta luôn định nghĩa một hàm có tên là main • Phía trong hàm main ta có thể gọi các hàm khác • Bản than các hàm này lại có thể gọi các hàm khác ở trong nó và cứ tiếp tục như vậy… 3Cấu phápreturn-type name(argument-list){ local-declarationsstatementsreturn return-value;} 4Ví dụ: Squaredouble square(double a){ Đây là định nghĩa hàm ngoài return a * a; hàm main}int main(void){ double num = 0.0, sqr = 0.0; printf(enter a number ); scanf(%lf,&num); sqr = square(num); Đây là chỗ gọi hàm square printf(square of %g is %g , num, sqr); return 0;} 5Tại sao cần sử dụng hàm?• Chia vấn đề thành nhiều tác vụ con • Dễ dàng hơn khi giải quyết các vấn đề phức tạp• Tổng quát hóa được tập các câu lệnh hay lặp lại • Ta không phải viết cùng một thứ lặp đi lặp lại nhiều lần • printf và scanf là ví dụ điển hình…• Hàm giúp chương trình dễ đọc và bảo trì hơn nhiều 6Hàm và truyền tham số• Trong C: tên hàm phải là duy nhất, lời gọi hàm phải có các đối số đúng bằng và hợp tương ứng về kiểu với tham số trong đn hàm. C chỉ có duy nhất 1 cách truyền tham số: tham trị (kể cả dùng địa chỉ cũng vậy).• Trong C++: ngoài truyền tham trị, C++ còn cho phép truyền tham chiếu. Tham số trong C++ còn có kiểu tham số ngầm định (default parameter), vì vậy số đối số trong lời gọi hàm có thể ít hơn tham số định nghĩa. Đồng thời C++ còn có cơ chế đa năng hóa hàm, vì vậy tên hàm không phải duy nhất. 7Truyền tham chiếu• Hàm nhận tham số là con trỏvoid Swap(int *X, int *Y) { int Temp = *X; *X = *Y; *Y = Temp;}• Để hoán đổi giá trị hai biến A và BSwap(&A, &B); 8Truyền tham chiếu• Hàm nhận tham số là tham chiếuvoid Swap(int &X, int &Y){ int Temp = X; X = Y; Y = Temp;}• Để hoán đổi giá trị hai biến A và BSwap(A, B); 9Truyền tham chiếu #include Khi một hàm trả int X = 4;về một tham int & MyFunc(){chiếu, chúng ta return X; }có thể gọi hàm int main(){ở phía bên trái Cout Tham số ngầm định• Định nghĩa các giá trị tham số mặc định cho các hàm• Ví dụvoid MyDelay(long Loops = 1000){ for(int I = 0; I < Loops; ++I) ;}• MyDelay(); // Loops có giá trị là 1000• MyDelay(5000); // Loops có giá trị là 5000 11Tham số ngầm định• Nếu có prototype, các tham số có giá trị mặc định chỉ được cho trong prototype của hàm và không được lặp lại trong định nghĩa hàm.• Một hàm có thể có nhiều tham số có giá trị mặc định. Các tham số có giá trị mặc định cần phải được nhóm lại vào các tham số cuối cùng (hoặc duy nhất) của một hàm. Khi gọi hàm có nhiều tham số có giá trị mặc định, chúng ta chỉ có thể bỏ bớt các tham số theo thứ tự từ phải sang trái và phải bỏ liên tiếp nhau• Ví dụ:int MyFunc(int a = 1, int b, int c = 3, int d = 4); // ✖int MyFunc(int a, int b = 2, int c = 3, int d = 4); // ✔ 12Đa năng hóa hàm (Overloading)• Cung cấp nhiều hơn một định nghĩa cho tên hàm đã cho trong cùng một phạm vi.• Trình biên dịch sẽ lựa chọn phiên bản thích hợp của hàm hay toán tử dựa trên các tham số mà nó được gọi. 13#include #include int MyAbs(int X){ return abs(X); } long MyAbs(long X){ return labs(X); } double MyAbs(double X){ return fabs(X); } int main(){ int X = -7; long Y = 200000l; double Z = -35.678;cout Đa năng hoá toán tử• Định nghĩa lại chức năng của các toán tử đã có sẵn ▪ Thể hiện các phép toán một cách tự nhiên hơn• Ví dụ: thực hiện các phép cộng, trừ số phức ▪ Trong C: Cần phải xây dựng các hàm AddSP(), TruSP() ▪ Không thể hiện được phép cộng và trừ cho các biểu thức như: a=b+c-d+e+f-h-k ...
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình - Chương 3: Hàm (Trường Đại học Bách khoa Hà Nội)Chương 3: HàmNội dung1. Truyền tham trị, tham biến và tham số ngầm định2. Đa năng hóa hàm (function overload)3. Con trỏ hàm và tham số hóa hàm4. Khái quát hóa hàm (function templates)5. Biểu thức lamda và hàm nặc danh 2Khái niệm về hàm• Là một nhóm các khai báo và các câu lệnh được gán một tên gọi • Đây là khối lệnh được đặt tên nên sử dụng thuận tiện, hiệu quả • Hàm thường trả về một giá trị• Là một chương trình con • Khi viết chương trình C/C++ ta luôn định nghĩa một hàm có tên là main • Phía trong hàm main ta có thể gọi các hàm khác • Bản than các hàm này lại có thể gọi các hàm khác ở trong nó và cứ tiếp tục như vậy… 3Cấu phápreturn-type name(argument-list){ local-declarationsstatementsreturn return-value;} 4Ví dụ: Squaredouble square(double a){ Đây là định nghĩa hàm ngoài return a * a; hàm main}int main(void){ double num = 0.0, sqr = 0.0; printf(enter a number ); scanf(%lf,&num); sqr = square(num); Đây là chỗ gọi hàm square printf(square of %g is %g , num, sqr); return 0;} 5Tại sao cần sử dụng hàm?• Chia vấn đề thành nhiều tác vụ con • Dễ dàng hơn khi giải quyết các vấn đề phức tạp• Tổng quát hóa được tập các câu lệnh hay lặp lại • Ta không phải viết cùng một thứ lặp đi lặp lại nhiều lần • printf và scanf là ví dụ điển hình…• Hàm giúp chương trình dễ đọc và bảo trì hơn nhiều 6Hàm và truyền tham số• Trong C: tên hàm phải là duy nhất, lời gọi hàm phải có các đối số đúng bằng và hợp tương ứng về kiểu với tham số trong đn hàm. C chỉ có duy nhất 1 cách truyền tham số: tham trị (kể cả dùng địa chỉ cũng vậy).• Trong C++: ngoài truyền tham trị, C++ còn cho phép truyền tham chiếu. Tham số trong C++ còn có kiểu tham số ngầm định (default parameter), vì vậy số đối số trong lời gọi hàm có thể ít hơn tham số định nghĩa. Đồng thời C++ còn có cơ chế đa năng hóa hàm, vì vậy tên hàm không phải duy nhất. 7Truyền tham chiếu• Hàm nhận tham số là con trỏvoid Swap(int *X, int *Y) { int Temp = *X; *X = *Y; *Y = Temp;}• Để hoán đổi giá trị hai biến A và BSwap(&A, &B); 8Truyền tham chiếu• Hàm nhận tham số là tham chiếuvoid Swap(int &X, int &Y){ int Temp = X; X = Y; Y = Temp;}• Để hoán đổi giá trị hai biến A và BSwap(A, B); 9Truyền tham chiếu #include Khi một hàm trả int X = 4;về một tham int & MyFunc(){chiếu, chúng ta return X; }có thể gọi hàm int main(){ở phía bên trái Cout Tham số ngầm định• Định nghĩa các giá trị tham số mặc định cho các hàm• Ví dụvoid MyDelay(long Loops = 1000){ for(int I = 0; I < Loops; ++I) ;}• MyDelay(); // Loops có giá trị là 1000• MyDelay(5000); // Loops có giá trị là 5000 11Tham số ngầm định• Nếu có prototype, các tham số có giá trị mặc định chỉ được cho trong prototype của hàm và không được lặp lại trong định nghĩa hàm.• Một hàm có thể có nhiều tham số có giá trị mặc định. Các tham số có giá trị mặc định cần phải được nhóm lại vào các tham số cuối cùng (hoặc duy nhất) của một hàm. Khi gọi hàm có nhiều tham số có giá trị mặc định, chúng ta chỉ có thể bỏ bớt các tham số theo thứ tự từ phải sang trái và phải bỏ liên tiếp nhau• Ví dụ:int MyFunc(int a = 1, int b, int c = 3, int d = 4); // ✖int MyFunc(int a, int b = 2, int c = 3, int d = 4); // ✔ 12Đa năng hóa hàm (Overloading)• Cung cấp nhiều hơn một định nghĩa cho tên hàm đã cho trong cùng một phạm vi.• Trình biên dịch sẽ lựa chọn phiên bản thích hợp của hàm hay toán tử dựa trên các tham số mà nó được gọi. 13#include #include int MyAbs(int X){ return abs(X); } long MyAbs(long X){ return labs(X); } double MyAbs(double X){ return fabs(X); } int main(){ int X = -7; long Y = 200000l; double Z = -35.678;cout Đa năng hoá toán tử• Định nghĩa lại chức năng của các toán tử đã có sẵn ▪ Thể hiện các phép toán một cách tự nhiên hơn• Ví dụ: thực hiện các phép cộng, trừ số phức ▪ Trong C: Cần phải xây dựng các hàm AddSP(), TruSP() ▪ Không thể hiện được phép cộng và trừ cho các biểu thức như: a=b+c-d+e+f-h-k ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Kỹ thuật lập trình Kỹ thuật lập trình Đa năng hóa hàm Con trỏ hàm Tham số hóa hàm Biểu thức lamdaGợi ý tài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 266 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 207 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 195 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 167 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 153 0 0 -
Báo cáo thực tập Công nghệ thông tin: Lập trình game trên Unity
27 trang 118 0 0 -
Giáo trình về phân tích thiết kế hệ thống thông tin
113 trang 114 0 0 -
LUẬN VĂN: Tìm hiểu kỹ thuật tạo bóng cứng trong đồ họa 3D
41 trang 109 0 0 -
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 trang 106 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 2
184 trang 92 0 0