- Dữ liệu kiểu bản ghi dùng để mô tả các đối tượng có cùng một số thuộc tính mà các thuộc tính có thể có các kiểu dữ liệu khác nhau;
- Kiểu bản ghi là một kiểu dữ liệu có cấu trúc. Một bản ghi gồm các thành phần (gọi là trường), khác với các kiểu dữ liệu có cấu trúc khác (mảng và xâu), các trường có thể thuộc các kiểu dữ liệu khác nhau;
- Kiểu bản ghi cho phép mô tả nhiều đối tượng cỏ cùng một số thuộc tính, có hữu ích cho nhiều bài toán quản lí;
- Ngôn ngữ lập trình đưa ra quy tắc, cách thức xác định.
- Tên kiểu bản ghi;
- Tên các thuộc tính (trường);
- Kiểu dữ liệu của mỗi trường;
- Cách khai báo biến;
- Cách tham chiểu đến trường.
1. Khai báo
- Các thông tin cần khai báo bao gồm tên kiểu bàn ghi, tên các thuộc tính, kiểu dữ liệu của mỗi thuộc tính.
type <tên kiểu bản ghi> = record
<tên trường 1>:<kiểu trường 1>
<tên trường m>:<kiếu trường m>
end;
Sau khi có kiểu bản ghi, biến kiểu bản ghi có thể được khai báo như sau:
var
<tên biến bàn ghi>: <tên kiểu bản ghi>;
Ví dụ
Trong chương trình xử lí kết quả tốt nghiệp có thể sử dụng khai báo sau đây: const Max= 60; {gia thiet si so lop cao nhat la 60}
A, B: HocSinh;
Lop: array[1..Max] of HocSinh;
- Nếu A là biến kiểu bản ghi và X là tên một trường của A, thì để tham chiếu đến trường X, ta viết:
A.x
- Để tham chiếu đến điểm thi tin học của học sinh A ta viết:
A.Tin
type
Hocsỉnh = record
HoTen: string[30];
NgaySinh: string[10];
GioiTinh: boolean;
Tin, Toan, Li, Hoa, Van, Su, Dia: Heal;
End;
var
A, B: HocSinh;
Lop: array[1..Max] of HocSinh;
- Nếu A là biến kiểu bản ghi và X là tên một trường của A, thi để tham chiếu đến trường X, ta viết:
- Để tham chiếu đến điểm thi tin học của học sinh A ta viết:
A.Tin
2. Gán giá trị
Có hai cách để gán giá trị cho biến bản ghi:
Cách 1: Dùng lệnh gán trực tiếp: Nếu A và B là hai biến bản ghi cùng kiểu, thì ta có thể gán giá trị cùa B cho A bằng câu lệnh:
A:= B;
Cách 2: Gán giá trị cho từng trường: có thể thực hiện bằng lệnh gán hcặc nhập từ bàn phím.
Vi dụ: Chương trình nhập vào từ bàn phím thông tin của từng học sinh trong lớp, thực hiện xếp loại và đưa ra màn hình kết quả xếp toại học sinh:
program xep_loai;
USRS crt;
const max= 60;
type Hocsinh = record
hoten: string[30];
ngaysinh: string [10];
Diachi: string[50] ;
Toan, Van: real;
Xeploai : char; end;
var
Lop: array [ 1. .max] of hocsinh;
N,i: byte;
Begin
clrscr;
write('So luong hoc sinh trong lop N= ) ;
readln(N);
for i:= 1 to N do
begin
writeln( 'Nhap so lieu ve hoc sinh thu',i,': ');
Write (‘Ho va ten: ‘); readln (lop [i]. hoten);
Write (‘ Ngay sinh : ‘); readln (lop [i].ngaysinh);
Write (‘ Dia chi : ‘); readln (lop [i].Diachi);
Write (‘Diem Toan : ‘); readln (lop [i]. Toan);
Write (‘Diem Van : ‘); readln (lop [i]. Van);
If Lop [i]. Toan+Lop [i]. Van >=18
then Lop [i]. xeploai:=’A’;
if (Lop[i].Toan+Lop[i].Van>=14) and
Lop [i]. Toan+Lop [i]. Van <18
then Lop [i]. xeploai:=’B’;
if (Lop[i].Toan+Lop[i].Van>=10) and
Lop [i]. Toan+Lop [i]. Van >=14
then Lop [i]. xeploai:=’C’;
if (Lop[i].Toan+Lop[i].Van<=10) and
then Lop[i].xeploai:=’D’;
end;
clrscr;
writeln (‘Danh sach xep loai hoc sinh trong lop: ‘ );
for i:=1 to N do
writeln (Lop[i].Hoten:30,’ – Xep loai : ‘, Lop[i]. Xeploai);
readln
End.
Kết quả của chương trình sau khi nhập dữ liệu của 10 em học sinh như hình 58 dưới đây: