Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 31 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
31
Dung lượng
1,39 MB
Nội dung
1 1 TIN HỌC ĐẠI CƯƠNG TIN HỌC ĐẠI CƯƠNG PHẦN 2: LẬP TRÌNH BẰNG NGÔN NGỮ C PHẦN 2: LẬP TRÌNH BẰNG NGÔN NGỮ C BÀI 7: BÀI 7: CẤU TRÚC (struct) CẤU TRÚC (struct) KHOA KHOA C¤NG NGHÖ C¤NG NGHÖ TH¤NG TIN TH¤NG TIN FACULTY OF FACULTY OF INFORMATION TECHNOLOGY INFORMATION TECHNOLOGY 2 2 Bài 7: Cấu trúc (struct) Bài 7: Cấu trúc (struct) 7.1. Khái niệm cấu trúc 7.1. Khái niệm cấu trúc 7.2. Khai báo và sử dụng 7.2. Khai báo và sử dụng cấu trúc cấu trúc 7.3. Xử lí dữ liệu cấu 7.3. Xử lí dữ liệu cấu trúc trúc 7.4. Mảng cấu trúc 7.4. Mảng cấu trúc 7.5. Bài tập 7.5. Bài tập 3 3 Bài 7: Cấu trúc (struct) Bài 7: Cấu trúc (struct) 7.1. Khái niệm cấu trúc 7.1. Khái niệm cấu trúc 7.2. Khai báo và sử dụng 7.2. Khai báo và sử dụng cấu trúc cấu trúc 7.3. Xử lí dữ liệu cấu 7.3. Xử lí dữ liệu cấu trúc trúc 7.4. Mảng cấu trúc 7.4. Mảng cấu trúc 7.5. Bài tập 7.5. Bài tập 4 4 7.1. Khái niệm cấu trúc 7.1. Khái niệm cấu trúc Trong C, structure (gọi tắt là Trong C, structure (gọi tắt là struct) ~ kiểu dữ liệu bản ghi struct) ~ kiểu dữ liệu bản ghi (record) trong Pascal. (record) trong Pascal. Kiểu dữ liệu cấu trúc ( Kiểu dữ liệu cấu trúc ( struct struct ) là ) là kiểu dữ liệu phức hợp bao gồm nhiều 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ể thành phần, mỗi thành phần có thể thuộc những kiểu dữ liệu khác nhau. thuộc những kiểu dữ liệu khác nhau. Các thành phần dữ liệu trong cấu 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 trúc được gọi là các trường dữ liệu ( ( field field ). ). 5 5 7.1. Khái niệm cấu trúc (tiếp) 7.1. Khái niệm cấu trúc (tiếp) “ “ Mô tả” đối tượng có nhiều phần Mô tả” đối tượng có nhiều phần thông tin, ví dụ quản lý hồ sơ cán thông tin, ví dụ quản lý hồ sơ cán bộ, sinh viên… bộ, sinh viên… Ví dụ: Cấu trúc mô tả 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 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… 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 Mỗi thông tin thành phần lại có kiểu dữ liệu khác nhau nhau Họ tên có kiểu dữ liệu là xâu kí tự 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 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. Kết quả học tập có kiểu dữ liệu là số thực. 6 6 Bài 7: Cấu trúc (struct) Bài 7: Cấu trúc (struct) 7.1. Khái niệm cấu trúc 7.1. Khái niệm cấu trúc 7.2. Khai báo và sử dụng 7.2. Khai báo và sử dụng cấu trúc cấu trúc 7.3. Xử lí dữ liệu cấu 7.3. Xử lí dữ liệu cấu trúc trúc 7.4. Mảng cấu trúc 7.4. Mảng cấu trúc 7.5. Bài tập 7.5. Bài tập 7 7 7.2.1. Khai báo kiểu dữ liệu cấu trúc 7.2.1. Khai báo kiểu dữ liệu cấu trúc Cú pháp: Cú pháp: struct ten_cau_truc struct ten_cau_truc { { <khai_bao_cac_truong_du_lieu>; <khai_bao_cac_truong_du_lieu>; }; }; Ví dụ: Ví dụ: struct Sinh_Vien struct Sinh_Vien { { char ma_so_sinh_vien[10]; char ma_so_sinh_vien[10]; char ho_va_ten[30]; char ho_va_ten[30]; float diem_TinDC; float diem_TinDC; }; }; 8 8 7.2.2. Khai báo biến cấu trúc 7.2.2. Khai báo biến cấu trúc Cú pháp: Cú pháp: ten_cau_truc ten_bien_cau_truc; ten_cau_truc ten_bien_cau_truc; Hoặc: Hoặc: struct ten_cau_truc ten_bien_cau_truc; struct ten_cau_truc ten_bien_cau_truc; Ví dụ: Ví dụ: Sinh_Vien a, b, c; Sinh_Vien a, b, c; Hoặc: Hoặc: struct Sinh_Vien a, b, c; struct Sinh_Vien a, b, c; 9 9 7.2.3. Khai báo kết hợp 7.2.3. Khai báo kết hợp Có thể kết hợp vừa khai báo kiểu dữ 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 liệu cấu trúc vừa khai báo biến cấu trúc: trúc: struct [ten_cau_truc] struct [ten_cau_truc] { { //khai_bao_cac_truong; //khai_bao_cac_truong; } ten_bien_cau_truc; } ten_bien_cau_truc; Ví dụ: Ví dụ: struct Thi_Sinh struct Thi_Sinh { { char SBD[10]; // so bao danh char SBD[10]; // so bao danh char ho_va_ten[30]; char ho_va_ten[30]; float ket_qua; float ket_qua; } ts1, ts2; } ts1, ts2; 10 10 Struct lồng nhau Struct lồng nhau Struct có thể lồng nhau. Ví dụ: Struct có thể lồng nhau. Ví dụ: struct Dia_Chi{//địa chỉ struct Dia_Chi{//địa chỉ int so_nha; int so_nha; char ten_pho[20]; char ten_pho[20]; char thanh_pho[20]; char thanh_pho[20]; }; }; struct Nhan_Su{ //nhân sự struct Nhan_Su{ //nhân sự char ho_ten[20]; char ho_ten[20]; Dia_Chi address; //trường address có kiểu địa chỉ Dia_Chi address; //trường address có kiểu địa chỉ float he_so_luong; float he_so_luong; }; }; [...]... (*ten_bien_con_tro_ctruc).ten_truong_du_lieu Hoặc: ten_bien_con_tro_ctruc->ten_truong_du_lieu 19 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 Chú ý Trong... scanf(“%f”,&diem); sv[i].diem_thi = diem; } 26 Ví dụ (tiếp) printf(“\n Thong tin ve cac sinh vien”); for(i=0;isbd)); printf(“SBD vua nhap:%d”, (*psv).sbd); 20 Chú ý Trong ví dụ trước, chúng ta rút ra một số nhận xét: &sv cho ta địa chỉ của struct sv *psv là nội dung của bản ghi có địa chỉ là psv psv->sbd và (*psv).sbd là tương đương 21 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 22 7.4 Mảng cấu trúc Cú pháp: . sv printf(“SBD vua nhap:%d”, psv->sbd); printf(“SBD vua nhap:%d”, psv->sbd); printf(“Nhap lai SBD:”); printf(“Nhap lai SBD:”); scanf(“%d”,&(psv->sbd)); scanf(“%d”,&(psv->sbd)); printf(“SBD. là (* (* ten_bien_con_tro_ctruc ten_bien_con_tro_ctruc ). ). ten_truong_du_lieu ten_truong_du_lieu Hoặc: Hoặc: ten_bien_con_tro_ctruc ten_bien_con_tro_ctruc -& gt; -& gt; ten_truong_du_lieu ten_truong_du_lieu 20 20 Con trỏ struct Con trỏ struct Ví dụ: Ví dụ: struct