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

pdf5 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 2341 | Lượt tải: 2download
Tóm tắt nội dung Slide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Kiểu cấu trúc, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • pdfSlide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Kiểu cấu trúc.pdf
Tài liệu liên quan