intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Nhập môn lập trình: Dữ liệu kiểu cấu trúc - Nguyễn Đình Hưng

Chia sẻ: Hấp Hấp | Ngày: | Loại File: PDF | Số trang:33

81
lượt xem
7
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Nhập môn lập trình - Dữ liệu kiểu 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 (struct), khai báo và truy xuất kiểu cấu trúc, kiểu dữ liệu hợp nhất (union), bài tập. Mời các bạn cùng tham khảo nội dung chi tiết. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Nhập môn lập trình: Dữ liệu kiểu cấu trúc - Nguyễn Đình Hưng

  1. NHẬP MÔN LẬP TRÌNH DỮ LIỆU KIỂU CẤU TRÚC 1
  2. Nội dung 1 Khái niệm kiểu cấu trúc (struct) 2 Khai báo & truy xuất kiểu cấu trúc 3 Kiểu dữ liệu hợp nhất (union) 4 Bài tập Dữ liệu kiểu cấu trúc 2
  3. Đặt vấn đề ™Thông tin 1 SV ƒ MSSV : kiểu chuỗi ƒ Tên SV : kiểu chuỗi ƒ NTNS : kiểu chuỗi ƒ Phái : kiểu ký tự ƒ Điểm Toán, Lý, Hóa : kiểu số thực ™Yêu cầu ƒ Lưu thông tin n SV? ƒ Truyền thông tin n SV vào hàm? Dữ liệu kiểu cấu trúc 3
  4. Đặt vấn đề ™Khai báo các biến để lưu trữ 1 SV ƒ char mssv[7]; // “0012078” ƒ char hoten[30]; // “Nguyen Van A” ƒ char ntns[8]; // “29/12/82” ƒ char phai; // ‘n’ ƒ float toan, ly, hoa;// 8.5 9.0 10.0 ™Truyền thông tin 1 SV cho hàm ƒ void xuat(char *mssv, char *hoten, char *ntns, char phai, float toan, float ly, float hoa); Dữ liệu kiểu cấu trúc 4
  5. Đặt vấn đề ™Nhận xét ƒ Đặt tên biến khó khăn và khó quản lý ƒ Truyền tham số cho hàm quá nhiều ƒ Tìm kiếm, sắp xếp, sao chép,… khó khăn ƒ Tốn nhiều bộ nhớ ƒ… ™Ý tưởng ƒ Gom những thông tin của cùng 1 SV thành một kiểu dữ liệu mới => Kiểu struct Dữ liệu kiểu cấu trúc 5
  6. Khai báo kiểu cấu trúc ™Cú pháp struct { ; … ; }; ™Ví dụ struct DIEM { int x; int y; }; Dữ liệu kiểu cấu trúc 6
  7. Khai báo biến cấu trúc ™Cú pháp tường minh struct { ; … ; } , ; ™Ví dụ struct DIEM { int x; int y; } diem1, diem2; Dữ liệu kiểu cấu trúc 7
  8. Khai báo biến cấu trúc ™Cú pháp không tường minh struct { ; … ; }; struct ; ™Ví dụ struct DIEM { int x; int y; }; struct DIEM diem1, diem2;// C++ có thể bỏ struct Dữ liệu kiểu cấu trúc 8
  9. Sử dụng typedef ™Cú pháp typedef struct { ; … ; } ; ; ™Ví dụ Dữ liệu kiểu cấu trúc 9
  10. Khởi tạo cho biến cấu trúc ™Cú pháp tường minh struct { ; … ; } = {,…,}; ™Ví dụ struct DIEM { int x; int y; } diem1 = {2912, 1706}, diem2; Dữ liệu kiểu cấu trúc 10
  11. Truy xuất dữ liệu kiểu cấu trúc ™Đặc điểm ƒ Không thể truy xuất trực tiếp ƒ Thông qua toán tử thành phần cấu trúc . hay còn gọi là toán tử chấm (dot operation) . ™Ví dụ struct DIEM { int x; int y; } diem1; printf(“x = %d, y = %d”, diem1.x, diem1.y); Dữ liệu kiểu cấu trúc 11
  12. Gán dữ liệu kiểu cấu trúc ™Có 2 cách = ; . = ; ™Ví dụ struct DIEM { int x, y; } diem1 = {2912, 1706}, diem2; … diem2 = diem1; diem2.x = diem1.x; diem2.y = diem1.y * 2; Dữ liệu kiểu cấu trúc 12
  13. Cấu trúc phức tạp ™Thành phần của cấu trúc là cấu trúc khác struct DIEM { int x; int y; }; struct HINHCHUNHAT { struct DIEM traitren; struct DIEM phaiduoi; } hcn1; … hcn1.traitren.x = 2912; hcn1.traitren.y = 1706; Dữ liệu kiểu cấu trúc 13
  14. Cấu trúc phức tạp ™Thành phần của cấu trúc là mảng struct SINHVIEN { char hoten[30]; float toan, ly, hoa; } sv1; … strcpy(sv1.hoten, “Nguyen Van A”); sv1.toan = 10; sv1.ly = 6.5; sv1.hoa = 9; Dữ liệu kiểu cấu trúc 14
  15. Cấu trúc phức tạp ™Cấu trúc đệ quy (tự trỏ) struct PERSON { char hoten[30]; struct PERSON *father, *mother; }; struct NODE { int value; struct NODE *pNext; }; Dữ liệu kiểu cấu trúc 15
  16. Cấu trúc phức tạp ™Thành phần của cấu trúc có kích thước theo bit struct bit_fields { int bit_0 : 1; int bit_1_to_4 : 4; int bit_5 : 1; int bit_6_to_15 : 10; }; 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Dữ liệu kiểu cấu trúc 16
  17. Kích thước của struct ™Ví dụ struct A { int a; double b; }; sizeof(A) = ??? struct B1 struct B2 { { int a; int a; int b; double c; double c; int b; }; }; sizeof(B1) = ??? sizeof(B2) = ??? Dữ liệu kiểu cấu trúc 17
  18. Chỉ thị #pragma pack ™Chỉ thị #pragma pack (n) ƒ n = 1, 2, 4, 8, 16 (byte) ƒ Biên lớn nhất của các thành phần trong struct • BC n mặc định là 1 • VC++ n mặc định là 8 • Project settings Æ Compile Option C/C++ Æ Code Generation Æ Structure Alignment ƒ Canh biên cho 1 cấu trúc #pragma pack(push, 1) struct MYSTRUCT { … }; #pragma pack(pop) Dữ liệu kiểu cấu trúc 18
  19. #pragma pack ™Ví dụ: không có #pragma pack (1) struct A { double a; a a a a a a a a int b; int c; b b b b c c c c }; struct B { int b; b b b b đệm 4B double a; a a a a a a a a int c; }; c c c c đệm 4B struct C { int b; b b b b c c c c int c; double a; a a a a a a a a }; Dữ liệu kiểu cấu trúc 19
  20. Các lưu ý về cấu trúc ™Lưu ý ƒ Kiểu cấu trúc được định nghĩa để làm khuôn dạng còn biến cấu trúc được khai báo để sử dụng khuôn dạng đã định nghĩa. ƒ Trong C++, có thể bỏ từ khóa struct khi khai báo biến (hoặc sử dụng typedef) ƒ Khi nhập các biến kiểu số thực trong cấu trúc phải nhập thông qua một biến trung gian. struct DIEM { float x, y;} d1; float temp; scanf(“%f”, &temp); d1.x = temp; Dữ liệu kiểu cấu trúc 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2