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

Bài giảng Tin học đại cương - Bài 7: Cấu trúc

Chia sẻ: Nguyễn Thanh Hồng | Ngày: | Loại File: PPT | Số trang:31

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

Bài giảng Tin học đại cương - Bài 6: Cấu trúc trình bày khái niệm cấu trúc; khai báo và sử dụng cấu trúc; xử lý dữ liệu cấu trúc; mảng cấu trúc; một số bài tập vận dụng.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Tin học đại cương - Bài 7: Cấu trúc

  1. KHOA  C¤NG NGHÖ  TH¤NG TIN FACULTY OF  INFORMATION  TECHNOLOGY TIN HỌC ĐẠI CƯƠNG PHẦN 2: LẬP TRÌNH BẰNG NGÔN NGỮ C BÀI 7: CẤU TRÚC (struct) 1
  2. Bài 7: Cấu trúc (struct) 7.1. Khái niệm cấu trúc 7.2. Khai báo và sử dụng cấu trúc 7.3. Xử lí dữ liệu cấu trúc 7.4. Mảng cấu trúc 7.5. Bài tập 2
  3. Bài 7: Cấu trúc (struct) 7.1. Khái niệm cấu trúc 7.2. Khai báo và sử dụng cấu trúc 7.3. Xử lí dữ liệu cấu trúc 7.4. Mảng cấu trúc 7.5. Bài tập 3
  4. 7.1. Khái niệm cấu trúc Trong C, structure (gọi tắt là struct) ~ kiểu dữ liệu bản ghi (record) trong Pascal. Kiểu dữ liệu cấu trúc (struct) là kiểu dữ liệu phức hợp bao gồm nhiều thành phần, mỗi thành phần có thể thuộc những kiểu dữ liệu khác nhau. Các thành phần dữ liệu trong cấu trúc được gọi là các trường dữ liệu (field). 4
  5. 7.1. Khái niệm cấu trúc (tiếp) “Mô tả” đối tượng có nhiều phần thông tin, ví dụ quản lý hồ sơ cán bộ, sinh viên… Ví dụ: Cấu trúc mô tả sinh viên:  Cần lưu giữ các thông tin liên quan đến sinh viên như họ tên, tuổi, kết quả học tập…  Mỗi thông tin thành phần lại có kiểu dữ liệu khác nhau Họ tên có kiểu dữ liệu là xâu kí tự Tuổi có kiểu dữ liệu là số nguyên Kết quả học tập có kiểu dữ liệu là số thực. 5
  6. Bài 7: Cấu trúc (struct) 7.1. Khái niệm cấu trúc 7.2. Khai báo và sử dụng cấu trúc 7.3. Xử lí dữ liệu cấu trúc 7.4. Mảng cấu trúc 7.5. Bài tập 6
  7. 7.2.1. Khai báo kiểu dữ liệu cấu trúc Cú pháp: struct ten_cau_truc { ; }; Ví dụ: struct Sinh_Vien { char ma_so_sinh_vien[10]; char ho_va_ten[30]; float diem_TinDC; }; 7
  8. 7.2.2. Khai báo biến cấu trúc Cú pháp: ten_cau_truc ten_bien_cau_truc; Hoặc: struct ten_cau_truc ten_bien_cau_truc; Ví dụ: Sinh_Vien a, b, c; Hoặc: struct Sinh_Vien a, b, c; 8
  9. 7.2.3. Khai báo kết hợp Có thể kết hợp vừa khai báo kiểu dữ liệu cấu trúc vừa khai báo biến cấu trúc: struct [ten_cau_truc] { //khai_bao_cac_truong; } ten_bien_cau_truc; Ví dụ: struct Thi_Sinh { char SBD[10]; // so bao danh char ho_va_ten[30]; float ket_qua; } ts1, ts2; 9
  10. Struct lồng nhau Struct có thể lồng nhau. Ví dụ: struct Dia_Chi{//địa chỉ int so_nha; char ten_pho[20]; char thanh_pho[20]; }; struct Nhan_Su{ //nhân sự char ho_ten[20]; Dia_Chi address; //trường address có kiểu địa chỉ float he_so_luong; }; 10
  11. 7.2.4. Định nghĩa kiểu dữ liệu cấu trúc với  typedef Đặt tên mới cho kiểu dữ liệu cấu trúc cú pháp: typedef struct tên_cũ ten_moi; Hoặc có thể định nghĩa kiểu dữ liệu cấu trúc ngay khi khai báo bằng cú pháp typedef struct [tên_cũ] { //khai_bao_cac_truong; }danh_sach_cac_tên_mới; Lưu ý: Được phép đặt tên_mới trùng với  tên_cũ. 11
  12. 7.2.4. Định nghĩa kiểu dữ liệu cấu trúc  với typedef (tiếp) Ví dụ: struct point_3D { float x, y, z; } P; struct point_3D M; typedef struct point_3D p_3D; p_3D N; 12
  13. 7.2.4. Định nghĩa kiểu dữ liệu cấu trúc  với typedef (tiếp) Ví dụ (tiếp): typedef struct hocsinh { char hoten[35]; char lop[7]; float diemtoan, diemly, diemhoa; } HOCSINH; HOCSINH hs1, hs2; 13
  14. Bài 7: Cấu trúc (struct) 7.1. Khái niệm cấu trúc 7.2. Khai báo và sử dụng cấu trúc 7.3. Xử lý dữ liệu cấu trúc 7.4. Mảng cấu trúc 7.5. Bài tập 14
  15. 7.3. Xử lý dữ liệu cấu trúc Truy nhập các trường dữ liệu của cấu trúc Phép gán giữa các biến cấu trúc Con trỏ cấu trúc 15
  16. 7.3.1. Truy nhập các trường dữ liệu của cấu trúc Cú pháp: ten_bien_cau_truc.ten_truong Ví dụ: struct point_2D { char ten_diem; float x, y; } p; Truy cập tên của 1 điểm: p.ten_diem 16
  17. Vấn đề vào ra dữ liệu cho các biến struct Cũng như dữ liệu kiểu mảng, không thể nhập/xuất dữ liệu trực tiếp cho struct mà cần phải nhập/xuất dữ liệu lần lượt cho từng trường của struct. Ví dụ, để nhập dữ liệu cho biến sv1, có thể viết như sau: printf(“Nhap SBD:”); scanf(“%d”,&sv1.sbd); printf(“Nhap ho ten:”); fflush(stdin); //xoá bộ đệm, nếu không sv1.sbd sẽ nhận giá trị “3” !!! gets(sv1.ho_ten); printf(“Nhap diem thi:”); scanf(“%f”,&sv1.diem_thi); //In kết quả ra màn hình: printf(“SBD:%d\nHo ten:%s\nDiem: %d”,sv1.sbd,sv1.ho_ten,sv1.diem_thi); 17
  18. 7.3.2. Phép gán giữa các biến cấu trúc Giả sử ta có 2 biến cấu trúc là a và b có  cùng kiểu dữ liệu là một cấu  trúc nào đó. Phép gán cấu trúc có cú pháp tương tự  như phép gán thông thường: bien_cau_truc_1 = bien_cau_truc_2; 18
  19. 7.3.3. Con trỏ cấu trúc Cú pháp: struct ten_cau_truc *ten_bien_con_tro_ctruc; Có 2 cách truy nhập vào trường dữ liệu của cấu trúc từ biến con trỏ cấu trúc là (*ten_bien_con_tro_ctruc).ten_truong_du_lieu Hoặc: ten_bien_con_tro_ctruc->ten_truong_du_lieu 19
  20. Con trỏ struct Ví dụ: struct SinhVien *p; //hoac SinhVien *p; struct SinhVien sv, *psv;//psv là con trỏ printf(“Nhap SBD:”);scanf(“%d”,&sv.sbd); psv = &sv;//lấy địa chỉ của biến sv printf(“SBD vua nhap:%d”, psv->sbd); printf(“Nhap lai SBD:”); scanf(“%d”,&(psv->sbd)); printf(“SBD vua nhap:%d”, (*psv).sbd); 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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