Bài 13. Kiểu bản ghi
Chia sẻ bởi Nguyễn Văn Triển |
Ngày 10/05/2019 |
61
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:
Giáo Viên thực hiện: Nguyễn Văn Triển
TRƯỜNG THPT TRỰC NINH B
Nam Định
Tin học 11
KIỂU BẢN GHI
Kiểm tra bài cũ
1. Khai báo biến mảng một chiều theo hai cách trực tiếp và gián tiếp? Cho ví dụ?
2.Viết chương trình nhập họ tên hai học sinh. In ra màn hình họ tên hai học sinh đó?
Click Xem k?t qu?
Click Xem k?t qu?
KIỂU BẢN GHI
BÀI 13
..
...
...
....................
...
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ụ BI TON 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.
Click Ch?y chuong trình
Click Ch?y chuong trình
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.
Cảm ơn Thầy Cô và các em đã theo dõi
Chúc quý Thầy mạnh khỏe, các em học tốt
Khai báo biến mảng một chiều
Cách 1. Khai báo trực tiếp
var: array[kiểu chỉ số] of
Ví dụ:
Var a: array[10…300] of integer;
Cách 2. Khai báo gián tiếp
Type=array[kiểu chỉ số] of
Var : ;
Ví dụ:
type songuyen = array[10…300] of integer;
Var a: songuyen
Click Quay l?i
Click Ch?y chuong trình
TRƯỜNG THPT TRỰC NINH B
Nam Định
Tin học 11
KIỂU BẢN GHI
Kiểm tra bài cũ
1. Khai báo biến mảng một chiều theo hai cách trực tiếp và gián tiếp? Cho ví dụ?
2.Viết chương trình nhập họ tên hai học sinh. In ra màn hình họ tên hai học sinh đó?
Click Xem k?t qu?
Click Xem k?t qu?
KIỂU BẢN GHI
BÀI 13
..
...
...
....................
...
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ụ BI TON 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.
Click Ch?y chuong trình
Click Ch?y chuong trình
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.
Cảm ơn Thầy Cô và các em đã theo dõi
Chúc quý Thầy mạnh khỏe, các em học tốt
Khai báo biến mảng một chiều
Cách 1. Khai báo trực tiếp
var
Ví dụ:
Var a: array[10…300] of integer;
Cách 2. Khai báo gián tiếp
Type
Var
Ví dụ:
type songuyen = array[10…300] of integer;
Var a: songuyen
Click Quay l?i
Click Ch?y chuong trình
* 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ẻ: Nguyễn Văn Triển
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)