Slide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Kiểu cấu trúc
Giới thiệu kiểu cấu trúc
Các kiểu dữliệu cơsởchưa đủmềm dẻo cho
các bài toán thực tế
sựvật, hiện tượng trong thực tếphức tạp, có
nhiều tính chất khác nhau nhiều tính chất khác nhau
Người lập trình cần có định nghĩa các kiểu dữ
liệu phù hợp với bài toán cụthể
dễsửdụng
có sựliên hệgiữa các tính chất khác nhau
Lương Trần Hy Hiến Khoa Toán – Tin học Đại học Sư phạm TPHCM 1 Nội dung Giới thiệu kiểu cấu trúc Khai báo kiểu cấu trúc Kiểu cấu trúc lồng nhau Sử dụng kiểu cấu trúc Bài tập 2 Giới thiệu kiểu cấu trúc Các kiểu dữ liệu cơ sở chưa đủ mềm dẻo cho các bài toán thực tế sự vật, hiện tượng trong thực tế phức tạp, có nhiều tính chất khác nhau Người lập trình cần có định nghĩa các kiểu dữ liệu phù hợp với bài toán cụ thể dễ sử dụng có sự liên hệ giữa các tính chất khác nhau 3 Giới thiệu kiểu cấu trúc Tạo ra kiểu dữ liệu phức tạp dựa trên các kiểu dữ liệu đã có dữ liệu có cấu trúc Tạo ra các chương trình con riêng để làm việc với dữ liệu mới Sự phát triển Struct – Cấu trúc (lập trình thủ tục) Object – Đối tượng (lập trình hướng đối tượng) 4 Giới thiệu kiểu cấu trúc Mô tả đối tượng là nhân viên, thông tin bao gồm: họ tên, quê quán, năm sinh, thâm niên công tác, địa chỉ, giới tính Thể hiện trên máy tính, với mỗi thông tin chúng ta cần một biến tương ứng để mô tả một nhân viên chúng ta cần 6 biến: string hoten, quequan, diachi; int namsinh, TNCT, gioitinh; 5 Giới thiệu kiểu cấu trúc(tt) Mô tả hai nhân viên cần 12 biến string hoten1, quequan1, diachi1; int namsinh1, TNCT1, gioitinh1; string hoten2, quequan2, diachi2; int namsinh2, TNCT2, gioitinh2; Làm sao đặt lại năm sinh của nhân viên thứ nhất ??? namsinh1 = 1979; Làm sao đặt lại quê quán của nhân viên thứ hai ??? quequan2 = “Khánh Hòa”; 6 Giới thiệu kiểu cấu trúc(tt) Nhận xét: Tập các biến string hoten1, quequan1, diachi1; int namsinh1, TNCT1, gioitinh1 thuộc về cùng một nhóm (nhân viên thứ nhất) Tập các biến string hoten2, quequan2, diachi2; int namsinh2, TNCT2, gioitinh2 thuộc về cùng một nhóm (nhân viên thứ hai) Cần cơ chế hỗ trợ điều này gom nhóm các biến lại với nhau để dễ hiểu, dễ kiểm soát. 7 Giới thiệu kiểu cấu trúc Một cấu trúc là một tập hợp các biến có liên quan với nhau có thể khác kiểu. Trong C++, kiểu cấu trúc là kiểu do người dùng định nghĩa. Nó được sử dụng như là các kiểu cơ bản khác của C++. Sự khác nhau giữa cấu trúc và mảng: Mảng = tập hợp các biến cùng kiểu cấu trúc = tập hợp các biến có thể khác kiểu. Tất cả các biến trong mảng chỉ có một tên các biến trong cấu trúc có thể khác tên. 8 Khai báo kiểu cấu trúc Cú pháp struct Tên_Cấu_trúc{ Kiểu thành_phần_1; Kiểu thành_phần_2; … }; Hoặc theo C typedef struct { // các thành phần của struct } Tên_Cấu_trúc; 9 Ví dụ Tạo kiểu cấu trúc NhanVien struct NhanVien{ string hoten, quequan, diachi; int namsinh, TNCT, gioitinh; Tên cấu trúc NhanVien có 6 thành }; Tạo kiểu cấu trúc Diem struct Diem{ int x; int y; }; 10 phần Tên cấu trúc Diem có 2 thành phần Ví dụ Tạo kiểu cấu trúc mô tả đối tượng ngày struct Ngay{ int ngay; int thang; int nam; Tên cấu trúc Ngay có 3 thành phần }; Tạo kiểu cấu trúc mô tả đối tượng phân số struct PhanSo{ int tu; int mau; }; 11 Tên cấu trúc PhanSo có 2 thành phần Sử dụng kiểu cấu trúc Tên_Cấu_trúc trở thành một kiểu do người dùng định nghĩa và có thể được sử dụng để định nghĩa biến như các kiểu khác của C++ Tên_Cấu_trúc Tên_Biến; Để truy cập đến một thành phần của biến cấu trúc dùng toán tử “.” Tên_Biến_Cấu_Trúc.Tên_Thành_Phần VD: NhanVien nv1, nv2; nv1.namsinh = 1979; // Gánnăm sinh cho nhân viên 1 nv2.quequan = “Khánh Hòa”; // đặt quê quán cho nhân viên 2 hoten quequan Diachi namsinh TNCT gioitinh 12 nv1 nv2 hoten quequan Diachi namsinh TNCT gioitinh Ví dụ Diem p1, p2; p1.x = 10; p1.y = 5; p2.x = 7; p2.y = 8; x=10 y=5 p1 x=7 y=8 Ngay n1, n2; n1.ngay = 1; n1.thang = 10; n1.nam = 1986; n2.ngay = 27; n2.thang = 7; n1.nam = 2009; 13 p2 ngay=1 thang=10 nam=1986 n1 n2 ngay=27 thang=7 nam=2009 Ví dụ PhanSo ps1, ps2; ps1.tu = 1; ps1.mau = 3; ps2.tu = 7; ps2.mau = 13; tu=1 mau=3 ps1 tu=7 mau=13 cin >> ps1.tu >> ps1.mau; 14 ps2 Biến kiểu int Biến kiểu int Sử dụng kiểu cấu trúc Có thể gán hai biến thuộc cùng một kiểu cấu trúc cho nhau PhanSo ps1, ps2; ps1.tu = 1; ps1.mau = 3; ps2 = ps1; //ps2.tu = ps1.tu; ps2.mau = ps1.mau; Ngay n1, n2; n1.ngay = 1; n1.thang = 10; n1.nam = 1986; n2 = n1; // ??? 15 Kiểu cấu trúc lồng nhau Một khi kiểu cấu trúc đã được định nghĩa thì kiểu cấu trúc có thể được sử dụng như bất kỳ kiểu cơ bản nào của C++ trong định nghĩa kiểu cấu trúc mới có thể sử dụng kiểu cấu trúc cũ. struct NhanVien{ string hoten, quequan, diachi; int namsinh, TNCT, gioitinh; }; struct PhongBan{ NhanVien truongphong; int soNV; string tenphong; }; 16 Mảng các đối tượng cấu trúc struct PhongBan{ NhanVien truongphong; int soNV; string tenphong; NhanVien DSNhanVien[100]; }; 17 Bài tập 1) Viết bài tập phân số sử dụng kiểu cấu trúc 2) Viết các kiểu cấu trúc mô tả các đối tượng điểm, đoạn thẳng, tam giác, hình chữ nhật, hình thang, đa giác. 3) Viết các hàm tính chu vi của các đối tượng trên. 18 Bài tập 4 Tạo kiểu cấu trúc MyDate chứa thông tin ngày tháng năm. Viết hàm kiểm tra một cấu trúc có thông tin ngày tháng năm hợp lệ hay không. Viết hàm tính xem một ngày là ngày thứ mấy trong tuần. 19 Bài tập 5 Xây dựng kiểu cấu trúc sinh viên chứa MyDate, chứa điểm trung bình Xây dựng hàm sắp xếp một danh sách (mảng) sinh viên theo thứ tự điểm trung bình từ cao xuống thấp. Xây dựng hàm tìm kiếm sinh viên theo mã sinh viên. 20
File đính kèm:
- Slide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Kiểu cấu trúc.pdf