Bài giảng Tin học đại cương - Bài 7: Mảng động (Lớp vector) - Đinh Phú Hùng

pdf 17 trang ngocly 3090
Bạn đang xem tài liệu "Bài giảng Tin học đại cương - Bài 7: Mảng động (Lớp vector) - Đinh Phú Hùng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_bai_7_mang_dong_lop_vector_dinh.pdf

Nội dung text: Bài giảng Tin học đại cương - Bài 7: Mảng động (Lớp vector) - Đinh Phú Hùng

  1. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học TIN HỌC ĐẠI CƯƠNG BÀI 7: MẢNG ĐỘNG (LỚP VECTOR) Giảng Viên: ThS. Đinh Phú Hùng Bộ môn: Khoa Học Máy Tính Email: hungdp@tlu.edu.vn 1 / 17
  2. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Nội Dung 1 Đặt vấn đề 2 Giới thiệu về mảng động 3 Nhập dữ liệu và in dữ liệu cho mảng động 4 Một số phương thức trên mảng động 5 Tóm tắt nội dung bài học 2 / 17
  3. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Đặt vấn đề Nhận xét về mảng đã học: Đối với mảng đã học, ta cần phải khai báo trước kích cỡ của mảng. Nếu số phần tử chúng ta muốn sử dụng vượt quá kích thước của mảng thì chương trình sẽ báo lỗi. Nếu số phần tử chúng ta muốn sử dụng nhỏ hơn kích thước của mảng thì số phần tử còn lại sẽ khô được sử dụng dẫn đến lãng phí bộ nhớ. Nếu chúng ta có nhu cầu thêm một phần tử mới vào một vị trí p của mảng hay muốn xóa một phần tử ở vị trí p của mảng thì điều này thực sự khó khăn. 3 / 17
  4. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Giới thiệu về mảng động (lớp vector) Là dãy các phần tử có kích thước thay đổi được Được cung cấp sẵn các phương thức (hiểu đơn giản là các hàm) cho phép thao tác với mảng như: - Hàm xóa phần tử của mảng (erase). - Hàm thêm phần tử vào mảng (insert). - Hàm xác định kích thước của mảng (size). - 4 / 17
  5. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Giới thiệu về mảng động (lớp vector) Khai báo thêm thư viện: #include Cách khai báo mảng động Cách 1: vector Tên mảng; Cách 2: vector Tên mảng(Kích thước); Cách 3: vector Tên mảng(Kích thước, khởi tạo); Trong đó: Kiểu dữ liệu: Là các kiểu quy định trong c++, ví dụ như int, float, double Tên mảng: Là một dãy kí tự liền nhau và không có dấu cách, không chứa các kí tự đặc biệt. Kích thước và khởi tạo: Là một số nguyên dương. 5 / 17
  6. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Giới thiệu về mảng động (lớp vector) Ví dụ: vector M; Khai báo mảng vector tên M kiểu số nguyên. Ví dụ: vector M(100); Khai báo mảng vector tên M gồm 100 phần tử kiểu số nguyên. Chỉ số của mảng bắt đầu từ 0, kết thúc là 99. Phần tử bắt đầu là M[0], kết thúc là M[99]. Ví dụ: vector M(100, 10); Khai báo mảng vector tên M gồm 100 phần tử kiểu số nguyên Mỗi phần tử của mảng đều có giá trị là 10. Chỉ số của mảng bắt đầu từ 0, kết thúc là 99. Phần tử bắt đầu là M[0], kết thúc là M[99]. 6 / 17
  7. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Nhập dữ liệu cho mảng động (lớp vector) Cách thực hiện (giống như mảng tĩnh): Để nhập dữ liệu cho mảng một chiều ta nhập dữ liệu cho từng phần tử của mảng. Nhập dữ liệu cho phần tử thứ i ta thực hiện câu lệnh cin»M[i] Sử dụng cấu trúc vòng lặp Câu lệnh minh họa for (int i = 0; i<n; i++) //Giả sử cần nhập dữ liệu cho n phần tử { cin»M[i]; //Nhập dữ liệu cho phần tử thứ i của mảng } 7 / 17
  8. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Nhập dữ liệu cho mảng động (lớp vector) Ví dụ 1: Khai báo mảng và nhập dữ liệu cho mảng một chiều Câu lệnh minh họa #include #include using namespace std; main() { vector M; //Khai báo mảng động int n; cin»n; //Nhập số phần tử thực tế cần dùng M.resize(n); //Thay đổi kích thước của mảng, còn n phần tử for (int i = 0; i< M.size(); i++) { cout«"Nhập phần tử M["«i«"]"; cin»M[i]; } } 8 / 17
  9. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học In dữ liệu cho mảng động (lớp vector) Cách thực hiện (giống như mảng tĩnh): Để in dữ liệu cho mảng động ta in dữ liệu cho từng phần tử của mảng. Để in dữ liệu cho phần tử thứ i ta thực hiện câu lệnh cout«M[i]. Có thể thực hiện cách in trên 1 dòng (mỗi phần tử cách nhau 1 khoảng trắng) hay cột (mỗi phần tử trên 1 dòng) Sử dụng cấu trúc vòng lặp Câu lệnh minh họa for (int i = 0; i< M.size(); i++) //Giả sử cần nhập dữ liệu cho n phần tử { cout«M[i]«" "; //in theo dòng cout«M[i]«endl;//in theo cột } 9 / 17
  10. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Một số phương thức trên mảng động (lớp vector) M.resize(tham số): Thay đổi kích thước mảng. M.size(): Lấy kích thưởng mảng M.insert(các tham số): Thêm phần tử mới vào mảng. M.push_back(tham số): Thêm phần tử mới vào cuối mảng M.erase(tham số): Xóa phần tử của mảng M.pop_back(): Xóa phần tử cuối cùng của mảng. 10 / 17
  11. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Một số phương thức trên mảng động (lớp vector) Cách dùng phương thức insert M.insert(M.begin() + p, x); Ý nghĩa: Thêm 1 phần tử có giá trị x vào vị trí p của mảng M Ví dụ: Mảng vector V ban đầu: V = {1, 2, 3, 4, 5, 6, 7, 8, 9} Thực hiện lệnh thêm 1 phần tử vào vị trí thứ 3, có giá trị 0: V.insert(V.begin()+3, 0); Mảng sau khi thêm: V = {1, 2, 3,0, 4, 5, 6, 7, 8, 9} 11 / 17
  12. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Một số phương thức trên mảng động (lớp vector) Cách dùng phương thức push_back M.push_back(x); Ý nghĩa: Thêm 1 phần tử có giá trị x vào cuối mảng M Ví dụ: Mảng vector V ban đầu: V = {1, 2, 3, 4, 5, 6, 7, 8, 9} Thực hiện lệnh thêm 1 phần tử có giá trị bằng 0 vào vị trí cuối mảng: V.push_back(0); Mảng sau khi thêm: V = {1, 2, 3, 4, 5, 6, 7, 8, 9,0} 12 / 17
  13. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Một số phương thức trên mảng động (lớp vector) Cách dùng phương thức erase Dạng 1: M.erase(M.begin() + p); Ý nghĩa: Xóa 1 phần tử ở vị trí p của mảng M Ví dụ: Mảng vector V ban đầu: V = {1, 2, 3,4, 5, 6, 7, 8, 9} Thực hiện lệnh xóa 1 phần tử ở vị trí thứ 3: V.erase(V.begin()+3); Mảng sau khi xóa: V = {1, 2, 3, 5, 6, 7, 8, 9} 13 / 17
  14. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Một số phương thức trên mảng động (lớp vector) Cách dùng phương thức erase Dạng 2: M.erase(M.begin() + p1, M.begin() + p2); Ý nghĩa: Xóa nhiều phần tử, bắt đầu ở vị trí p1 đến vị trí p2 − 1 của mảng M (chú ý: không xóa đến vị trí p2) Ví dụ: Mảng vector V ban đầu: V = {1, 2, 3, 4, 5, 6, 7, 8, 9} Thực hiện lệnh xóa phần tử từ vị trí số 1 đến vị trí số 4: V.erase(V.begin() + 1, V.begin() + 4); Mảng sau khi xóa: V = {1, 5, 6, 7, 8, 9} 14 / 17
  15. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Một số phương thức trên mảng động (lớp vector) Cách dùng phương thức pop_back M.pop_back(x); Ý nghĩa: Xóa 1 phần tử ở vị trí cuối cùng của mảng M Ví dụ: Mảng vector V ban đầu: V = {1, 2, 3, 4, 5, 6, 7, 8,9} Thực hiện lệnh xóa 1 phần tử ở vị trí cuối mảng V: V.pop_back(); Mảng sau khi thêm: V = {1, 2, 3, 4, 5, 6, 7, 8} 15 / 17
  16. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Một số bài toán trên mảng động (lớp vector) Xóa các phần tử của mảng thỏa mãn điều kiện nào đó. Xóa nửa dầu hoăc nửa cuối mảng Tạo một mảng mới chứa các phần tử (chẵn, lẻ, ) từ mảng ban đầu. 16 / 17
  17. Đặt vấn đề Giới thiệu về mảng động Nhập dữ liệu và in dữ liệu cho mảng động Một số phương thức trên mảng động Tóm tắt nội dung bài học Tóm tắt nội dung bài học Mảng động (lớp vector): Cách khai báo mảng động. Cách nhập và in dữ liệu của mảng động. Các phương thức thao tác trên mảng động Một số bài toán trên mảng động 17 / 17