Slide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Kiểu cấu trúc
Giới thiệu kiểu cấu trúc
Các kiểu dữliệu cơsởchưa đủmềm dẻo cho
các bài toán thực tế
sựvật, hiện tượng trong thực tếphức tạp, có
nhiều tính chất khác nhau nhiều tính chất khác nhau
Người lập trình cần có định nghĩa các kiểu dữ
liệu phù hợp với bài toán cụthể
dễsửdụng
có sựliên hệgiữa các tính chất khác nhau
Lương Trần Hy Hiến
Khoa Toán – Tin học
Đại học Sư phạm TPHCM
1
Nội dung
Giới thiệu kiểu cấu trúc
Khai báo kiểu cấu trúc
Kiểu cấu trúc lồng nhau
Sử dụng kiểu cấu trúc
Bài tập
2
Giới thiệu kiểu cấu trúc
Các kiểu dữ liệu cơ sở chưa đủ mềm dẻo cho
các bài toán thực tế
sự vật, hiện tượng trong thực tế phức tạp, có
nhiều tính chất khác nhau
Người lập trình cần có định nghĩa các kiểu dữ
liệu phù hợp với bài toán cụ thể
dễ sử dụng
có sự liên hệ giữa các tính chất khác nhau
3
Giới thiệu kiểu cấu trúc
Tạo ra kiểu dữ liệu phức tạp dựa trên các kiểu
dữ liệu đã có
dữ liệu có cấu trúc
Tạo ra các chương trình con riêng để làm việc
với dữ liệu mới
Sự phát triển
Struct – Cấu trúc (lập trình thủ tục)
Object – Đối tượng (lập trình hướng đối
tượng)
4
Giới thiệu kiểu cấu trúc
Mô tả đối tượng là nhân viên, thông tin bao gồm:
họ tên, quê quán, năm sinh, thâm niên công tác,
địa chỉ, giới tính
Thể hiện trên máy tính, với mỗi thông tin
chúng ta cần một biến tương ứng
để mô tả một nhân viên chúng ta cần 6 biến:
string hoten, quequan, diachi;
int namsinh, TNCT, gioitinh;
5
Giới thiệu kiểu cấu trúc(tt)
Mô tả hai nhân viên cần 12 biến
string hoten1, quequan1, diachi1;
int namsinh1, TNCT1, gioitinh1;
string hoten2, quequan2, diachi2;
int namsinh2, TNCT2, gioitinh2;
Làm sao đặt lại năm sinh của nhân viên thứ nhất
??? namsinh1 = 1979;
Làm sao đặt lại quê quán của nhân viên thứ hai
??? quequan2 = “Khánh Hòa”;
6
Giới thiệu kiểu cấu trúc(tt)
Nhận xét:
Tập các biến string hoten1, quequan1,
diachi1;
int namsinh1, TNCT1, gioitinh1 thuộc về cùng một nhóm
(nhân viên thứ nhất)
Tập các biến string hoten2, quequan2,
diachi2;
int namsinh2, TNCT2, gioitinh2 thuộc về cùng một nhóm
(nhân viên thứ hai)
Cần cơ chế hỗ trợ điều này gom nhóm các biến lại với
nhau để dễ hiểu, dễ kiểm soát.
7
Giới thiệu kiểu cấu trúc
Một cấu trúc là một tập hợp các biến có liên
quan với nhau có thể khác kiểu.
Trong C++, kiểu cấu trúc là kiểu do người dùng
định nghĩa. Nó được sử dụng như là các kiểu cơ
bản khác của C++.
Sự khác nhau giữa cấu trúc và mảng:
Mảng = tập hợp các biến cùng kiểu cấu
trúc = tập hợp các biến có thể khác kiểu.
Tất cả các biến trong mảng chỉ có một tên
các biến trong cấu trúc có thể khác tên.
8
Khai báo kiểu cấu trúc
Cú pháp
struct Tên_Cấu_trúc{
Kiểu thành_phần_1;
Kiểu thành_phần_2;
…
};
Hoặc theo C
typedef struct {
// các thành phần của struct
} Tên_Cấu_trúc;
9
Ví dụ
Tạo kiểu cấu trúc NhanVien
struct NhanVien{
string hoten, quequan, diachi;
int namsinh, TNCT, gioitinh;
Tên cấu trúc
NhanVien
có 6 thành
};
Tạo kiểu cấu trúc Diem
struct Diem{
int x;
int y;
};
10
phần
Tên cấu trúc
Diem có 2
thành phần
Ví dụ
Tạo kiểu cấu trúc mô tả đối tượng ngày
struct Ngay{
int ngay;
int thang;
int nam;
Tên cấu trúc
Ngay có 3
thành phần
};
Tạo kiểu cấu trúc mô tả đối tượng phân số
struct PhanSo{
int tu;
int mau;
};
11
Tên cấu trúc PhanSo có 2
thành phần
Sử dụng kiểu cấu trúc
Tên_Cấu_trúc trở thành một kiểu do người dùng định nghĩa và có
thể được sử dụng để định nghĩa biến như các kiểu khác của C++
Tên_Cấu_trúc Tên_Biến;
Để truy cập đến một thành phần của biến cấu trúc dùng toán tử “.”
Tên_Biến_Cấu_Trúc.Tên_Thành_Phần
VD:
NhanVien nv1, nv2;
nv1.namsinh = 1979; // Gánnăm sinh cho nhân viên 1
nv2.quequan = “Khánh Hòa”; // đặt quê quán cho nhân viên 2
hoten quequan Diachi
namsinh TNCT gioitinh
12
nv1 nv2
hoten quequan Diachi
namsinh TNCT gioitinh
Ví dụ
Diem p1, p2;
p1.x = 10; p1.y = 5;
p2.x = 7; p2.y = 8;
x=10 y=5
p1
x=7 y=8
Ngay n1, n2;
n1.ngay = 1; n1.thang = 10;
n1.nam = 1986;
n2.ngay = 27; n2.thang = 7;
n1.nam = 2009;
13
p2
ngay=1 thang=10 nam=1986
n1
n2
ngay=27 thang=7 nam=2009
Ví dụ
PhanSo ps1, ps2;
ps1.tu = 1; ps1.mau = 3;
ps2.tu = 7; ps2.mau = 13;
tu=1 mau=3
ps1
tu=7 mau=13
cin >> ps1.tu >> ps1.mau;
14
ps2
Biến kiểu int
Biến kiểu int
Sử dụng kiểu cấu trúc
Có thể gán hai biến thuộc cùng một kiểu cấu trúc cho
nhau
PhanSo ps1, ps2;
ps1.tu = 1; ps1.mau = 3;
ps2 = ps1; //ps2.tu = ps1.tu; ps2.mau = ps1.mau;
Ngay n1, n2;
n1.ngay = 1; n1.thang = 10; n1.nam = 1986;
n2 = n1; // ???
15
Kiểu cấu trúc lồng nhau
Một khi kiểu cấu trúc đã được định nghĩa thì kiểu cấu
trúc có thể được sử dụng như bất kỳ kiểu cơ bản nào
của C++ trong định nghĩa kiểu cấu trúc mới có thể sử
dụng kiểu cấu trúc cũ.
struct NhanVien{
string hoten, quequan, diachi;
int namsinh, TNCT, gioitinh;
};
struct PhongBan{
NhanVien truongphong;
int soNV;
string tenphong;
};
16
Mảng các đối tượng cấu trúc
struct PhongBan{
NhanVien truongphong;
int soNV;
string tenphong;
NhanVien DSNhanVien[100];
};
17
Bài tập
1) Viết bài tập phân số sử dụng kiểu cấu trúc
2) Viết các kiểu cấu trúc mô tả các đối tượng
điểm, đoạn thẳng, tam giác, hình chữ nhật,
hình thang, đa giác.
3) Viết các hàm tính chu vi của các đối tượng
trên.
18
Bài tập 4
Tạo kiểu cấu trúc MyDate chứa thông tin ngày
tháng năm.
Viết hàm kiểm tra một cấu trúc có thông tin ngày
tháng năm hợp lệ hay không.
Viết hàm tính xem một ngày là ngày thứ mấy
trong tuần.
19
Bài tập 5
Xây dựng kiểu cấu trúc sinh viên chứa MyDate,
chứa điểm trung bình
Xây dựng hàm sắp xếp một danh sách (mảng)
sinh viên theo thứ tự điểm trung bình từ cao
xuống thấp.
Xây dựng hàm tìm kiếm sinh viên theo mã sinh
viên.
20
File đính kèm:
Slide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Kiểu cấu trúc.pdf

