Bài giảng Nhập môn lập trình - Bài 7: Kiểu dữ liệu có cấu trúc cung cấp cho người học các kiến thức: Khái niệm kiểu cấu trúc, khai báo cấu trúc, các thao tác cơ bản, mảng cấu trúc và các thao tác, enumerations- Typedef. Mời các bạn cùng tham khảo.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Bài 7: Kiểu Dữ Liệu Có Cấu Trúc Trung Tâm Tin Học – Ngành Mạng Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Khái niệm kiểu cấu trúc Khai báo cấu trúc Các thao tác Mảng cấu trúc thao tác Enumerations - Typedef Trung Tâm Tin Học – Ngành Mạng Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Khái niệm Ngôn ngữ C/C++ đưa cách để tạo nên kiểu liệu tùy biến (custom data types) Structure:Là nhóm biến định nghĩa tên Kiểu gọi kiểu liệu phức hợp Bit-field:là biến thể kiểu structure cho phép dễ dàng truy cập đến bit riêng rẽ Union: cho phép mẫu nhớ định nghĩa hai hay nhiều kiểu biến khác Enumeration: danh sách tên nguyên Typedef: định nghĩa tên khác cho kiểu liệu có Trung Tâm Tin Học – Ngành Mạng Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 1.2 Khái niệm kiểu cấu trúc Ví dụ mở đầu: Trường đại học XYZ cần viết phần mềm quản lý sinh viên, thông tin cần lưu trữ cho sinh viên bao gồm: mã sinh viên, họ tên, tuổi, quê quán, lớp học… Trong trường hợp cần giải vấn đề : liệu có khả chứa nhiều thơng tin để giải vấn đề ta dùng kiểu liệu có Cấu Trúc Trung Tâm Tin Học – Ngành Mạng Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 1.2 Khái niệm kiểu cấu trúc • Một cấu trúc tập biến tham chiếu thông qua tên chung Những biến tạo nên cấu trúc gọi thành viên (members) • Sự khác biệt kiểu cấu trúc kiểu mảng là: phần tử mảng kiểu cịn phần tử kiểu cấu trúc có kiểu khác Trung Tâm Tin Học – Ngành Mạng Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 2.1 Khai báo kiểu cấu trúc Cấu trúc thực chất kiểu liệu người dùng định nghĩa cách gom nhóm kiểu liệu có sẵn C thành kiểu liệu phức hợp nhiều thành phần struct tructureName { type member1; type member2; type memberN; } varNames; Trung Tâm Tin Học – Ngành Mạng Thiết Bị Di Động • structureName: Tên cấu trúc • type: Kiểu liệu thành viên tương ứng • Member1, , memberN: Tên biến thành viên cấu trúc • varNames: Tên biến cấu trúc phân cách dấu phẩy TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Khai báo kiểu cấu trúc Ví dụ: • Tạo struct sinh viên gồm thông tin: mã số sinh viên, họ tên, năm sinh, địa struct sinhvien { char MaSv[10]; char TenSv[30]; int Namsinh; char Diachi[50]; }; • Khai báo biến kiểu sinhvien: sinhvien sv1, sv2; Trung Tâm Tin Học – Ngành Mạng Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Khai báo kiểu cấu trúc Từ khóa typedef dùng để định nghĩa kiểu liệu Khi ta khai báo: SinhVien teo; Thì teo đối tượng có kiểu liệu SinhVien nó tương tự ta khai báo int x ; Vậy để lấy thơng tin bên teo làm nào? Những thông tin mà nằm bên cấu trúc (struct) gọi thuộc tính cấu trúc Tức teo đối tượng cụ thể, teo có thuộc tính là: ma, ten,dtb,lop để truy xuất tới thuộc tính ta dùng: tên_đối_tượng thuộc_tính Trung Tâm Tin Học – Ngành Mạng Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 3.1 Truy cập biến cấu trúc Dùng toán tử dấu chấm (dot operator) để truy cập thành viên biến cấu trúc Cú pháp: varNames.memberName Ví dụ: strcpy(sv1.MaSv, “a001”); strcpy(sv1.TenSv,“Nguyen van A”); sv2.Namsinh=1977; Trung Tâm Tin Học – Ngành Mạng Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 3.2 Lệnh gán cấu trúc Dùng lệnh gán để gán nội dung biến cấu trúc cho biến cấu trúc khác có kiểu Ví dụ: struct coordXY { int x; int y; } diemA, diemB; diemA.x = 100; diemA.y = 200; Trung Tâm Tin Học – Ngành Mạng Thiết Bị Di Động 10 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Truyền tham số kiểu cấu trúc Ví dụ: Truyền tham trị struct diem { int x; int y; }; double khcach(int x1, int y1, int x2, int y2) { double kc; kc=sqrt(pow((x2-x1),2)+pow((y2-y1),2)); return kc; } Trung Tâm Tin Học – Ngành Mạng Thiết Bị Di Động 21 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Truyền tham số kiểu cấu trúc Ví dụ: Truyền tham trị void main() { diem a,b; double kcach; cout