Bài giảng Giới thiệu lập trình - Bài 10: Cấu trúc struct

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ìnhTruyề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

pdf24 trang | Chia sẻ: thucuc2301 | Lượt xem: 728 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Giới thiệu lập trình - Bài 10: Cấu trúc struct, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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 1  Cấu 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 Kiểu Dữ Liệu Nhóm 2  Kiểu Mảng:  Tập 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 cấu trúc struct:  Tập 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 Kiểu DL Cấu Trúc struct 3  Tập hợp dữ liệu, có thể khác kiểu, được nhóm  Mỗi dữ liệu được lưu trong một biến (trường)  Mỗi 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 Kiểu DL Cấu Trúc struct – Ví Dụ 4 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 Kiểu DL Cấu Trúc struct – Định Nghĩa 5  Định nghĩa bởi từ khóa struct  Định nghĩa toàn cục  Ngoài và trước int main()  Tất 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 struct sinhvien – Định Nghĩa 6 struct sinhvien { string MSSV; string HoTen; string NgaySinh; bool GioiTinh; } ; Giới Thiệu Lập Trình 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 – Khai Báo/Khởi Tạo 7 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 Truy Cập Thành Phần struct 8  Sử dụng toán tử chấm (.) sv1 . MSSV sv1 . HoTen sv1 . NgaySinh sv1 . GioiTinh  Gọi 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 Truy Cập Thành Phần struct – Ví Dụ 9 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 struct ngaythangnam 10 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 Cấu Trúc struct – Phép Gán 11  Với 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 của 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 Cấu Trúc struct – Phép Toán Khác 12  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 Truyền Biến Cấu Trúc struct Cho Hàm 13 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 Truyền Biến Cấu Trúc struct Cho Hàm 14 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 Truyền Biến Cấu Trúc struct Cho Hàm 15 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 Truyền Biến Cấu Trúc struct Cho Hàm 16 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 Cấu Trúc struct & Con Trỏ 17  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 “*”  Nếu td là con trỏ tới cấu 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ử ->: kết hợp con trỏ (*) với truy cập trường (.) p->a tương đương (*p).a Giới Thiệu Lập Trình struct thoigian 18Giới Thiệu Lập Trình struct thoigian 19Giới Thiệu Lập Trình struct sohuuti 20Giới Thiệu Lập Trình struct sohuuti 21Giới Thiệu Lập Trình struct dathuc 22Giới Thiệu Lập Trình struct dathuc 23Giới Thiệu Lập Trình

Các file đính kèm theo tài liệu này:

  • pdfts_le_nguyen_khoibaigiang10_cautrucstruct_4275_2032121.pdf
Tài liệu liên quan