Trang chủ > Lớp 11 > Giải BT Tin học 11 > Bài 13: Kiểu bản ghi - Giải BT Tin học 11

Bài 13: Kiểu bản ghi - Giải BT Tin học 11

Bài 13: Kiểu bản ghi

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, điều đó đặc biệt hữu ích cho các 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.

Ví dụ: Ta muốn lưu thông tin về sinh viên. Dữ liệu cần lưu trữ bao gồm:

+ Họ tên (Kiểu String).

+ Giới tính (Kiếu String).

+ Điểm số (Kiểu real).

Để lưu trữ nhiều sinh viên ta có thể sử dụng các cách:

+ Khai báo một mảng bản ghi. Mỗi bản ghi sẽ chứa thông tin về một sinh viên (họ tên, giới tính, điểm số).

+ Khai báo 3 mảng, trong đó 2 mảng String để lưu tên và giới tính, 1 mảng kiểu real để lưu điểm số.

Rõ ràng cách đầu tiên thuật tiện để lưu trữ hơn cách thứ hai khi số thuộc tính lớn.

1. Khai báo

Ta cần khai báo 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.

Cú pháp:


Type< tên kiểu bản ghi> = record < tên trường 1> :< kiểu trường 1> ; ……………………………………………….. < tên trường 2> :< kiểu trường 2> ; 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ụ:


Type Hocsinh=record Hoten: string [30]; Ngaysinh: string [10]; Gioitinh: Boolean; Toan, Tin, Van, Anh: real; End; Var A, b: Hocsinh; Lop: array [1.. 60] of Hocsinh;

Để tham chiếu đến thuộc tính nào ta sự dụng dấu.

Ví dụ:

Tham chiếu đến họ tên của Hocsinh A. Ta sử dụng:

A. Hoten

Ta có thể coi A. Hoten như một biến string [30]. Ta hoàn toàn có thể thực hiện so sánh, gán giá trị...

2. Gán giá trị.

Có 2 cách:

+ Dùng lệnh gán trực tiếp: A: =B (A với B là 2 biến bản ghi).

+ Gán giá trị cho từng trường: A. X: =C hoặc nhập từ bàn phím.

Ví dụ:

Một lớp gồm N (N< =60) học sinh. Cần quản lí học sinh với các thuộc tính như họ và tên, ngày sinh

program xep_loai;
uses 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) 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.