Thông tin tài liệu:
Mời các bạn tham khảo bài giảng Kiểu dữ liệu phức hợp do Hoàng Thân Anh Tuấn biên soạn sau đây để bổ sung thêm kiến thức về kiểu dữ liệu đơn giản; kiểu dữ liệu phức hợp; phân loại kiểu dữ liệu phức hợp; mảng (mảng 1 chiều, mảng 2 chiều).
Nội dung trích xuất từ tài liệu:
Bài giảng Kiểu dữ liệu phức hợp - Hoàng Thân Anh TuấnKiểu dữ liệu phức hợp Hoàng Thân Anh Tuấn Khoa Toán – Tin học Đại học Sư phạm TPHCMNội dung Kiểu dữ liệu đơn giản (cơ bản) Kiểu dữ liệu phức hợp Phân loại kiểu dữ liệu phức hợp Mảng – Mảng 1 chiều – Mảng 2 chiều Cấu trúcKiểu dữ liệu đơn giản int,double, char, bool, … Tạo ra các đối tượng cơ bản (thường gọi là biến. Các đối tượng cơ bản trả lời cho một câu hỏi duy nhất: “nó đang mang giá trị gì?” Mỗi đối tượng cơ bản tại một thời điểm chỉ mang một giá trị duy nhấtKiểu dữ liệu phức hợp Được hình thành từ các kiểu dữ liệu đã có: – Kiểu dữ liệu cơ bản – Kiểu dữ liệu phức hợp đã được tạo trước đó Tạo ra các đối tượng phức tạp, gần với thế giới thực Một đối tượng phức tạp (gọi tắt là đối tượng) có thể mang nhiều giá trị.Ví dụ 1: Chương trình quản lý sinh viên Thông tin của một sinh viên gồm có: – Mã số sinh viên – Họ tên sinh viên – Năm sinh – Phái Để mô tả một sinh viên chúng ta cần 4 đối tượng cơ bản: – int maSV; – string hoten; – int namsinh; – int phai;Ví dụ 1: Chương trình quản lý sinh viên (tt) Câu hỏi: “Liệu có thể mô tả một sinh viên bởi một đối tượng duy nhất?” Đối tượng sinh viên maSV hoten Có 4 giá trị namsinh phaiVí dụ 2: Nhập và lưu điểm của sinh viên 1 sinh viên: double diem; cin >> diem; 2 sinh viên: double diem1, diem2; cin >> diem1 >> diem2; 5 sinh viên: double diem1, diem2, diem3, diem4, diem5; cin >> diem1 >> diem2 >> diem3 >> diem4 >> diem5;Ví dụ 2: Nhập và lưu điểm của sinh viên (tt) 100 sinh viên 100 biến (đối tượng cơ bản) bất tiện Câu hỏi: “Liệu có cách nào biểu diễn điểm của tất cả các sinh viên bằng một đối tượng duy nhất?” Đối tượng điểm Có 100 giá trịPhân loại kiểu dữ liệu phức hợp Các giá trị được lưu có cùng chung một kiểu mảng Các giá trị được lưu khác kiểu nhau cấu trúcMảng Công dụng – Dùng để lưu các đối tượng có cùng chung một kiểu và ý nghĩa sử dụng Phân loại – Mảng 1 chiều – Mảng 2 chiều Khai báo Cách sử dụng Các thao tác cơ bản trên mảngMảng (2) Công dụng – Dùng để lưu các đối tượng có cùng chung một kiểu và ý nghĩa sử dụng Phân loại – Mảng1 chiều – Mảng 2 chiều – Mảng n chiềuMảng (3) Khai báo mảng: 0 1 … SPT-2 SPT-1 – Mảng 1 chiều: Kiểu Tên-mảng[số phần tử]; … Ý nghĩa: là một mảng có kiểu . Phần tử đầu tiên nằm ở vị trí thứ 0. •Ví dụ: Phần tử cuối cùng nằm ở vị trí - 1. •int A[10]; // mảng A có 10 Lưu ý: số phần tử trong phần tử kiểu nguyên câu khai báo mảng phải là một hằng số hoặc một •double mangthuc[100]; mảng biểu thức của các hằng số. mangthuc có 100 phần tử kiểu Có thê là biến (mới) thực •const int MAX = 100; double mangthuc[MAX];Mảng (4) Khai báo mảng: 0 1 … SC-1 – Mảng 2 chiều: Kiểu Tên-mảng[số dòng][số cột]; 0 Ý nghĩa: là một ma trận có dòng và cột. Phần tử đầu tiên nằm ở vị trí dòng thứ 0, cột thứ 0. … Phần tử cuối cùng nằm ở vị trí dòng - 1 và cột - 1. Lưu ý: số dòng, số cột phải là •Ví dụ: một hằng số hoặc một biểu thức của các hằng số. int A[10][5]; // ma trận Có thể là biến (mới) 10 dòng, 5 cột const int MAXX = 10; const int MAXY = 5; int A[MAXX][MAXY];Mảng (5) Sử dụng mảng: – Để truy xuất đến phần tử nằm ở vị trí thứ i của dãy A: A[i]. Có thể thay i bằng một biểu thức có kết quả lượng giá là một số nguyên trong khoảng hợp lệ. C++ không kiểm tra lỗi phạm vi. – Để truy xuất đến phần tử nằm ở vị trí dòng i, cột j của ma trận A: A[i][j] Có thể thay I, j bằng một biểu thức có kết quả lượng giá là một số nguyên trong khoảng hợp lệ. Lưu ý sự khác biệt giữa Pascal và C++. – Một khi đã truy xuất đến một phần tử của mảng, thì vai trò của phần tử của mảng hoàn toàn như vai trò của biến. Nghĩa là có thể thực hiện thao tác nhập, xuất, gán, lấy giá trị tính toán,…Mảng (6) Các thao tác thường gặp trên mảng một chiều: – Qui ước mảng: int A[100]; // mảng có thể chứa tối đa 100 phần tử int n; // số phần tử thật sự sẽ sử dụng – Các thao tác trên mảng một chiều thường đi kèm với một vòng for – Nhập một dãy (giả sử đã nhập n)for (int i = 0 ; i < n ; i++){ cout Xuất dãysetw(6); // định dạng độ rộng để xuấtfor (int i = 0 ; i < n ; i++) cout 0 ; i--) A[i] = A[i-1];A[0] = v;n++; Thêm một phần tử v vào vị trí thứ k của dãyfor (int i = n ; i > k ; i--) A[i] = A[i-1];A[k] = v; ...