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

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 và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
1. Khái niệm kiểu cấu trúc  
2. Khai báo cấu trúc  
3. Các thao tác cơ bản  
4. Mảng cấu trúc và các thao tác  
5. Enumerations - Typedef  
2
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
1. Khái niệm  
❖Ngôn ngữ C/C++ đưa ra 5 cách để tạo nên một kiểu dữ  
liệu tùy biến (custom data types).  
1. Structure:Là một nhóm của các biến được định nghĩa  
dưới một tên. Kiểu này còn gọi là kiểu dữ liệu  
phức hợp.  
2. Bit-field:là một biến thể của kiểu structure và cho  
phép dễ dàng truy cập đến từng bit riêng rẽ.  
3. Union: cho phép cùng một mẫu bộ nhớ được định  
nghĩa như hai hay nhiều kiểu biến khác nhau.  
4. Enumeration: là danh sách của các tên hằng nguyên.  
5. Typedef: định nghĩa một tên khác cho một kiểu dữ liệu  
đã có.  
3
Trung Tâm Tin Học – Ngành Mạng và 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 1  
phần mềm quản lý sinh viên, thông tin cần lưu trữ  
cho mỗi 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 này chúng ta cần giải quyết  
vấn đề : 1 dữ liệu có khả năng chứa nhiều thông  
tin trong nó.  
➔để giải quyết vấn đề này ta dùng kiểu dữ liệu  
có Cấu Trúc  
4
Trung Tâm Tin Học – Ngành Mạng và 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 là một tập các biến được tham  
chiếu thông qua một tên chung. Những biến  
tạo nên cấu trúc được gọi là các thành viên  
(members).  
• Sự khác biệt giữa kiểu cấu trúc và kiểu mảng  
là: các phần tử của mảng là cùng kiểu còn  
các phần tử của kiểu cấu trúc có thể có kiểu  
khác nhau.  
5
Trung Tâm Tin Học – Ngành Mạng và 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 lꢁ một kiểu dữ liệu do người dꢂng định  
nghĩa bằng cꢃch gom nhꢄm cꢃc kiểu dữ liệu cơ bản cꢄ sꢅn  
trong C thꢁnh một kiểu dữ liệu phức hợp nhiều thꢁnh phần.  
• structureName: Tên của  
struct tructureName  
cấu trꢀc  
{
• type: Kiểu dữ liệu của  
type member1;  
type member2;  
...  
thꢁnh viên tương ứng  
• Member1,..., memberN:  
Tên cꢃc biến thꢁnh viên  
của cấu trꢀc  
type memberN;  
.. .  
• varNames: Tên cꢃc biến  
cấu trꢀc phân cꢃch nhau  
bằng dấu phẩy.  
} varNames;  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
6
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
2. Khai báo kiểu cấu trúc  
Ví dụ:  
• Tạo một struct sinh viên gồm các thông tin: mã số sinh  
viên, họ tên, năm sinh, địa chỉ.  
struct sinhvien  
{
char MaSv[10];  
char TenSv[30];  
int Namsinh;  
char Diachi[50];  
};  
• Khai bꢃo biến kiểu sinhvien: sinhvien sv1, sv2;  
7
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
2. Khai báo kiểu cấu trúc  
Từ khóa typedef dùng để định nghĩa  
một kiểu dữ liệu mới  
Khi ta khai báo: SinhVien teo;  
Thì teo chính là 1 đối tượng có kiểu dữ  
liệu là SinhVien  
→nó tương tự như ta khai báo int x ;  
→Vậy để lấy các thông tin bên trong  
của teo thì làm như thế nào?  
→Những thông tin mà nằm bên trong 1  
cấu trúc (struct) thì được gọi là các  
thuộc tính của cấu trúc đꢄ  
→Tức là teo là 1 đối tượng cụ thể, teo  
có 4 thuộc tính đꢄ là: ma, ten,dtb,lop  
→để truy xuất tới các thuộc tính ta  
dùng:  
tên_đối_tượng thuộc_tính  
.
8
Trung Tâm Tin Học – Ngành Mạng và 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  
các thành viên của một 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;  
9
Trung Tâm Tin Học – Ngành Mạng và 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 trong 1 biến  
cấu trꢀc cho một biến cấu trꢀc khꢃc cꢄ cꢂng  
kiểu.  
❖Ví dụ:  
struct coordXY  
{
int x;  
int y;  
} diemA, diemB;  
diemA.x = 100; diemA.y = 200;  
10  
Trung Tâm Tin Học – Ngành Mạng và 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  
❖Gꢃn nội dung biến cấu trꢀc diemA cho biến  
diemB:  
diemB = diemA ;  
❖Hoặc có thể sao chép từng thành viên:  
diemB.x = diemA.x;  
diemB.y = diemA.y;  
11  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
3.3. Ví dụ  
❖Cách nhập dữ liệu có  
kiểu chuỗi từ bàn phím:  
dùng gets  
12  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
3.3. Ví dụ  
❖Viết chương trꢆnh nhập vꢁo toạ độ hai điểm trong mặt phꢇng vꢁ  
tính tổng hai toạ độ nꢁy  
*Bước 1: Khai bꢃo kiểu dữ liệu cꢄ cấu trꢀc biểu diễn thông  
tin tọa độ của một điểm trong mặt phꢇng gồm 2 thꢁnh phần:  
hoꢁnh độ vꢁ tung độ  
typedef struct ttDIEM  
{
int x;  
int y;  
};  
ttDIEM DIEM;  
13  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
3.3. Ví dụ  
*Bước 2: Cꢁi đặt cꢃc hàm:  
➢ Nhập vꢁo tọa độ điểm  
void Nhap (DIEM &d);  
➢ Xuất tọa độ điểm  
void Xuat (DIEM d);  
➢ Tính tổng hai tọa độ  
DIEM Tong (DIEM d1,DIEM d2);  
14  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
3.3. Ví dụ  
void Nhap (DIEM &d)  
{
cout<<“Hoanh do : “;  
cin>>d. x;  
cout“Tung do : ”;  
cin>>d.y;  
}
15  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
3.3. Ví dụ  
void Xuat (DIEM d)  
{
cout<<“\nToa do diem : (“ <<d.x<< “,”<<d.y<<”)”;  
}
DIEM Tong (DIEM d1,DIEM d2)  
{
DIEM temp;  
temp.x = d1.x + d2.x ;  
temp.y = d1.y + d2.y ;  
return Temp;  
}
16  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
3.3. Ví dụ  
void main ()  
{
DIEM A , B, AB; //khai bao 3 diem A, B, AB;  
cout<<“Nhap toa do diem thu 1: “<<endl;  
Nhap ( A );  
Xuat ( A );  
cout<<“Nhap toa do diem thu 2: “<<endl;  
Nhap ( B );  
Xuat ( B );  
cout<<“\n Tong toa do cua hai diem vua nhap la : ”;  
AB = Tong ( A, B);  
Xuat ( AB );  
}
17  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
4. Mảng các cấu trúc  
• Mảng cấu trꢀc lꢁ một mảng mꢁ mỗi phần tử  
lꢁ một biến kiểu cấu trꢀc.  
• Để khai bꢃo một mảng cꢃc cấu trꢀc, trước  
hết phải khai bꢃo cấu trꢀc, sau đꢄ khai bꢃo  
một mảng của cấu trꢀc đꢄ.  
Ví dụ: struct ds{  
char hoten[25];  
float toan,ly,hoa;  
};  
ds bangdiem[50];//mảng 50 phần tử kiểu ds  
18  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
4. Mảng các cấu trúc  
❖Để truy cập đến từng thành viên của từng phần tử  
của mảng, ta dùng chỉ mục của phần tử và toán tử  
thành viên (.).  
Ví dụ:  
for(int i=0; i<n; i++)  
{
cout <<"Ho va ten: "; gets(bangdiem[i].hoten)  
cout <<"Diem toan: "; cin >> bangdiem[i].toan;  
cout <<"Diem ly: "; cin >> bangdiem[i].ly;  
cout <<"Diem hoa "; cin >> bangdiem[i].hoa;  
}
19  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
5. Truyền tham số kiểu cấu trúc  
a. Truyền thành viên của biến cấu trúc  
vào hàm  
➢Cꢄ 2 cꢃch truyền thꢁnh viên của biến cấu  
trꢀc vꢁo hꢁm:  
• Truyền tham trị  
• Truyền tham biến  
20  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
Tải về để xem bản đầy đủ
pptx 35 trang baolam 20620 Free
Bạn đang xem 20 trang mẫu của tài liệu "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", để 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_nhap_mon_lap_trinh_bai_7_kieu_du_lieu_co_cau_truc.pptx