CHƯƠNG IV:
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Bài 13:
KIỂU BẢN GHI
BÀI 13: KIỂU BẢN GHI
1. Khái niệm
2. Khai báo:
2.1. Khai báo kiểu bản ghi
2.2. Khai báo biến kiểu bản ghi
ộ
ắt n
i du
11/22/17
2.3. Tham chiếu đến trường của bản ghi
3. Gán giá trị
4. Bài tập mẫu
5. Củng cố
Bài 13: Kiểu bản ghi
2
11/22/17
Kiểu bản ghi
Hãy nêu các kiểu dữ liệu đã học?
Kiểu dữ liệu chuẩn
•
•
•
•
Kiểu nguyên
Kiểu thực
Kiểu kí tự
Kiểu logic
Kiểu dữ liệu có cấu trúc
•
•
Kiểu mảng
Kiểu xâu
3
11/22/17
Bài 13: Kiểu bản ghi
Mở đầu:
Bảng thông tin cá nhân.
Họ tên
Giới tính
Ngày sinh
Điện thoại
Địa chỉ
Nguyễn Mai Loan
Nữ
21/7/1993
016493869
TP. HCM
Võ Nhật Quỳnh
Nữ
10/9/1993
016848963
Tây Ninh
Trần Văn Hai
Nam
21/5/1993
098437727
Lâm Đồng
Nguyễn Thị Ngọc Lan
Nữ
14/8/1993
097438573
Lâm Đồng
1. Bảng chứa thông tin của đối tượng nào?
2. Bảng chứa thông tin của bao nhiêu đối tượng?
3. Mỗi đối tượng có các thông tin gì?
4. Mỗi thuộc tính trên có kiểu dữ liệu gì?
4
11/22/17
Kiểu bản ghi
Bảng thông tin cá nhân của học sinh
Họ và tên
Giới tính
Ngày sinh
Điện thoại
Địa chỉ
1
Nguyễn Mai Loan
Nữ
21/7/1993
016493869
TP. HCM
2
Võ Nhật Quỳnh
Nữ
10/9/1993
016848963
Tây Ninh
3
Trần Văn Hai
Nam
21/5/1993
098437727
Lâm Đồng
4
Nguyễn Thị Ngọc Lan
Nữ
14/8/1993
097438573
Lâm Đồng
Bảng chứa thông tin của đối tượng học
sinh.
Bảng chứa thông tin của ? đối tượng
•
Kiểu dữ liệu của mỗi thuộc tính:
Họ và tên, Địa chỉ: kiểu chuỗi (string).
Giới tính : Kiểu chuỗi (boolean)
Ngày sinh : kiểu chuỗi( string)
Điện thoại: kiểu số nguyên ( byte)
4
Mỗi đối tượng có 5 thuộc
tính
5
11/22/17
Kiểu bản ghi
Bảng thông tin cá nhân của học sinh
Họ tên
Giới tính
Ngày sinh
Điện thoại
Địa chỉ
Nguyễn Mai Loan
Nữ
21/7/1993
016493869
TP. HCM
Võ Nhật Quỳnh
Nữ
10/9/1993
016848963
Tây Ninh
Trần Văn Hai
Nam
21/5/1993
098437727
Lâm Đồng
Nguyễn Thị Ngọc Lan
Nữ
14/8/1993
097438573
Lâm Đồng
Dùng cách nào để quản lý các
thông tin ( thuộc tính) của các đối
tượng đó trên máy tính?
6
11/22/17
Kiểu bản ghi
1.
7
Khái niệm
Kiểu bản ghi có đặc điểm là dữ liệu được tổ chức thành một bảng hai chiều:
.Chiều dọc là các trường: họ và tên, giới tính, ngày sinh, điện thoại, địa chỉ. Trong mỗi trường có thể có các kiểu dữ liệu
giống nhau hoặc khác nhau.
.Theo hàng ngang là các bản ghi: mỗi bản ghi là tập hợp dữ liệu của các trường. Do sữ liệu của các trường khác nhau
nên dữ liệu của từng bản ghi cũng khác nhau, rất ít khi trùng nhau.
Bản ghi (Record)
Trường (field)
Họ và tên
Giới tính
Ngày sinh
Điện thoại
Địa chỉ
Nguyễn Mai Loan
Nữ
21/7/1993
016493869
TP. HCM
Võ Nhật Quỳnh
Nữ
10/9/1993
016848963
Tây Ninh
Trần Văn Hai
Nam
21/5/1993
098437727
Lâm Đồng
Nguyễn Thị Ngọc Lan
Nữ
14/8/1993
097438573
Lâm Đồng
11/22/17
Kiểu bản ghi
•
Kích thước của từng trường phụ thuộc vào từng kiểu dữ liệu: Integer, Real, String,…, nhưng kích
thước của từng bản ghi là hoàn toàn giống nhau. Mặc dù trong thực tế kích thước các bản ghi khác
nhau nhưng máy vẫn dành phần bộ nhớ như nhau cho các bản ghi.
Tóm lại:
Dữ liệu kiểu bản ghi (record) dùng để mô tả các…….…………. có cùng một số…………….………..(trường) mà
các …..………….. có thể có các …………….
đối tượng
thuộc tính
kiểu dữ liệu khác nhau.
thuộc tính
8
Kiểu bản ghi
Một số ví dụ về kiểu bản ghi
11/22/17
9
11/22/17
Kiểu bản ghi
2. Khai báo
2.1. Định nghĩa kiểu bản ghi:
Các thông tin cần khai báo gồm tên kiểu bản ghi, tên các thuộc tính và kiểu dữ liệu của mỗi thuộc tính.
Cú pháp:
Type <tên kiểu bản ghi> = record
<tên trường 1>: <kiểu dl trường 1>;
<tên trường 2.1, tên trường 2.2>: <kiểu dl trường 2>;
….
<tên trường n>: <kiểu dl trường n>;
End;
Trong đó
<tên kiểu bản ghi> là tên kiểu bản ghi do người dùng đặt.
<tên trường 1>… <tên trường n> là tên của thuộc tính.
< kiểu dl trường > là kiểu dữ liệu của thuộc tính.
10
11/22/17
Kiểu bản ghi
11
2.2. Khai báo biến kiểu bản ghi.
var <tên biến bản ghi> : <tên kiểu bản ghi> ;
Họ và tên
Điểm LT
Điểm TH
Tổng điểm
Kết quả
hs1
Nguyễn Hoàng Anh
8
9
17
Đạt
hs2
Trần Thị Hoa
2
7
9
Chưa đạt
hs3
Đỗ Minh Quân
2
1
8
Chưa đạt
hs4
Hồ Quang Thắng
8
2
10
Đạt
type HocSinh = record
HoTen: string[100];
type HocSinh = record
HoTen: string[100];
DiemLT : byte;
DiemLT, DiemTH, TongDiem : byte;
DiemTH : byte;
KetQua : string[10];
end;
var
hs1, hs2, hs3, hs4 : HocSinh;
TongDiem : byte;
KetQua : string[10];
end;
Cùng kiểu dữ
liệu
11/22/17
Kiểu bản ghi
12
Tình huống phát sinh:
Khai báo 40 đối tượng học sinh
Tên kiểu bản
Tên mảng
Chỉ số mảng
lớp tương ứng với 40 bản ghi
ghi
thì phải làm thế nào?
Var Lop : Array [1..40] of HocSinh;
Khai báo một mảng có 40 phần
tử có kiểu dữ liệu là bản ghi
11/22/17
Kiểu bản ghi
•
Một số ví dụ kiểu bản ghi:
Type ChuThe
= record;
STT , Diem, : real;
TenChuThe, DoanhSo SoThe, DienThoai, DiaChi : string[100];
end;
Var
A, B, C : ChuThe;
DanhSachKhachHang : array[1..10] of ChuThe;
13
11/22/17
Kiểu bản ghi
const Max = 10;
type KhachHang = recode
STT : real;
TenKhachHang, CMND, TienThuong, SoThe,
end;
var
A,B : KhachHang; // 2 biến cụ thể của bản ghi
DanhSachKH : array[1..Max] of KhachHang; // mảng biến
DonViPhatHanh : string[50];
14
11/22/17
Kiểu bản ghi
2.3. Cách tham chiếu đến trường của bản ghi
Cách truy xuất đó là tên biến và tên trường cách nhau một dấu chấm (.) cú pháp như sau:
<Tên biến bản ghi>
. < tên trường>
Ví dụ:
hs2.TongDiem: tham chiếu đến Tổng điểm của học sinh Trần Thị Hoa
Lop[i].DiemLT: tham chiếu đến Điểm lý thuyết của học sinh thứ i trong lớp. Với i là chỉ số nào đó của mảng Lop.
Họ và tên
Điểm LT
Điểm TH
Tổng điểm
Kết quả
hs1
Nguyễn Hoàng Anh
8
9
17
Đạt
hs2
Trần Thị Hoa
2
7
9
Chưa đạt
hs3
Đỗ Minh Quân
2
1
8
Chưa đạt
hs4
Hồ Quang Thắng
8
2
10
Đạt
15
Kiểu bản ghi
11/22/17
16
3. Gán giá trị
Gán giá trị trực tiếp cho biến bản ghi: cũng giống như biến thuộc kiểu dữ liệu chuẩn. Biến kiểu bản
ghi cũng có thể gán giá trị qua lại với nhau miễn là chúng cùng kiểu. Nếu X, Y là 2 biến bản ghi cùng
kiểu thì ta có thể gán giá trị của Y cho X bằng lệnh gán: X := Y;
Gán giá trị cho từng trường: giá trị mỗi thành phần của bản ghi cũng được nhập, xuất, xử lý như mỗi
biến bình thường bằng lệnh gán hoặc nhập từ bàn phím.
Ví dụ: a, b là 2 biến của bản ghi HocSinh
a:=b; //gán trực tiếp
a.HoTen := ‘Nguyễn Hoàng Anh’; //gán gt cho từng TH
Hoặc: readln(a.HoTen);
11/22/17
Kiểu bản ghi
4. Củng cố
Định nghĩa kiểu bản ghi:
type <tên kiểu bản ghi> = record
<tên trường 1> : < kiểu dư liệu trường 1>;
<tên trường 21, tên trường 22> : <kiểu dl trường 2>;
…
<tên trường n> : < kiểu dư liệu trường n>;
end;
Khai báo biến bản ghi:
var <tên biến bản ghi> : <tên kiểu bản ghi> ;
<tên mảng> : array [1..n] of <tên kiểu bản ghi> ;
Tham chiếu đến từng trường
<tên biến bản ghi> . <tên trường>
Gán giá trị
17