Bài giảng Tin đại cương - Bài 7: Khuôn mẫu & Chỉ mục - Trương Xuân Nam
Bài 7: Khuôn mẫu & chỉ mục
1. Khuôn mẫu (template)
2. Chỉ mục (index)
3. Sử dụng chỉ mục với chuỗi kí tự
4. Vector
5. Bài tập
Bạn đang xem tài liệu "Bài giảng Tin đại cương - Bài 7: Khuôn mẫu & Chỉ mục - Trương Xuân Nam", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Tin đại cương - Bài 7: Khuôn mẫu & Chỉ mục - Trương Xuân Nam
Trương Xuân Nam - Khoa CNTT TIN ĐẠI CƯƠNG Bài 7: Khuôn mẫu & Chỉ mục 1 Nhắc lại nội dung bài trước Các kiểu dữ liệu (int, unsigned int, char, double, float, bool) Khai báo hằng số (const) và tham chiếu Phạm vi và vòng đời của biến Các kiểu dữ liệu tự tạo bằng cách ghép những kiểu dữ liệu khác với nhau Trương Xuân Nam - Khoa CNTT 2 Nhắc lại nội dung bài trước Kiểu chuỗi (string): Bản chất: Dãy các kí tự #include Khai báo: string str; string w("Hello"); string s = "Hello"; Các hàm cơ bản: Tham khảo trang 473- 474 của giáo trình Trương Xuân Nam - Khoa CNTT 3 Trương Xuân Nam - Khoa CNTT Bài 7: Khuôn mẫu & chỉ mục 1. Khuôn mẫu (template) 2. Chỉ mục (index) 3. Sử dụng chỉ mục với chuỗi kí tự 4. Vector 5. Bài tập 4 Khuôn mẫu (template) Trương Xuân Nam - Khoa CNTT 5 Trương Xuân Nam - Khoa CNTT Khuôn mẫu (template) Nhiều thuật toán có tính tổng quát, có thể áp dụng được cho nhiều loại dữ liệu khác nhau Ví dụ: Tìm phần tử lớn nhất trong 2 phần tử int max(int a, int b) { if (a > b) return a; else return b; } double max(double a, double b) { if (a > b) return a; else return b; } string max(string a, string b) { if (a > b) return a; else return b; } 6 Trương Xuân Nam - Khoa CNTT Khuôn mẫu (template) Ngôn ngữ C++ cho phép chúng ta “tổng quát hóa” các đoạn mã tương tự này bằng cách sử dụng template Ví dụ: Tìm phần tử lớn nhất trong 2 phần tử template T max(T a, T b) { if (a > b) return a; else return b; } Sử dụng: Máy tính sẽ tự động thay thế kiểu dữ liệu thích hợp cout << max(100,200) << endl; cout << max(1.5,1.3) << endl; Tự động dùng hàm max với kiểu int Tự động dùng hàm max với kiểu double 7 Chỉ mục (index) Trương Xuân Nam - Khoa CNTT 8 Trương Xuân Nam - Khoa CNTT Chỉ mục (index) Vấn đề: Về bản chất chuỗi kí tự thực chất là một dãy các chữ, liệu có cách nào thao tác đến 1 kí tự trong chuỗi hay không? Lời giải: Sử dụng hệ thống chỉ mục kèm với tên biến Chỉ mục là các số nguyên, bắt đầu từ 0 9 Sử dụng chỉ mục với chuỗi kí tự Trương Xuân Nam - Khoa CNTT 10 Trương Xuân Nam - Khoa CNTT Sử dụng chỉ mục với chuỗi kí tự Chuỗi s = “HAPPY NEW YEAR” s[0] ‘H’ s[1] ‘A’ s[2] ‘P’ Cách dùng: Lấy ra: cout << s[1] << endl; Ghi vào: s[4] = ‘I’; Kết hợp: for (int i = 0; i < 10; i++) cout << s[i] << endl; Dữ liệu H A P P Y N E W Chỉ mục 0 1 2 3 4 5 6 7 11 Vector Trương Xuân Nam - Khoa CNTT 12 Trương Xuân Nam - Khoa CNTT Vector Mẫu Vector cho phép tạo ra các loại danh sách các phần tử Ví dụ: vector x(10); for (int i=0; i<x.size(); i++) x[i] = i*i; for (int j=0; j<x.size(); j++) cout << x[j] << endl; Danh sách 10 số nguyên x 13 Trương Xuân Nam - Khoa CNTT Vector (cách dùng) Cần: #include Khai báo biến: vector m; vector a(10); vector b(10,0.5); Sử dụng chỉ mục để truy cập từ phần tử bên trong biến, chỉ mục là số nguyên bắt đầu từ 0 Các hàm do thư viện vector cung cấp để thao tác danh sách (xem bảng 6-2, trang 278 và phụ lục trang 474-475) 14 Một số hàm của vector v.clear(): Xóa rỗng vector v v.empty(): Trả về true nếu vector v rỗng v.pop_back(): Bỏ phần tử cuối cùng của vector v v.push_back(e): Chèn e vào cuối vector v v.size(): Trả về số phần tử của vector v Trương Xuân Nam - Khoa CNTT 15 Bài tập Trương Xuân Nam - Khoa CNTT 16 Một số bài tập cơ bản Nhập số nguyên dương N và mảng N số thực, in ra các số vừa nhập Nhập mảng N số thực và tính tổng Nhập mảng N số thực và tính trung bình cộng của các số trong mảng Nhập mảng N số nguyên và tính trung bình cộng các số dương trong mảng Trương Xuân Nam - Khoa CNTT 17
File đính kèm:
- bai_giang_tin_dai_cuong_bai_7_khuon_mau_chi_muc_truong_xuan.pdf