intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kỹ thuật lập trình: Bài 11 - TS. Đào Trung Kiên

Chia sẻ: Cao Thi Ly | Ngày: | Loại File: PDF | Số trang:20

60
lượt xem
7
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Kỹ thuật lập trình: Bài 11 do TS. Đào Trung Kiên biên soạn trình bày các nội dung sau: Khuôn mẫu hàm, định nghĩa hàm khái quát, gọi hàm khái quát, chồng hàm khái quát, cá biệt hoá hàm khái quát, khuôn mẫu lớp, phương thức bên ngoài khuôn mẫu lớp,...

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kỹ thuật lập trình: Bài 11 - TS. Đào Trung Kiên

Chapter 11: Lập trình khái quát<br /> (Generic programming)<br /> <br /> 1<br /> <br /> EE3490: Kỹ thuật lập trình – HK1 2017/2018<br /> TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội<br /> <br /> Khuôn mẫu hàm<br /> (Function templates)<br /> <br /> 2<br /> <br /> EE3490: Kỹ thuật lập trình – HK1 2017/2018<br /> TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội<br /> <br /> General<br /> Đôi khi ta muốn viết một lần nhưng có thể tạo ra các hàm<br /> với tham số thuộc nhiều kiểu khác nhau, thay vì phải viết<br /> chồng nhiều hàm tương tự nhau<br /> <br /> <br /> <br /> <br /> <br /> int max(int a, int b)<br /> { return a>b ? a:b; }<br /> double max(double a, double b) { return a>b ? a:b; }<br /> float max(float a, float b)<br /> { return a>b ? a:b; }<br /> <br />  lập trình ở mức độ khái quát cao hơn: coi kiểu của biến cũng là<br /> tham số (type parameterization)<br /> <br /> Khuôn mẫu hàm (function template): là khái niệm giúp<br /> định nghĩa những hàm mà chưa xác định kiểu của các<br /> tham số<br /> <br /> <br /> <br /> <br /> <br /> 3<br /> <br /> Có thể hiểu là viết gộp chung các hàm chồng giống nhau về mặt<br /> thuật toán<br /> Kiểu của các tham số là tham số của khuôn mẫu<br /> EE3490: Kỹ thuật lập trình – HK1 2017/2018<br /> TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội<br /> <br /> Định nghĩa hàm khái quát<br /> Ví dụ 1:<br /> <br /> <br /> <br /> <br /> <br /> template <br /> void swap(T& a, T& b) {<br /> T c = a; a = b; b = c; }<br /> <br /> <br /> <br /> T được giả định là kiểu của các tham số a, b và biến c<br /> T sẽ được xác định khi gọi hàm<br /> T là tham số của khuôn mẫu, trong khi a, b là tham số của hàm<br /> <br /> <br /> <br /> <br /> Ví dụ 2:<br /> <br /> <br /> <br /> <br /> <br /> template <br /> void push(Containter& s, Object o) {...}<br /> <br /> Có thể dùng từ khoá “class” thay vì “typename”<br /> <br /> <br /> <br /> <br /> <br /> 4<br /> <br /> template <br /> void swap(T& a, T& b) {...}<br /> EE3490: Kỹ thuật lập trình – HK1 2017/2018<br /> TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội<br /> <br /> Gọi hàm khái quát<br /> Gọi với kiểu tường minh:<br /> <br /> <br /> <br /> <br /> <br /> max(a, b);<br /> max(x, y);<br /> swap(s1, s2);<br /> swap(p1, p2);<br /> push(l, st);<br /> <br /> Gọi với kiểu ngầm định:<br /> <br /> <br /> <br /> <br /> <br /> 5<br /> <br /> int a,<br /> double<br /> max(a,<br /> max(x,<br /> max(a,<br /> <br /> b;<br /> x, y;<br /> b); //  max(a, b);<br /> y); //  max(x, y);<br /> x); //  lỗi<br /> EE3490: Kỹ thuật lập trình – HK1 2017/2018<br /> TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2