Cộng đồng chia sẻ tri thức Lib24.vn

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

Gửi bởi: Phạm Thọ Thái Dương 17 tháng 12 2019 lúc 17:26:21


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.

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 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.

Được cập nhật: 7 tháng 4 lúc 16:30:50 | Lượt xem: 620

Các bài học liên quan