Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 54 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Tiêu đề
Hàm
Định dạng
Số trang
54
Dung lượng
1,43 MB
Nội dung
Chương 3: Hàm Review : • • Giai phong xong, van truy cap duoc ? Tai cap phat bo nho ( C++) float *m; int n; // nhap n m= new int [n]; float *p; // nhap lai ky moi k p=new int [k]; if (n>k) n=k; for(int i=0; in) n=k; Nội dung Truyền tham trị, tham biến tham số ngầm định Đa hóa hàm (function overload) Con trỏ hàm tham số hóa hàm Khái quát hóa hàm (function templates) Biểu thức lamda hàm nặc danh MODULATION • • • • • • Function abstraction Ctcon loai : procedure va function Cau truc ct : • • Phan cap Dong dang Cach truyen tham so • • Truyen bien, tham chieu ( c++, pascal, vb,…) Truyen tham tri, hay ban gia tri (C ) Bien va pham vi • • Tong the Cuc bo Khái niệm hàm • Là nhóm khai báo câu lệnh gán tên gọi • • Đây khối lệnh đặt tên nên sử dụng thuận tiện, hiệu • • Khi viết chương trình C/C++ ta ln định nghĩa hàm có tên main Hàm thường trả giá trị • Là chương trình Phía hàm main ta gọi hàm khác • Bản thân hàm lại gọi hàm khác tiếp tục vậy… Cú pháp return-type name(argument-list){ local-declarations statements return return-value; } Ví dụ: Square double square(double a) Đây định nghĩa hàm hàm main { return a * a; } int main(void) { double num = 0.0, sqr = 0.0; printf("enter a number\n"); scanf("%lf",&num); Đây chỗ gọi hàm square sqr = square(num); printf("square of %g is %g\n", num, sqr); return 0; } Tại cần sử dụng hàm? • Chia vấn đề thành nhiều tác vụ • Dễ dàng giải vấn đề phức tạp • Tổng quát hóa tập câu lệnh hay lặp lại • Ta viết thứ lặp lặp lại nhiều lần • printf scanf ví dụ điển hình… • Hàm giúp chương trình dễ đọc bảo trì nhiều Hàm truyền tham số • Trong C: tên hàm phải nhất, lời gọi hàm phải có đối số hợp tương ứng kiểu với tham số đn hàm C có cách truyền tham số: tham trị (kể dùng địa vậy) • Trong C++: ngồi truyền tham trị, C++ cịn cho phép truyền tham chiếu Tham số C++ cịn có kiểu tham số ngầm định (default parameter), số đối số lời gọi hàm tham số định nghĩa Đồng thời C++ cịn có chế đa hóa hàm, tên hàm khơng phải Truyền tham chiếu • Hàm nhận tham số trỏ void Swap(int *X, int *Y) { int Temp = *X; *X = *Y; *Y = Temp; } • Để hốn đổi giá trị hai biến A B Swap(&A, &B); 10 Hàm nặc danh - cú pháp lambda #include using namespace std; void for_each (int *arr, int n, void (*func)(int a)){ for (int i = 0; i < n; i++) { func(*(arr + i)); } } int main(){ int arr[] ={1, 2, 3, 4, 5} , n = 5; for_each(arr, n, [] (int a){ a = a + 10; cout int { return i; }; Thêm khai báo -> int giúp việc đọc hiểu lambda dễ dàng 46 Hàm nặc danh - cú pháp lambda Phần thân lambda Phần thân lambda có thể: • • • • sử dụng biến bắt giữ mệnh đề bắt giữ sử dụng tham số sử dụng biến khai báo bên struct/class chứa thơng qua trỏ this (OOP) sử dụng biến toàn cục, biến static 47 Ví dụ #include using namespace std; int main(){ int m = 0; int n = 0; auto func = [&, n] (int a) mutable { m = ++n + a; }; func(4); cout