Tham chiếu trườngcủa bản ghi: Tên biến bản ghi.tên trường Gán giá trị cho từng trườngcủa b¶n ghi hoÆc gi÷a hai biÕn cïng kiÓu.[r]
Trang 1Bµi 16
Gi¸o ¸n ®iÖn tö tin häc líp 11
Lop11.com
Trang 2
Tổng
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)
Yêu cầu : Nhập vào thông tin của từng học sinh, tính tổng và
Trang 31 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 2> : kiểu trường 2;
end;
Var <tên biến > : <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
Lop11.com
Trang 4
Tổng
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
Type
Hocsinh = record
SBD: integer;
Hoten: string[30];
Toan,Van,Tong: real;
Ketqua: string[10];
end;
Khai báo kiểu dữ liệu cho các trường (field)
Khai báo biến kiểu
Trang 53 C¸c thao t¸c víi b¶n ghi
a NhËp th«ng tin häc sinh
Write(‘ Nhap vao so hoc sinh trong lop : ‘); readln(n);
- 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
Lop11.com
Trang 69.0 10.0
Nguyễn An 01
Văn Toán
Họ và tên SBD
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
Trang 7b Các thao tác xử lí trong bản ghi
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 nhỉ ?
For i:=1 to n do
LOP[i] Tong:= LOP[i] Toan + LOP[i] Van;
Điền chữ “Đạt” 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’;
Lop11.com
Trang 8c In d÷ liÖu kiÓu b¶n ghi
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 );
Trang 9Hãy viết chương trình hoàn chỉnh
để giải bài toán
đặt vấn đề ?
Program vd1;
Uses crt;
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.
Lop11.com
Trang 10Hãy nhớ!
Gán giá trị cho từng trường của
bản ghi hoặc giữa hai biến
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