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

Chia sẻ bởi Trần Trung | Ngày 10/05/2019 | 94

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:

xét Bài toán:
Bảng kết quả kiểm tra chất lượng
Viết chương trình nhập vào từ bàn phím các thông tin (họ và tên, ngày sinh, địa chỉ, điểm toán, điểm văn) của từng học sinh trong lớp, thực hiện xếp loại và đưa ra màn hình kết quả xếp loại học sinh.
Bài 13
tin học lớp 11
Bảng gồm : N đối tượng (record) với 6 thuộc tính (Field)
Bản ghi
(Record)
Trường
(Field)
Dữ liệu 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.
1. Khai báo kiểu bản ghi, biến bản ghi.
Type
< tên kiểu bản ghi> = record
: ;
... ...
< tên trường k> : ;
end;
Var : ;
: ARRAY[1..Max] of < tên kiểu bản ghi>;
Dữ liệu 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.
Tham chiếu đến từng trường: .
Type
Hocsinh = record
Hoten: string[30];
Ngaysinh:string[10];
Diachi:string[50];
Toan,Van: real;
Xeploai: char;
end;
Var LOP: ARRAY[1..60] 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)
Ví dụ: Hãy mô tả cấu trúc dữ liệu của bài toán đã đề ra (khai báo kiểu dữ liệu bản ghi và các biến bản ghi phù hợp)?
a. Nhập thông tin học sinh
Write(‘ So luong hoc sinh: ‘); 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(‘ HO TEN : ‘); readln(LOP[i].Hoten);
Write(‘ NGAY SINH : ‘); readln(LOP[i].Ngaysinh);
Write(` DIA CHI : `); readln(LOP[i].Diachi);
Write(‘ DIEM TOAN : ‘);readln(LOP[i].Toan);
Write(‘ DIEM VAN : ‘);readln(LOP[i].Van);
End;
- Nhập dữ liệu từng bản ghi.
if lop[i].toan+lop[i].van>=18 then lop[i].xeploai:=`A`;
if (lop[i].toan+lop[i].van>=14) and (lop[i].toan+lop[i].van<18) then lop[i].xeploai:=`B`;
if (lop[i].toan+lop[i].van>=10) and (lop[i].toan+lop[i].van<14) then lop[i].xeploai:=`C`;
if (lop[i].toan+lop[i].van<10) then lop[i].xeploai:=`D`;

Khi i = 1 ? LOP[1].HOTEN
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 HOTEN 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.
A
9
10
Nam Đàn
22/09/91
Nguyễn An
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.
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’;
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 ‘);
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);
Hãy viết chương trình hoàn chỉnh để giải bài toán đặt vấn đề ?
Program Xep_loai;
Uses crt;
Type { Khai bao}
Hocsinh = record
Hoten: string[30];
Ngaysinh:string[10];
Diachi:string[50];
Toan,Van:real;
Xeploai: char;
end;
Var LOP: ARRAY[1..60] of Hocsinh;
i,n: Byte;
BEGIN
Clrscr; { nhap so hoc sinh }
Write(` So luong hoc sinh N=: `);readln(n);
{ nhap du lieu tung ban ghi}
For i:=1 to n do
Begin
writeln(` Nhap so lieu hoc sinh thu `,i);
Write(`HO VA TEN : `); readln(LOP[i].Hoten);
Write(` NGAY SINH : `); readln(LOP[i].Ngaysinh);
Write(` DIA CHI : `); readln(LOP[i].Diachi);
Write(` Diem toan : `);readln(LOP[i].Toan);
Write(` Diem van : `);readln(LOP[i].Van);
if
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.
Uses crt;
Type { Khai bao}
Hocsinh = record
Hoten: string[30];
Ngaysinh:string[10];
Diachi:string[50];
Toan,Van:real;
Xeploai: char;
end;
Var LOP: ARRAY[1..60] of Hocsinh;
i,n: Byte;
BEGIN
Clrscr;
Write(` So luong hoc sinh N=: `);readln(n); For i:=1 to n do
Begin
writeln;
writeln(` Nhap so lieu hoc sinh thu `,i);
Write(` HO VA TEN : `); readln(LOP[i].Hoten);
Write(` NGAY SINH : `); readln(LOP[i].Ngaysinh);
Write(` DIA CHI : `); readln(LOP[i].Diachi);
Write(` DIEM TOAN : `);readln(LOP[i].Toan);
Write(` DIEM VAN : `);readln(LOP[i].Van);
if lop[i].toan+lop[i].van>=18 then lop[i].xeploai:=`A`;
if (lop[i].toan+lop[i].van>=14) and (lop[i].toan+lop[i].van<18) then
lop[i].xeploai:=`B`;
if (lop[i].toan+lop[i].van>=10) and (lop[i].toan+lop[i].van<14) then
lop[i].xeploai:=`C`;
if (lop[i].toan+lop[i].van<10) then
lop[i].xeploai:=`D`;
end;
{ In bang du lieu }
Writeln;
Writeln(` Bang XEP LOAI: `);
For i:=1 to n do
Writeln(LOP[i].Hoten:30,LOP[i].toan:5:1,LOP[i].Van:5:1,LOP[i].xeploai: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ẻ: Trần Trung
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)