Bài giảng Tin học đại cương - Phần 3: Lập trình C - Chương 6: Cấu trúc

Phần 3: Lập trì nh C  
Nội dung chí nh  
• Chương 1: Tổng quan về ngôn ngữ C  
• Chương 2: Kiểu dữ liệu và biểu thức trong C  
• Chương 3: Vào ra dữ liệu  
• Chương 4: Cấu trúc điều khiển  
• Chương 5: Mảng, con trỏ và xâu ký tự  
• Chương 6: Cấu trúc  
• Chương 7: Hàm  
• Chương 8: Tệp dữ liệu  
01-Jan-16  
346  
Chương 6: Cấu trúc  
Nội dung chí nh  
1. Khá i niệm cấu trúc  
• Khá i niệm  
2. Khai bá o cấu trúc  
• Khá i bá o kiểu cấu trúc  
• Khai báo biến cấu trúc  
• Định nghĩa kiểu dữ liệu với typedef  
3. Xử lý dữ liệu cấu trúc  
• Truy nhập các trường dữ liệu  
• Phé p gá n giữa cá c biến cấu trúc  
4. Một số ví dụ  
01-Jan-16  
347  
Chương 6: Cấu trúc  
6.1 Khái niệm cấu trúc  
Ví dụ → Bài toá n quản lý thí sinh thi đại học  
Để quản lý cần lưu trữ các thô ng tin  
• Số báo danh: Số nguyên khô ng dấu  
• Họ tên sinh viên: Chuỗi ký tự không quá 30  
• Khối thi: Ký tự (A,B,C..)  
• Tổng điểm 3 môn thi: kiểu thực  
Do vậy với mỗi sinh viên cần các biến  
unsigned SBD;  
char  
char  
float  
Ten[30];  
KhoiThi;  
KetQua;  
01-Jan-16  
348  
Chương 6: Cấu trúc  
6.1 Khái niệm cấu trúc  
Ví dụ → Bài toá n quản lý thí sinh thi đại học (tiếp)  
Để quản lý danh sá ch (dưới 1000) thí sinh dự  
thi, cần nhiều mảng rời rạc  
#define MAX 1000  
unsigned DS_SBD[MAX];  
char  
char  
float  
DS_Ten[MAX][30];  
DS_KhoiThi[MAX];  
DS_KetQua[MAX];  
01-Jan-16  
349  
Chương 6: Cấu trúc  
6.1 Khái niệm cấu trúc  
Ví dụ → Bài toá n quản lý thí sinh thi đại học (tiếp)  
DS_SBD  
456  
789  
123  
Mảng ký tự  
DS_Ten  
Nguyễn  
Hoàng  
Nguyễn  
VănAn  
TrầnAn  
Nghĩa  
DS_KhoiThi  
DS_KetQua  
A D A  
28.5  
22.0  
24.5  
Biến điều khiển  
dùng duyệt mảng  
TS: TiS: iT+S1:i+2  
01-Jan-16  
350  
Chương 6: Cấu trúc  
6.1 Khái niệm cấu trúc  
Ví dụ → Vấn đề & giải phá p  
Dùng nhiều mảng  
- Khó quản lý, dễ nhầm lẫn  
- Không thể hiện cấu trúc thô ng tin dành cho từng  
thí sinh  
Mảng các cấu  
trúc thô ng tin  
dành cho thí sinh  
Cấu trúc thô ng tin  
dành cho một thí sinh  
THÔ NG TIN THÍ SINH  
THÔ NG TIN THÍ SINH  
………  
bá o danh:
THÔ NG TIN THÍ SINH  
THÔ NG TIN THÍ SINH  
.
………  
…
Số bá o danh:…………………  
……….  
…
Họ và Tên:……………………  
……….  
.
.
Khối thi:……………………….  
Mỗi phần tử của mảng  
là một cấu trúc thô ng tin  
Kết quả:……………………….  
01-Jan-16  
Chương 6: Cấu trúc  
6.1 Khái niệm cấu trúc  
Khá i niệm  
• Cấu trúc là kiểu dữ liệu phức hợp, do người  
dụng tự định nghĩa  
– Kiểu cấu trúc bao gồm nhiều thành phần có thể  
thuộc các kiểu dữ liệu khác nhau  
– Các thành phần: gọi là trường dữ liệu (field)  
– Cá c thành phần, không được truy nhập theo chỉ  
số (như mảng) mà theo tên của trường.  
Có thể coi một biến cấu trúc là một tập hợp của một  
hay nhiều biến rời rạc, thường có kiểu khá c nhau  
thành một biến có một tên duy nhất để dễ dàng  
quản lý và sử dụng  
01-Jan-16  
352  
Chương 6: Cấu trúc  
6.1 Khái niệm cấu trúc  
Khái niệm → Ví dụ  
• Kết quả học tập của sinh viên  
– TenSV: Chuỗi ký tự  
– MaSV: Chuỗi số/ số nguyên  
– Điem: Số thực  
• Điểm trong mặt phẳng  
– Tên điểm: Ký tự (A, B, C..)  
– Hoành độ: Số thực  
– Tung độ: Số thực  
01-Jan-16  
353  
Chương 6: Cấu trúc  
Nội dung chí nh  
1. Khá i niệm cấu trúc  
• Khá i niệm  
2. Khai bá o cấu trúc  
• Khá i bá o kiểu cấu trúc  
• Khai báo biến cấu trúc  
• Định nghĩa kiểu dữ liệu với typedef  
3. Xử lý dữ liệu cấu trúc  
• Truy nhập các trường dữ liệu  
• Phé p gá n giữa cá c biến cấu trúc  
4. Một số ví dụ  
01-Jan-16  
354  
Chương 6: Cấu trúc  
6.2 Khai báo cấu trúc  
Khai bá o kiểu cấu trúc  
struct Tên_kiểu_cấu_ trúc {  
<Khai bá o cá c trường dữ liệu>  
};  
• struct: từ khóa, cho phép người dùng khai báo  
kiểu dữ liệu mới: kiểu cấu trúc  
• Tên_kiểu_cấu_truc: Tên của kiểu cấu trúc do  
người dùng tự định nghĩa  
– Tuâ n theo nguyên tắc đặt tên đối tượng trong C  
• Khai báo các trường dữ liệu: Danh sá ch cá c  
khai bá o thành phần (trường:field) của cấu trúc  
– Giống khai bá o biến  
– Cá c trường có thể có kiểu bất kỳ  
01-Jan-16  
355  
Chương 6: Cấu trúc  
6.2 Khai báo cấu trúc  
Khai bá o kiểu cấu trúc → Ví dụ  
Thẻ sinh viên  
struct SinhVien{  
char SHSV[10];  
char Ten[30];  
int NS;  
int Khoa;  
char Lop [10];  
};  
Số hiệu:…(Chuỗi ký tự)..  
Tên sinh viên: (Chuỗi ký tự)  
Năm sinh:…(Số nguyên)…  
Khóa:……(Số nguyên)…….  
Lớp:…… :.(Chuỗi ký tự). …  
Point2D  
struct Point{  
float x, y;  
};  
Hoành độ (x)…(Số thực)..  
Tung độ (y)…..(Số thực)..  
01-Jan-16  
356  
Chương 6: Cấu trúc  
6.2 Khai báo cấu trúc  
Khai bá o biến cấu trúc  
• Khai bá o kiểu cấu trúc nhằm tạo định nghĩa  
toàn thể cho các cấu trúc sẽ được dùng  
sau này  
– Không cung cấp không gian nhớ cho kiểu  
• Khai bá o biến cấu trúc nhằm yêu cầu  
chương trình tạo vùng nhớ để lưu trữ cá c  
dữ liệu cho biến cấu trúc  
– Chứa dữ liệu của các trường của cấu trúc  
01-Jan-16  
357  
Chương 6: Cấu trúc  
6.2 Khai báo cấu trúc  
Khai bá o biến cấu trúc → Cú phá p  
Tồn tại định nghĩa kiểu cấu trúc  
struct Kiểu_cấu_ trúc Tên_biến;  
Khai báo trực tiếp  
struct {  
<Khai bá o cá c trường dữ liệu>  
}Tên_biến;  
Kết hợp với khai báo kiểu  
struct Kiểu_cấu_ trúc {  
<Khai bá o cá c trường dữ liệu>  
}Tên_biến;  
01-Jan-16  
358  
Chương 6: Cấu trúc  
6.2 Khai báo cấu trúc  
Khai bá o biến cấu trúc → Ví dụ  
Tồn tại định nghĩa kiểu cấu trúc  
struct SinhVien SV1, SV2, Thu khoa;  
Khai báo trực tiếp  
struct {  
float x, y; //Tọa độ trên mặt phẳng  
}A, B; //Khai bá o 2 điểm A, B  
Kết hợp với khai báo kiểu  
struct Point_3D{  
float x, y, z;// Tọa độ khô ng gian  
}A, B;  
01-Jan-16  
359  
Chương 6: Cấu trúc  
6.2 Khai báo cấu trúc  
Khai bá o biến cấu trúc →Chú ý  
Cá c cấu trúc có thể được khai báo lồng nhau  
struct diem_thi {  
float dToan, dLy, dHoa;  
}
struct thi_sinh{  
char SBD[10];  
char ho_va_ten[30];  
struct diem_thi ket_qua;  
} thi_sinh_1, thi_sinh_2;  
01-Jan-16  
360  
Chương 6: Cấu trúc  
6.2 Khai báo cấu trúc  
Khai bá o biến cấu trúc →Chú ý  
Có thể khai báo trực tiếp các trường dữ liệu  
của một cấu trúc bên trong cấu trúc khá c  
struct thi_sinh{  
char SBD[10];  
char ho_va_ten[30];  
struct{  
float dToan, dLy, dHoa;  
} ket_qua;  
} thi_sinh_1, thi_sinh_2;  
01-Jan-16  
361  
Chương 6: Cấu trúc  
6.2 Khai báo cấu trúc  
Khai bá o biến cấu trúc →Chú ý  
Có thể gán giá trị khởi đầu cho một biến cấu  
trúc, theo nguyên tắc như kiểu mảng  
struct SinhVien{  
char Ten[20];  
struct Date{  
Ví dụ:  
struct Date{  
int day;  
int month;  
int year;  
int day;  
int month;  
int year;  
};  
} NS;  
struct SinhVien{  
char Ten[30];  
} SV = {“Tran Anh", 20,12,1990 };  
struct Date NS;  
} SV = {“Tran Anh", 20, 12, 1990 };  
01-Jan-16  
362  
Chương 6: Cấu trúc  
6.2 Khai báo cấu trúc  
Định nghĩa kiểu dữ liệu với typedef  
typedef <tên_cũ> <tên_mới>;  
Mục đích  
• Đặt tên mới đồng nghĩa với tên của một kiểu  
dữ liệu đã được định nghĩa  
– Thường được sử dụng cho kiểu cấu trúc  
• Giúp cho khai bá o trở nên quen thuộc và ít bị sai hơn  
Ví dụ  
typedef char Str80[80] ;  
typedef long mask;  
Str80 str="Bonjour tout le monde !";  
mask a, b;  
01-Jan-16  
363  
Chương 6: Cấu trúc  
6.2 Khai báo cấu trúc  
Định nghĩa kiểu dữ liệu với typedef  
Thường được kết hợp với kiểu cấu trúc để  
khai bá o một bí danh cho một cấu trúc  
– Giúp khai bá o trở nên quen thuộc và ít bị sai hơn  
typedef struct { //Định nghĩa một cấu trúc  
char SHSV[10];  
char Ten[30];  
int NS;  
int Khoa;  
char Lop [10];  
} SinhVien;  
//Đặt tên cho cấu trúc là SinhVien  
//Tạo một biến cấu trúc  
SinhVien SV;  
01-Jan-16  
364  
Chương 6: Cấu trúc  
6.2 Khai báo cấu trúc  
Định nghĩa kiểu dữ liệu với typedef →Chú ý  
Cho phép đặt tên mới trùng với tên cũ  
typedef struct {  
float x, y, z;  
}point_3D;  
point_3D M;  
point_3D N;  
Ví dụ  
struct point_3D{  
float x, y, z;  
}
struct point_3D M;  
typedef struct point_3D point_3D;  
point_3D N;  
01-Jan-16  
365  
Tải về để xem bản đầy đủ
pptx 58 trang baolam 17500 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Phần 3: Lập trình C - Chương 6: Cấu trúc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pptxbai_giang_tin_hoc_dai_cuong_phan_3_lap_trinh_c_chuong_6_cau.pptx