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

Chia sẻ bởi Hoàng Trung Thông | Ngày 10/05/2019 | 155

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:

..
...
...
....................
...

Tổng

6.5
7.0
Trần Thị Thơm
40
8.0
7.0
Vũ Ngọc Bình
02
9.0
8.0
Nguyễn Thảo
01

Kết quả

Tin

Toán

Họ tên

SBD
Ví Dụ B�I TO�N D?T V?N D?
Bảng kết quả thi học sinh giỏi
Bảng gồm : 40 đố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 Điểm Toán và Tin nếu >=18 thì : "Đạt"
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 2>: ;
........................................................
: ;
end;
Var : ;

Dữ liệu kiểu bản ghi
Type
hoso = record
SBD: byte;
Hten: string[20];
dtoan,dtin,Tong: real;
Ketqua: string[10];
end;
Var LOP: ARRAY[1..40] of hoso;
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)
...
...
...
...
.........................
...

Tổng

10
9
Trần Thị thơm
40
8.0
7.0
Vũ Văn Bình
02
9.0
8.0
Nguyễn Văn Ba
01

Kết quả

đtin

đtoán

Họ tên

SBD
BẢNG KẾT QUẢ THI HỌC SINH GIỎI
VÍ DỤ
THAM CHIẾU TRƯỜNG CỦA BẢN GHI
> 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 đến điểm tin học của một học sinh trong
ví dụ trên ta viết: A.dtin

2. G�N GI� TR?
Có hai cách để gán 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 cùng bản ghi cùng kiểu,
thì ta có thể gán trị của B cho A bằng Câu lệnh: A:=B;

Gán 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.
Khi gán trị của B cho A bằng Câu Lệnh A:=B thì các thuộc tính của A sẽ như thế nào so với các thuộc tính của B ?
3. 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’ );
readln(n);
Các bước:
Thể hiện bằng pascal
- Nhập vào số học sinh
For i:=1 to n do
Begin
writeln(‘ Nhap thong tin cho hoc sinh thu‘,i);
Write(‘ SBD : ‘); readln(LOP[i].SBD);
Write(‘HO TEN : ‘); readln(LOP[i].Hten);
Write(‘ Diem toan : ‘);readln(LOP[i].dtoan);
Write(‘ Diem Tin : ‘);readln(LOP[i].dtin);
end;
- Nhập dữ liệu (các thuộc tính) của từng đối tượng bản ghi
Khi i = 1 ? LOP[1].SBD
* Nhập giá trị lần lượt cho các trường SBD, Họ và tên, đtoán, đtin ở từng bản ghi cho đến bản ghi thứ n.
9.0
10.0
Nguyễn Thảo
01
9.0
8.0
Vũ Văn Bình
02
...
...
.........
...
10
7.0
Trần Thị Thơm
n
b. Các thao tác xử lí trong bản ghi
Để tính tổng điểm Toán và Tin của từng học Sinh trong lớp.
Dùng câu lệnh gì để tính tổng điểm cho từng bản ghi nhỉ ?
For i:=1 to n do
LOP[i].Tong:= LOP[i].dtoan + LOP[i].dtin;
Để điền chữ "dat" vào cột kết quả cho những học sinh có tổng điểm >=18, ngược lại điền chữ "Khong dat" ?
For i:=1 to n do
IF LOP[i].Tong>=18 then LOP[i].Ketqua:=‘Dat’
else LOP[i].Ketqua:=‘Khong dat’;
c. Ghi dữ liệu kiểu bản ghi
Các bước thực hiện:
Thể hiện bằng pascal
Thông báo xuất ra màn hình
Writeln(‘ BANG KET QUA THI ‘);
For i:=1 to n do
Xuất bảng bảng dữ liệu ra màn hình
Writeln(LOP[i].sbd:5,LOP[i].Hten:20, LOP[i].dtoan:2:1,LOP[i].dtin:2:1,
LOP[i].Tong:2:1,LOP[i].Ketqua:15);
Làm thế nào để viết chương trình hoàn chỉnh để giải bài toán trên nhỉ?
Program vidu;
Uses crt;
Type { phan Khai bao}
Hoso = record
SBD: integer;
Hten: string[30];
dtoan,dtin,Tong:real;
Ketqua: string[10];
end;
Var LOP: ARRAY[1..100] of Hoso;
i,n: integer;
BEGIN
Clrscr; { nhap so luong 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 cho hoc sinh thu `,i);
Write(` SBD : `); readln(LOP[i].SBD);
Write(`Ho Va Ten : `); readln(LOP[i].Hten);
Write(` Diem toan : `);readln(LOP[i].dtoan);
Write(` Diem Tin : `);readln(LOP[i].dtin);
end;
{ Tinh tong cho tung ban ghi }
For i:=1 to n do
LOP[i].Tong := LOP[i].dtoan + LOP[i].dtin;

{ Dien ket qua cho tung ban ghi }
For i:=1 to n do
if LOP[i].Tong>=18 then
LOP[i].Ketqua:=‘Dat’
else LOP[i].Ketqua:=‘Khong dat’;
{ Xuat bang du lieu ra man hinh}
Writeln(‘BANG KET QUA THI‘);
For i:=1 to n do Writeln(LOP[I].sbd:5,LOP[i].Hten:30,
LOP[i].dtoan:5:1,LOP[i].dtin:5:1,
LOP[i].tong:8:1,LOP[i].Ketqua:15);
Readln;
END.
Ghi 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.
* 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ẻ: Hoàng Trung Thông
Dung lượng: | Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)