Bài
16
Giáo án điện tử tin học lớp 11
Bài toán đặt vấn đề:
Trờng
(Field)
Bảng kết quả kiểm tra chất lợng
SBD
Họ tên
Toán
Văn
01
Nguyễn An
10.0
9.0
02
Vũ Ngọc Bình
8.5
5.0
...
.......
...
...
48
Trần Thu Trà
7.0
6.5
49
Đặng Anh Tuấn
5.0
7.5
50
Phan Vân
6.0
4.5
Tổng
Kết
quả
Bản ghi
(Record
)
Bảng
gồmNhập
: 50 vào
đối tthông
ợng (record)
6 thuộc
tínhtính
Yêu cầu:
tin củavới
từng
học sinh,
(Field) tổng và xét kết quả, biết rằng nếu tổng
>=10 thì kết quả là Đạt
Dữ liệu kiểu bản ghi
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 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>;
SBD
Họ tên
Toán
Văn
01
Nguyễn An
10.0
9.0
02
Vũ Ngọc Bình
8.5
5.0
...
48
.......
Trần Thu Trà
...
7.0
...
6.5
49
Đặng Anh Tuấn
5.0
7.5
50
Phan Vân
6.0
4.5
Tổn
g
Kết
quả
Type
Hocsinh = record
SBD: integer;
Hoten: string[30];
Toan,Van,Tong: real;
Ketqua: string[10];
end;
Var
LOP: ARRAY[1..50] of Hocsinh;
I,j,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
a. Nhập thông tin học sinh
Các bớc:
- Nhập số học
sinh
- Nhập dữ liệu
(các thuộc tÝnh)
cđa tõng b¶n
ghi
ThĨ hiƯn b»ng
pascal
Write(‘ Nhap vao so hoc sinh trong lop : ‘);
readln(n);
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;
Khi i = 1 LOP[1].SBD
* 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.
SBD
01
Họ và tên
Nguyễn An
Toán
Văn
10.0
9.0
Quá trình nhập kết thúc khi nhập hết dữ liệu cho
bản ghi thứ n.
b. 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.
For i:=1 to n do
LOP[i].Tong:= LOP[i].Toan + LOP[i].Van;
Dùng lệnh gì
đểvào
tính
Điền chữ Đạt
cột tổng
kết quả cho những học sinh có
cho từng bản
tổng >=10, ngợc lại điền chữ Khong dat.
ghi nhỉ ?
For i:=1 to n do
IF LOP[i].Tong>=10 then LOP[i].Ketqua=‘Dat’
else LOP[i].Ketqua=‘Khong dat’;
c. In dữ liệu kiểu bản ghi
Các bớc:
Thể hiện bằng
pascal
Thông b¸o in
Writeln(‘ Bang ket qua kiem tra chat luong ‘);
In bảng dữ liệu
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);
Program vd1;
Uses crt;
Type
{ Khai bao}
Hocsinh = record
SBD: integer;
{ tinh tong cho tung ban ghi }
Hoten: string[30];
For i:=1 to n do
Toan,Van,Tong:real;
LOP[i].Tong := LOP[i].Toan + LOP[i].Van;
HÃy
viết
ch
ơng
Ketqua: string[10];
trình hoàn
end;
{ dien ket qua cho tung ban ghi }
chỉnh
để
giải
Var
LOP: ARRAY[1..100] of Hocsinh; For i:=1 to n do
bài toán đặtif LOP[i].Tong>=10 then
i,n: integer;
BEGIN
vấn đề ?
LOP[i].Ketqua:=Dat
Clrscr;
{ nhap so hoc sinh }
else LOP[i].Ketqua:=‘Khong dat’;
Write(‘ Nhap vao so hoc sinh trong lop : ‘);
readln(n);
{ In bang du lieu }
{ nhap du lieu tung ban ghi}
Writeln(‘ Bang ket qua kiem tra ‘);
For i:=1 to n do
For i:=1 to n do
Begin
Writeln(LOP[I].sbd:5,LOP[i].Hoten:30,
writeln(‘ Nhap so lieu hoc sinh thu ‘,i);
LOP[i].toan:5:1,LOP[i].Van:5:1,
Write(‘ SBD : ‘); readln(LOP[i].SBD);
LOP[i].tong:8:1,LOP[i].Ketqua:15);
Write(‘HO VA TEN : ‘); readln(LOP[i].Hoten); Readln;
Write(‘ Diem toan : ‘);readln(LOP[i].Toan);
END.
Write(‘ Diem van : ‘);readln(LOP[i].Van);
end;
H·y nhí!
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
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
ờnggiá trị cho từng tr
tr
Gán
ờng của bản ghi hoặc
giữa hai biÕn cïng kiÓu.