!
"#$"
%&'()*+,-'./0
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)
)123456'789:+;<=>6'?'@9A6:B;<
C.3DE=+'F'6G'HI6J'@'=
KL'M&'()JN6&'O&'PQ"' M&'()B
R' “ ”
Bài
13
Trửụứng THPT Long Khaựnh A
GV: Nguyeón Hửừu Taõn
1. 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ã kiÓu d÷ liÖu kh¸c nhau.
2. Khai b¸o kiÓu b¶n ghi
Type
< tªn kiÓu b¶n ghi> = record
<tªn trêng 1> : <kiÓu trêng 1>;
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
< tªn trêng k> : <kiÓu trêng k>;
end;
Var <tªn biÕn bản ghi > : <tªn kiÓu b¶n ghi>;
<tªn m¶ng > : ARRAY[1 Max] of < tªn kiÓu b¶n ghi>;
D÷ liÖu kiÓu b¶n ghi
Type
Type
Hocsinh = record
Hoten: string[30];
Ngaysinh: string[10];
Gioitinh: string[5];
Tin,Toan,Li,Hoa,Van,Su,Dia: real;
end;
Var
Var LOP: ARRAY[1 50] of Hocsinh;
i,n : integer;
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)
Bảng kết quả thi
TT Họ và tên NS GT Tin Toán Lí Hoá Văn Sử Địa
1 Nguyễn Văn An 1990 Nam 8 9 8 6 2 3 5
2 Đào Văn Bình 1991 Nam 9 6 5 8 1 8 2
… …… … … … … … … … … …
50 Nguyễn Thị Huệ 1988 Nữ 9 8 7 5 6 4 3
!
"
#$
"
%&'()
*+,-'./0
Type
Type
Hocsinh = record
SBD: integer;
Hoten: string[30];
Toan,Van,Tong: real;
Ketqua: string[10];
end;
Var
Var LOP: ARRAY[1 50] of Hocsinh;
i,n : integer;
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)
3. C¸c thao t¸c víi b¶n ghi
DE'F'6I6
Write(‘ Nhap vao so hoc sinh trong lop : ‘);
readln(n);
C¸c bíc:
ThÓ hiÖn b»ng
pascal
SDEI5I6
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;
SDE;TB6U(c¸c
thuéc tÝnh) G
'HN)6
"#$"
*+,-='./0
%66Q"LOP[1].SBD
V,' DEM&''WM6DE&';TB6U+N)6
'X
* DE6,'Y'7Z+/0GI6'X'
O2[N)64'6.
\7]'^7=D#DE6,'Y,'7Z_BR6
N`,'+',KaB@'+N)6
Tính tổng điểm văn và toán của từng học sinh trong lớp.
Dùng lệnh gì để
tính tổng cho
từng bản ghi ?
For i:=1 to n do
LOP[i].Tong:= LOP[i].Toan + LOP[i].Van;
Điền chữ Dat vào cột kết quả cho những học sinh có tổng >=10, ng
ợc lại điền chữ Khong dat .
For i:=1 to n do
IF LOP[i].Tong>=10 then LOP[i].Ketqua=Dat
else LOP[i].Ketqua=Khong dat;
b;TB6UM6cN)6
C¸c bíc: ThÓ hiÖn b»ng
pascal
FN,+6
Writeln(‘ Bang ket qua kiem tra chat luong ‘);
For i:=1 to n do
bN);TB6U
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);
Hãy viết chơng
trình hoàn chỉnh
để giải bài toán
đặt vấn đề ?
Program vd1;
Uses crt;
Type { Khai bao}
Hocsinh = record
SBD: integer;
Hoten: string[30];
Toan,Van,Tong:real;
Ketqua: string[10];
end;
Var LOP: ARRAY[1 100] of Hocsinh;
i,n: integer;
BEGIN
Clrscr; { 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;
{ tinh tong cho tung ban ghi }
For i:=1 to n do
LOP[i].Tong := LOP[i].Toan + LOP[i].Van;
{ dien ket qua cho tung ban ghi }
For i:=1 to n do
if LOP[i].Tong>=10 then
LOP[i].Ketqua:=Dat
else LOP[i].Ketqua:=Khong dat;
{ 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
Trong NNLT Pascal, để khai báo kiểu bản ghi để xử lý danh sách
cán bộ của một cơ quan, khai báo kiểu bản ghi nào trong các khai báo
sau là đúng? (Bản ghi có cấu trúc gồm 5 trường: Họ tên, năm sinh, địa
chỉ, mức lương, phụ cấp).
Type
Canbo : record
Hoten : string[30];
Namsinh: integer;
Diachi : string[90];
Mucluong: Real;
Phucap: Real;
End;
Type
Canbo = record
Hoten : string[30];
Namsinh: integer;
Diachi : string[90];
Mucluong: Real;
Phucap: Real;
End;
Type
Canbo = record;
Hoten : string[30];
Namsinh: integer;
Diachi : string[90];
Mucluong: Real;
Phucap: Real;
End;
Type
Canbo = record
Hoten : string[30];
Namsinh: integer;
Diachi : string[90];
Mucluong: Real;
Phucap: Real;
End.
A B
C D
Type
Canbo = record
Hoten : string[30];
Namsinh: integer;
Diachi : string[90];
Mucluong: Real;
Phucap: Real;
End;
B
Để truy cập vào từng trường của bản ghi ta viết?
A. <Tên biến bản ghi>.<Giá trị của trường>
B. <Tên kiểu bản ghi>.<Tên trường>
C. <Tên biến bản ghi>.<Tên trường>
D. <Tên kiểu bản ghi>.<Giá trị của trường>
BÀI TẬP VỀ NHÀ
I. Phần lý thuyết: Bài 1, 2, 3, 4 trang 79
II. Phần bài tập và thực hành: Bài 6, 7, 10 trang 79+80