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úc
27 trang |
Chia sẻ: Mr Hưng | Lượt xem: 1739 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Kiểu dữ liệu phức hợp, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Kiểu dữ liệu phức hợpHoàng Thân Anh TuấnKhoa Toán – Tin họcĐại học Sư phạm TPHCMNội dungKiểu dữ liệu đơn giản (cơ bản)Kiểu dữ liệu phức hợpPhân loại kiểu dữ liệu phức hợpMảngMảng 1 chiềuMảng 2 chiềuCấu trúcKiểu dữ liệu đơn giảnint, 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ảnKiể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ựcMộ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ênThông tin của một sinh viên gồm có:Mã số sinh viênHọ tên sinh viênNăm sinhPhá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?”maSVhotenphainamsinhĐối tượng sinh viênCó 4 giá trịVí dụ 2: Nhập và lưu điểm của sinh viên1 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ệnCâ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ểmCó 100 giá trịPhân loại kiểu dữ liệu phức hợpCác giá trị được lưu có cùng chung một kiểu mảngCác giá trị được lưu khác kiểu nhau cấu trúcMảngCông dụngDùng để lưu các đối tượng có cùng chung một kiểu và ý nghĩa sử dụngPhân loạiMảng 1 chiềuMảng 2 chiềuKhai báoCách sử dụngCác thao tác cơ bản trên mảngMảng (2)Công dụngDùng để lưu các đối tượng có cùng chung một kiểu và ý nghĩa sử dụngPhân loạiMảng1 chiềuMảng 2 chiềuMảng n chiềuMảng (3)Khai báo mảng: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. Phần tử cuối cùng nằm ở vị trí - 1.Lưu ý: số phần tử trong câu khai báo mảng phải là một hằng số hoặc một biểu thức của các hằng số.Có thê là biến (mới)01SPT-2SPT-1Ví dụ:int A[10]; // mảng A có 10 phần tử kiểu nguyêndouble mangthuc[100]; mảng mangthuc có 100 phần tử kiểu thựcconst int MAX = 100; double mangthuc[MAX];Mảng (4)Khai báo mảng:Mảng 2 chiều:Kiểu Tên-mảng[số dòng][số cột];Ý 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à một hằng số hoặc một biểu thức của các hằng số.Có thể là biến (mới)01SC-101SD-1Ví dụ:int A[10][5]; // ma trận 10 dòng, 5 cộtconst 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ụngCác thao tác trên mảng một chiều thường đi kèm với một vòng forNhập một dãy (giả sử đã nhập n)for (int i = 0 ; i > A[i];}Xuất dãysetw(6); // định dạng độ rộng để xuấtfor (int i = 0 ; i 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;n++;Xóa phần tử nằm tại vị trí thứ k của dãyn--;for (int i = k ; i I ; j++) if (A[j] min) max = A[i];cout > A[i][j]; }}Xuất ma trậnsetw(6); // định dạng độ rộng để xuấtfor (int i = 0 ; i k ; i++){ for (int j = 0 ; j < n ; j++) A[i][j] = A[i-1][j];}for (int j = 0 ; j < n ; j++) A[k][j] = v[j];m++;Xóa dòng thứ km--;for (int i = k ; i < m ; i++){ for (int j = 0 ; j < n ; j++) A[i][j] = A[i+1][j];}Tìm kiếm vị trí phần tử mang giá trị xint dem = 0;for (int i = 0 ; i < m ; i++){ for (int j = 0 ; j < n ; j++) if (A[i][j] == x) { cout << “Vị trí dòng “ << i << “ cột “ << j << endl; dem++; }}if (dem == 0) cout << “Phần tử ” << x << “ không có trong ma trận.”;
Các file đính kèm theo tài liệu này:
- kieu_du_lieu_phuc_hop_phan_1__2577.ppt