Bài giảng Giới thiệu lập trình - Chương 10: Cấu trúc Struct - Lê Nguyên Khôi
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Giới thiệu lập trình - Chương 10: Cấu trúc Struct - Lê Nguyên Khôi", để 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:
bai_giang_gioi_thieu_lap_trinh_chuong_10_cau_truc_struct_le.pdf
Nội dung text: Bài giảng Giới thiệu lập trình - Chương 10: Cấu trúc Struct - Lê Nguyên Khôi
- Gi ới Thi ệu Lập Trình Cấu Trúc struct TS. Lê Nguyên Khôi Tr ườ ng Đại học Công ngh ệ, ĐHQGHN
- Nội Dung Cu trúc struct Ki u d li u nhóm nh ngh a Khai báo / Kh i t o S d ng Truy n bi n cho hàm Gi i Thi u L p Trình 1
- Ki ểu D ữ Li ệu Nhóm Ki u M ng: Tp h p d li u cùng ki u Khai báo sau ó s d ng nh ư bi n ơ n l Truy n cho hàm: truy n a ch Ki u cu trúc struct : Tp h p d li u có th khác ki u Ph i nh ngh a tr ư c khi s d ng Khai báo sau ó s d ng nh ư bi n ơ n l Truy n cho hàm: gi ng bi n ơ n l Gi i Thi u L p Trình 2
- Ki ểu DL C ấu Trúc struct Tp h p d li u, có th khác ki u, ư c nhóm Mi d li u ư c l ưu trong m t bi n (tr ư ng) Mi d li u có ki u d li u c th H tr t ch c d li u ph c t p vào cùng m t i t ư ng H tr làm vi c gi a các d li u trên i t ư ng Gi i Thi u L p Trình 3
- Ki ểu DL C ấu Trúc struct – Ví D ụ Tên Tr ườ ng Ki ểu Dữ Li ệu Dữ Li ệu MSSV string 12345678 HoTen string Trach Van Doanh NgaySinh string 01/01/1999 GioiTinh bool true Gi i Thi u L p Trình 4
- Ki ểu DL C ấu Trúc struct –Định Nghĩa nh ngh a b i t khóa struct nh ngh a toàn c c Ngoài và tr ư c int main() Tt c các hàm u hi u Không ư c c p phát b nh Ch có m c ích miêu t c u trúc Ch c p phát b nh Khi khai báo bi n ki u c u trúc Miêu t : Các thành ph n (tr ư ng) và ki u c a chúng Gi i Thi u L p Trình 5
- struct sinhvien –Định Nghĩa Tên Tr ườ ng Ki ểu Dữ Li ệu Dữ Li ệu MSSV string 12345678 HoTen string Trach Van Doanh NgaySinh string 01/01/1999 GioiTinh bool true struct sinhvien { string MSSV; string HoTen; string NgaySinh; bool GioiTinh; } ; Gi i Thi u L p Trình 6
- struct sinhvien – Khai Báo/Kh ởi T ạo struct sinhvien { string MSSV; string HoTen; string NgaySinh; bool GioiTinh; } ; int main() { struct sinhvien sv1; struct sinhvien sv2 = { "12345678" , "Trach Van Doanh" , "01/01/1999" , true } ; } Gi i Thi u L p Trình 7
- Truy C ập Thành Ph ần struct S d ng toán t ch m ( .) sv1 . MSSV sv1 . HoTen sv1 . NgaySinh sv1 . GioiTinh Gi tên là “bi n thành ph n” Các thành ph n c a bi n ki u c u trúc Ki u c u trúc struct khác nhau có th có cùng tên bi n thành ph n Bi n thành ph n là bi n c c b Gi i Thi u L p Trình 8
- Truy C ập Thành Ph ần struct – Ví D ụ struct sinhvien { string MSSV; string HoTen; string NgaySinh; bool GioiTinh; } ; int main() { struct sinhvien sv1; sv1.MSSV = "12345678"; sv1.HoTen = "Trach Van Doanh"; sv1.NgaySinh = "01/01/1999"; sv1.GioiTinh = true; } Gi i Thi u L p Trình 9
- struct ngaythangnam struct ngaythangnam { int ngay; int thang; int nam; } ; int main() { struct ngaythangnam homNay = {1, 4, 2000}; struct ngaythangnam ngayMai; ngayMai.ngay = homNay.ngay + 1; ngayMai.thang = homNay.thang; ngayMai.nam = homNay.nam; } Gi i Thi u L p Trình 10
- Cấu Trúc struct – Phép Gán Vi c u trúc struct ngaythangnam Khai báo 2 bi n c u trúc struct ngaythangnam homQua, homNay; C 2 bi n u ki u struct ngaythangnam Th c hi n phép gán ơ n gi n h p l homQua = homNay; Sao chép giá tr bi n thành ph n homNay ca cho các bi n thành ph n c a homQua , t ươ ng ươ ng homQua.ngay = homNay.ngay; homQua.thang = homNay.thang; homQua.nam = homNay.nam; Gi i Thi u L p Trình 11
- Cấu Trúc struct – Phép Toán Khác Các phép toán khác không ư c nh ngh a cho ki u c u trúc struct So sánh b ng/khác ( == , != ) (homQua == homNay bi u th c không h p l ) So sánh th t ( , ) (homQua < homNay bi u th c không h p l ) Các phép toán (homQua + homNay bi u th c không h p l ) Nh p & in (cin & cout không h p l ) Gi i Thi u L p Trình 12
- Truy ền Bi ến C ấu Trúc struct Cho Hàm struct toado { int x, y; } ; typedef struct toado ToaDo; void _nhapToaDo(ToaDo & td) { cin >> td.x >> td.y; } void _inToaDo(const ToaDo & td) { cout << "(" << td.x << "," << td.y << ")"; } Gi i Thi u L p Trình 13
- Truy ền Bi ến C ấu Trúc struct Cho Hàm struct toado { int x , y ; } ; typedef struct toado ToaDo; void _nhapToaDo ( ToaDo & td ) ; void _inToaDo ( const ToaDo & td ) ; int main ( ) { ToaDo td1; _nhapToaDo ( td1 ) ; _inToaDo ( td1 ) ; ToaDo td2; _nhapToaDo ( td2 ) ; _inToaDo ( td2 ) ; } Gi i Thi u L p Trình 14
- Truy ền Bi ến C ấu Trúc struct Cho Hàm void _trungDiem ( const ToaDo & td1 , const ToaDo & td2 , ToaDo & trungDiem ) { trungDiem.x = ( td1.x + td2.x ) / 2; trungDiem.y = ( td1.y + td2.y ) / 2; } ToaDo * _trungDiem ( const ToaDo & td1 , const ToaDo & td2 ) { ToaDo * trungDiem = new ToaDo; (*trungDiem).x = ( td1.x + td2.x ) / 2; (*trungDiem).y = ( td1.y + td2.y ) / 2; return trungDiem; } Gi i Thi u L p Trình 15
- Truy ền Bi ến C ấu Trúc struct Cho Hàm int main ( ) { ToaDo td1 ; _nhapToaDo ( td1 ) ; ToaDo td2 ; _nhapToaDo ( td2 ) ; ToaDo tdTrgD1 ; _trungDiem ( td1 , td2 , tdTrgD1 ) ; ToaDo * tdTrgD2 = new ToaDo; tdTrgD2 = _trungDiem ( td1 , td2 ) ; _inToaDo ( tdTrgD1 ) ; _inToaDo ( *tdTrgD2 ) ; } Gi i Thi u L p Trình 16
- Cấu Trúc struct & Con Tr ỏ Gi ng các ki u d li u khác: struct toado * là con tr t i struct toado Toán t & tr v a ch c a bi n c u trúc Theo th t ưu tiên: “ .” ư c ưu tiên tr ư c “ *” Nu td là con tr ti cu trúc struct toado : *p.x tươ ng ươ ng *(p.x) không h p l Ph i s d ng (*p).x thu n ti n, có th dùng toán t ->: kt hp con tr (*) v i truy c p tr ư ng (.) p->a tươ ng ươ ng (*p).a Gi i Thi u L p Trình 17
- struct thoigian Gi i Thi u L p Trình 18
- struct thoigian Gi i Thi u L p Trình 19
- struct sohuuti Gi i Thi u L p Trình 20
- struct sohuuti Gi i Thi u L p Trình 21
- struct dathuc Gi i Thi u L p Trình 22
- struct dathuc Gi i Thi u L p Trình 23