* Kh¸i niÖm: 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.... liệu về một đối tượng cần quản l[r]
Trang 1Bài 13: Kiểu bản ghi
Ngày soạn:
Ngày giảng:
I Mục đích, yêu cầu
- Biết khái niệm kiểu bản ghi
- Biết cách khai báo bản ghi, truy cập
II Nội dung cụ thể
1 ổn định tổ chức lớp (1’)
KP:
2 Kiểm tra bài cũ (5’)
Câu hỏi:
Cho một số biến: họ tên, ngày sinh, giới tính, Tin, Toán , Lí, Hoá, Văn,
Sử, Địa Hãy khai báo kiểu dữ liệu hợp lí với các biến trên?
Trả lời:
Var hoten: string[30];
ngaysinh: string[10];
gioitinh: boolean;
toan, tin, li, hoa, van, su, dia: real;
3 Triển khai bài mới
Đặt vấn đề: Trong các kiểu dữ liệu mà các em đã !D học có kiểu dữ
liệu nào dùng để khai báo chung cho tất cả các biến
HS: 1 có kiểu dữ liệu nào
Bài hôm nay cô sẽ giới thiệu cho các em một kiểu dữ liệu mới, cho phép chúng ta khai báo các đối
Trang 2Bài 13: Kiểu bản ghi.
học sinh
Thời gian
Xét VD:
sinh của một kỳ thi tuyển sinh cần quản lí !D các thông tin sau: SBD của thí sinh, họ tên của thí sinh, ngày sinh, giới tính, và
điểm thi của 7 môn: Toán , Tin,
Lí, Hoá, Văn, Sử, Địa
GV: Làm thế nào để quản lí toàn bộ thông tin trên của học sinh?
HS: Có thể quản lí mỗi dữ kiện trên là mảng một chiều
GV: Mỗi thông tin trên có kiểu dữ liệu là gì?
HS: Trả lời
GV: Ngôn ngữ lập trình bậc cao có cách tốt hơn để quản lí dữ liệu trên Đó là bản ghi
4’
* Khái niệm: Dữ liệu kiểu bản ghi
(record) dùng để mô tả các đối
mà các thuộc tính có thể có các
kiểu dữ liệu khác nhau
Trang 3- Mỗi một bản ghi sẽ % trữ dữ
liệu về một đối
- Mỗi một thuộc tính của đối
của bản ghi Các
có thể có các kiểu dữ liệu khác
nhau
GV: Các em hãy quan sát bảng kết quả thi (SGK – Tr74)
- Mỗi hàng ta gọi là một bản ghi
- Mỗi cột là một
* Qui tắc, cách thức xác định:
- Tên kiểu bản ghi;
- Tên các thuộc tính
- Kiểu dữ liệu của mỗi
- Cách khai báo biến;
- Cách tham chiếu đến
1 Khai báo
- Cách khai báo kiểu:
GV: Do dữ liệu kiểu bản ghi
biến bản ghi thông qua khai báo kiểu bản ghi
GV: Các thông tin cần khai báo gồm: tên kiểu bản ghi, tên các thuộc tính, kiểu dữ liệu của mỗi thuộc tính
15’
Type <tên kiểu bản ghi> = record
<tên
<tên
<tên
End;
GV:
- Phần mô tả kiểu bản ghi !D
bắt đầu bằng từ khoá record và kết thúc bằng từ khoá end;
- Giữa 2 từ khóa đó là phần khai
Trang 4báo các dấu hai chấm, rồi đến kiểu dữ liệu của
bởi dấu chấm phẩy
- Cách khai báo biến:
Var <tên biến bản ghi> : <tên kiểu
bản ghi>;
Var <tên mảng> : array[1 N] of
<tên kiểu bản ghi>;
VD: Khai báo 1 kiểu bản ghi
để xử lí bảng kết quả thi của các học sinh Mỗi bản ghi bao gồm:
họ tên, ngày sinh, giới tính, và
điểm thi các môn của mỗi học sinh (toán, tin, lí, hoá, văn, sử,
địa) Em hãy xác định kiểu dữ liệu cho các
HS: Hoten: string[30];
Ngaysinh: string[10]; Gioitinh: boolean;
toan, tin, li, hoa, van, su, dia: real;
- Để truy cập vào từng
bản ghi ta viết:
<tên biến bản ghi> <tên
GV: Cũng giống kiểu mảng và kiểu xâu thì dữ liệu kiểu bản ghi cũng có cách truy cập vào từng
ghi
VD: A Hoten
B Ngaysinh Lop[i] Toan Với i là một chỉ số nào đó của mảng
Trang 5- GV: Muốn tham chiếu đến
ta viết
- HS: A Gioitinh
- GV: Lop[10] Hoten là để chỉ thông tin gì?
- HS: Thông tin về họ tên của phần tử thứ 10 của mảng Lop
- GV: Trong VD trên, em hãy cho biết tên kiểu dữ liệu của biến A?
GV: Hai biến A, B có cùng kiểu dữ liệu hay không?
HS:
- Biến A có kiểu dữ liệu là Hocsinh
- Hai biến A, B có cùng một kiểu dữ liệu là Hocsinh
GV: Phần tử Lop[1] và Lop[6] của mảng Lop thuộc kiểu gì? Lop[1] và A có cùng kiểu hay không?
HS:
- Hai phần tử đó thuộc kiểu Hocsinh
- Lop[1] và A cùng kiểu dữ liệu
Trang 62 Gán giá trị 15’
GV: Vì bản ghi có nhiều
bản ghi phức tạp hơn các biến khác
Có 2 cách để gán giá trị cho bản
ghi:
- Cách 1: Dùng lệnh gán trực tiếp
VD: A:= B; B:=A;
- Cách 2: Gán giá trị cho từng
+ Thực hiện bằng lệnh gán:
VD: A Hoten := B Hoten;
+ Nhập từ bàn phím
VD: Read (A Hoten);
GV: Cách 1 !D thực hiện trong điều kiện nào?
HS: Khi hai biến A, B phải
!D khai báo cùng một kiểu bản ghi
GV:
- Các biến cùng cấu trúc
có tên kiểu khác nhau thì không
áp dụng !D phép gán
- Giữa hai biến bản ghi cùng kiểu thì chỉ có thể dùng phép so sánh = hoặc <>
VD: SGK (Tr 76)
Program xep-loai;
Uses crt;
Const max = 60;
Type hocsinh = record
Hoten: string [30];
Ngaysinh:string [10];
Diachi: string [50];
Toan, Van: real;
Xeploai: char;
End;
VD: SGK (Tr 76)
- GV: Đọc đề bài
- GV: Em hãy xác định các thuộc tính
- HS: Các thuộc tính: họ và tên, ngày sinh, địa chỉ, điểm toán,
điểm văn, xếp loại
- GV: Ta sử dụng kiểu dữ liệu
toán này?
Trang 7Var
Lop : array [1 max] of hocsinh;
N, i: Byte;
Begin
Clrscr;
Write (‘Nhap so hoc sinh trong lop
N = ’); readln (N);
For i:= 1 to N do
Begin
writeln(‘nhap so lieu ve 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’;
- HS: Sử dụng một mảng các bản ghi
- GV: Em hãy mô tả thông tin về một học sinh bằng kiểu bản ghi?
- HS:
Type hocsinh = record
Hoten: string [30];
Ngaysinh : string [10];
Diachi : string [50];
Toan, Van : real;
Xeploai : char;
End;
- GV: Sau khi mô tả kiểu bản ghi ta cần phải khai báo các biến cần sử dụng Hãy tạo mảng các bản ghi đó?
- HS:
Var Lop: array [1 60] of
hocsinh;
- GV: Sử dụng biến N để nhập
số học sinh trong lớp, và biến i
là biến chỉ số Hai biến này có kiểu nguyên
- GV: sau phần khai báo là phần thân
+ Đầu tiên ta phải nhập tổng số học sinh trong lớp (nhập N)
Trang 8If (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;
Clrscr;
Writeln(‘Danh sach xep loai
hoc sinh trong lop:’);
For i := 1 to N do
Writeln (Lop [i] Hoten:30, ’xep
loai:’, Lop[i] Xeploai);
Readln;
End.
- GV: Giống chiều để nhập dữ liệu cho các phần tử của mảng các bản ghi ta
sử dụng câu lệnh nào?
-HS: Sử dụng lệnh For… to… do
- GV: Để nhập thông tin cho các
lệnh nào?
HS: Nhập trực tiếp từ bàn phím Readln (Lop[i] Hoten); Readln (Lop[i] Ngaysinh); Readln (Lop[i] Diachi); Readln (Lop[i] Toan);
Readln (Lop[i] Van);
GV:
!D nhập từ bàn phím mà !D xác định dựa vào 2 thuộc tính
điểm toán và văn theo 4 hợp đã !D quy định
- GV: Để tính giá trị loại ta sử dụng câu lệnh gì?
- HS: Câu lệnh If… Then…
- GV: Có thể sử dụng If…
Then… Else !D không?
- HS: Sử dụng !D
- GV: Sau khi nhập xong thì ta
Trang 9phải ! kết quả ra màn hình.
Sử dụng lệnh lặp For… do Writeln (biến)
- Câu lệnh with: cho ta tham chiếu
đến
ngắn gọn
With <tên biến bản ghi> do
<câu lệnh>;
- GV: Ta thấy câu lệnh sauFor…
do mỗi khi truy cập đến một
ta viết: Lop [i] <tên trường>
` vậy cần xử lí bao nhiêu
nhiêu lần Lop [i].
Pascal cung cấp lệnh with để tham chiếu đến
bản ghi một cách ngắn gọn:
With <tên biến bản ghi> do
<câu lệnh>;
3’
4 Củng cố, dặn dò (2’)
Đặc điểm cơ bản giống và khác nhau cảu kiểu bản ghi với 2 kiểu dữ liệu có cấu trúc là mảng và xâu:
- Đặc điểm chung của kiểu dữ liệu có cấu trúc: @D tạo nên từ một số kiểu cơ sở, giá trị cảu một biến có nhiều thành phần
- Khác với mảng và xâu, các kiểu thành phần của một kiểu bản ghi có thể thuộc các kiểu dữ liệu cơ sở khác nhau
Các em về nhà đọc thêm câu lệnh with (SGK – Tr 134)
Bài tập về nhà: Chuẩn bị các bài tập trong SGK – Tr 79
III Rút kinh nghiệm
………