Khái niệm hàm và lập trình cấu trúc
Khai báo và Định nghĩa một hàm trong C++
Lời gọi hàm
Tham số của hàm
Hàm inline
Định nghĩa chồng các hàm
Hàm toán tử
Định nghĩa chồng các toán tử
59 trang |
Chia sẻ: Mr Hưng | Lượt xem: 975 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Hàm lập trình cấu trúc, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HàmLập trình cấu trúcHoàng Thân Anh TuấnKhoa Toán – Tin họcĐại học Sư phạm TPHCMNội dungKhái niệm hàm và lập trình cấu trúcKhai báo và Định nghĩa một hàm trong C++Lời gọi hàmTham số của hàmHàm inlineĐịnh nghĩa chồng các hàmHàm toán tửĐịnh nghĩa chồng các toán tửKhái niệm hàm và lập trình cấu trúcTư tưởng chínhChia bài toán lớn thành các bài toán nhỏ, hoặc phân rã quá trình giải bài toán thành một số hữu hạn các bước.Với mỗi bài toán con hoặc một bước giải bài toán, xây dựng một (hoặc nhiều) hàm (thủ tục) giải quyết.Mỗi hàm (thủ tục) là một đơn vị hoàn chỉnh, độc lập về đoạn mã và dữ liệu nhằm thi hành một tác vụ nào đó.Mỗi hàm (thủ tục) nên được thiết kế chỉ để thi hành một và chỉ một tác vụ duy nhất.Khai báo một hàmMục đích:Chỉ ra prototype của hàm bao gồm: tên hàm, kiểu các tham số và kiểu trả về.Báo cho trình biên dịch biết rằng có một hàm như vậyCú pháp: ( );Trong đó:: là một kiểu do C++ hỗ trợ hoặc do người dùng tạo ra: tên của hàm: chỉ ra kiểu của các tham số của hàmVí dụ:void xuatPhanSo(int, int);void xuatPhanSo(PhanSo);hàm có tên là xuatPhanSocó hai tham số; cả hai đều có kiểu là số nguyên (int)không có giá trị trả vềvoid nhapPhanSo(int&, int&);void nhapPhanSo(PhanSo&);Hàm có tên là nhapPhanSoCó hai tham số; cả hai đều có kiểu tham chiếu đến số nguyên (int&)Không có giá trị trả vềVí dụ:double tinhLuong(double);Hàm có tên là: tinhLuongCó một tham số, có kiểu là số thực (double)Có giá trị trả về là số thựcvoid thongbaoLoi();Hàm có tên là: thongbaoLoiKhông có tham sốKhông có giá trị trở vềKhai báo một hàm (tt)Có thể đưa vào tên của tham số (không chỉ kiểu của tham số)Ví dụ:void xuatPhanSo(int tuso, int mauso);void nhapPhanSo(int& tuso, int& mauso);double tinhLuong(double thamnien);void thongbaoLoi();Định nghĩa một hàmMục đích:Chỉ rõ cụ thể việc cài đặt của hàmCác công việc mà hàm sẽ làmDữ liệu và đoạn mã của hàm sử dụngCú pháp: ( ){ // Thân hàm}Lưu ý:Danh sách tham số phải có kiểu trùng với danh sách kiểu tham số đã được khai báo trước đó.Trong danh sách các tham số phải có tên tham sốKết thúc hàm và trả về giá trị cho lời gọi hàm: return ;Hàm là một đơn vị độc lập về dữ liệu và đoạn mãKhai báo hàm: void xuatPhanSo(PhanSo);Định nghĩa hàm: void xuatPhanSo(PhanSo ps) { cout > tuso >> mauso;}Thân hàmVí dụ// khai báo hàmdouble tinhLuong(double);// định nghĩa hàmdouble tinhLuong(double thamnien){ const double LCB = 290000; double heso, luong; if (thamnien ()Trong đó:: tên của hàm muốn gọi. Hàm đó phải được khai báo trước đó.: các tham số thật sự cho lời gọi hàm này.Ví dụint main(){ int a, b; nhapPhanSo(a, b); xuatPhanSo(a, b); return 0;}Gọi hàm nhapPhanSo với tham số thực là biến a và biến bGọi hàm xuatPhanSo với tham số thực là giá trị của a và giá trị của bNgữ nghĩa của định nghĩa hàm và lời gọi hàmvoid xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}nhapPhanSo(tuso, mauso)nhapPhanSo(a, b)Nhập vào giá trị cho tử số và mẫu số của một phân số nào đóNhập vào giá trị cho tử số a và mẫu số bNgữ nghĩa của định nghĩa hàm và lời gọi hàm (tt)double tinhLuong(double thamnien){ const double LCB = 290000; double heso, luong; if (thamnien > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}void xuatPhanSo(int tuso, int mauso){ cout (kiểu tham_số_1 = giá_trị[,kiểu tham_số_1 = giá_trị]);Lưu ý:Định nghĩa hàm vẫn như bình thườngTham số mặc định bắt buộc phải đi từ phải qua trái, không có tham số không mặc định chèn ở giữaVí dụ 1// khai báo hàmvoid xuatPhanSo(int tuso = 0, int mauso = 1);// định nghĩa hàmvoid xuatPhanSo(int tuso, int mauso){ cout > tuso >> mauso;}Thân hàmVí dụ 2int main(){ int a, b; nhapPhanSo(a, b); xuatPhanSo(a, b); return 0;}inline void nhapPhanSo(int& tuso, int& mauso){ cout > tuso >> mauso;}cout > a >> b;Quá tải hàmDấu hiệu của hàm (signature)Dùng để phân biệt các hàm với nhau. Mỗi hàm trong chương trình phải có một dấu hiệu duy nhất.Bao gồm:Tên hàmKiểu tham số của hàmSố tham số của hàmvoid xuatPhanSo(int tuso, int mauso);Có kí hiệu là xuatPhanSo_int_intQuá tải hàm (tt)void xuatPhanSo(double tuso, double mauso);Có kí hiệu là xuatPhanSo_double_double Quá tải hàmHai hàm có cùng tên, có cùng số tham số và tồn tại ít nhất một tham số khác nhau thì khác nhauVí dụ: void xuatPhanSo(int tuso, int mauso);Khác với void xuatPhanSo(double tuso, double mauso);Hai hàm có cùng tên, khác số tham số thì khác nhauVí dụ: void xuatPhanSo(int tuso, int mauso);Khác với void xuatPhanSo(int tuso);Ví dụ 1int main(){ xuatPhanSo(1, 2); xuatPhanSo(1.0, 2.0); double a, b; cin >> a >> b; xuatPhanSo(a, b); return 0;}void xuatPhanSo(int tuso, int mauso){ cout operator ( );Trong đó danh sách các tham số là các toán hạngVí dụ:3+4: là phép toán + có hai toán hạng là hai số nguyên; kết quả trả về một số nguyên int operator + (int a, int b)Quá tải toán tử (tt)Chính nhờ kí hiệu của hàm bao gồm tên hàm và các tham số mà ta có thể quá tải toán tử. Bởi vì các toán tử cùng chung kí hiệu đều có cùng tên hàm là operator Ứng dụng:Dùng tóan tử xuất, nhập trên các đối tượng một cách bình thường.Ví dụ 1class A{ public: int a; A():a(0){};};class B{ public: int b; B():b(10){};};int operator + (A aObj, B bObj){ return aObj.a+bObj.b;}int main(){ A a; B b; //int c = a+b; int c = b+a; cout Một số hàm cơ bảnTênHàm toánTênHàm toánTênHàm toánasinarcsin(x)sinsin(x)abs|x|:intacosarccos(x)coscos(x)ceilcận trênatanarctan(x)tantan(x)floorcận dướilogln(x)powxafabs|x|:doublesqrtx1/2expexlabs|x|:longThư viện iomanip (iomanip.h)Sử dụng:#include TênCông dụngsetw(n)Định độ dài xuấtsetprecision(n)Số chữ số thập phânThư viện cstdio (stdio.h)Khai báo sử dụng thư viện#include Một số hàm cơ bảnTênCông dụngprintf(s,...)Xuất dữ liệu ra màn hìnhscanf(s,...)Nhập dữ liệu từ bàn phímThư viện cstdlib (stdlib.h)Khai báo sử dụng thư viện#include Một số hàm cơ bảnTênCông dụngmalloc(n)Cấp phát biến động có kích thước n bytes.
Các file đính kèm theo tài liệu này:
- ham_522.ppt