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

Chia sẻ bởi Nguyễn Thị Bạch Mai | Ngày 10/05/2019 | 88

Chia sẻ tài liệu: Bài 13. Kiểu bản ghi thuộc Tin học 11

Nội dung tài liệu:

...
...
.......
...
DTB

4.5
6.0
Phan Vân
50
7.5
5.0
Đặng Anh Tuấn
49
6.5
7.0
Trần Thu Trà
48
5.0
8.5
Vũ Ngọc Bình
02
9.0
10.0
Nguyễn An
01
Kết quả
Văn
Toán
Họ tên
SBD
Bài toán đặt vấn đề:
Bảng kết quả kiểm tra chất lượng
Bản ghi
(Record)
Trường
(Field)
Bảng gồm : 50 đối tượng (record) với 6 thuộc tính (Field)
Yêu cầu: Nhập vào thông tin của từng học sinh, tính tổng và xét kết quả, biết rằng nếu DTB >=5 thì kết quả là "Đạt"
Dữ liệu kiểu bản ghi
Chú ý:
- Mỗi đối tượng được mô tả bằng một bản ghi.
- Các trường khác nhau có thể có các kiểu dữ liệu khác nhau.
Kiểu bản ghi (record) 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
I. Khái niệm kiểu bản ghi:

- Mỗi thông tin của đối tượng được gọi là một thuộc tính hay một trường.
Type
Hocsinh = record
SBD: integer;
Hoten: string[30];
Toan,Van,DTB : real;
Ketqua: string[3];
end;
Var hs1,hs2 :hocsinh;
LOP: ARRAY[1..50] of Hocsinh;

Khai báo kiểu dữ liệu cho các trường (field)
Khai báo biến kiểu bản ghi (record)
Dữ liệu kiểu bản ghi


TYPE
= RECORD
:;
:;

:;
END;
VAR
:;
: ARRAY [chỉ số ] of ;



1. Khai báo
- Định nghĩa và khai báo kiểu bản ghi:
II. KiỂU BẢN GHI TRONG PASCAL:
Dữ liệu kiểu bản ghi
- Tham chiếu đến một trường của bản ghi:
Cú pháp:
.;
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
Ví dụ: Để tham chiếu đến điểm toán của học sinh thứ 10 trong ví dụ trên ta viết:
lop[10].toan
Ví dụ: Nhập thông tin học sinh:
Write(‘ Nhap vao so hoc sinh trong lop : ‘);
readln(n);
Các bước:
Thể hiện bằng pascal
- Nhập số học sinh
For i:=1 to n do
Begin
writeln(‘ Nhap du lieu cho hoc sinh thu ‘,i);
Write(‘ SBD : ‘); readln(LOP[i].SBD);
Write(‘HO TEN : ‘); readln(LOP[i].Hoten);
Write(‘ Diem toan : ‘);readln(LOP[i].Toan);
Write(‘ Diem van : ‘);readln(LOP[i].Van);
end;
- Nhập dữ liệu (các thuộc tính) của từng bản ghi
- Nhập vào và in ra dữ liệu của 1 trường của biến bản ghi:
+ Nhập dữ liệu cho 1 trường của biến bản ghi:
Read/Readln(tên biến bản ghi.tên trường);
Dữ liệu kiểu bản ghi
9.0
10.0
Nguyễn An
01
Khi i = 1 ? LOP[1].SBD
Quá trình nhập kết thúc khi nhập hết dữ liệu cho bản ghi thứ n.
* Nhập giá trị trường cho SBD của học sinh thứ nhất nằm ở bản ghi đầu tiên.
* Tương tự như vậy nhập giá trị các trường còn lại.
Các bước:
Thể hiện bằng pascal
Thông báo in
Writeln(‘ Bang ket qua kiem tra chat luong ‘);
For i:=1 to n do
In bảng dữ liệu
Writeln(LOP[i].sbd:5,LOP[i].Hoten:30, LOP[i].Toan:5:1,LOP[i].Van:5:1,
LOP[i].Tong:8:1,LOP[i].Ketqua:15);
+ In ra dữ liệu của 1 trường của biến bản ghi:
Write/writeln(tên biến bản ghi.tên trường)

Dữ liệu kiểu bản ghi
2. Gán giá trị:
Có 2 cách để gán giá trị cho biến bản ghi:
- 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;
VD: hs1.toan:=hs2.van;
- Gán giá trị cho từng trường: có thể thực hiện bằng lệnh gán hoặc nhập từ bàn phím có nghĩa là với mỗi trường ta có thể dùng giá trị của 1 trường khác gán cho nó hoặc nhập trực tiếp từ bàn phím.

VD: hs1.Hoten:= ‘Ng Van A’;
Readln(hs1.ngaysinh);

Củng cố:
Dữ liệu kiểu bản ghi
Viết CT nhập vào 1 danh sách học sinh trong 1 lớp gồm 50 em, có các thuộc tính : SBD,hoten, toan, van( từ bàn phím),DTB(=(toan+van)/2), ketqua(=’Dat’ nếu DTB>=5, =’rot’ nếu DTB < 5).
Program vd1;
Type { Khai bao}
Hocsinh = record
SBD: integer;
Hoten: string[30];
Toan,Van,DTB: real;
Ketqua: string[3];
end;
Var LOP: ARRAY[1..100] of Hocsinh;
i,n: integer;
BEGIN
{ nhap so hoc sinh }
Write(` Nhap vao so hoc sinh trong lop : `);
readln(n);
{ nhap du lieu tung ban ghi}
For i:=1 to n do
Begin
writeln(` Nhap so lieu hoc sinh thu `,i);
Write(` SBD : `); readln(LOP[i].SBD);
Write(`HO VA TEN : `); readln(LOP[i].Hoten);
Write(` Diem toan : `);readln(LOP[i].Toan);
Write(` Diem van : `);readln(LOP[i].Van);
end;
{ Tính điểm TB cho từng bản ghi }
For i:=1 to n do
LOP[i].DTB := (LOP[i].Toan + LOP[i].Van)/2;

{ dien ket qua cho tung ban ghi }
For i:=1 to n do
if LOP[i].DTB >=5 then
LOP[i].Ketqua:=‘Dat’
else LOP[i].Ketqua:=‘rot’;
{ In bang du lieu }
Writeln(‘ Bang ket qua kiem tra ‘);
For i:=1 to n do Writeln(LOP[i].sbd:5,LOP[i].Hoten:30,
LOP[i].toan:5:1,LOP[i].Van:5:1,
LOP[i].tong:8:1,LOP[i].Ketqua:15);
Readln;
END.
Hãy nhớ!
? Gán giá trị cho từng trường của bản ghi hoặc giữa hai biến cùng kiểu.
? Khai báo: tên biến bản ghi, tên và kiểu dữ liệu các trường.
Tham chiếu trường của bản ghi:
Tên biến bản ghi.tên trường
Type
Hocsinh = record
SBD : integer;
Hovaten : string[30];
Toan,Van,Tong:real;
Ketqua :string[10];
end;
Var
LOP: ARRAY[1..50] of hocsinh;
LOP[i].SBD
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Nguyễn Thị Bạch Mai
Dung lượng: | Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)