Đặt vấn đề: Trong các kiểu dữ liệu mà các em đã đợc học có kiểu dữ liệu nào dùng để khai báo chung cho tất cả các biến nh trên hay cha?. Bài hôm nay cô sẽ giới thiệu cho các em một kiểu
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 trờng của bản ghi
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 đã đợc học có kiểu dữ liệu
nào dùng để khai báo chung cho tất cả các biến nh trên hay cha?
HS: Cha 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 tợng mà có cùng một số thuộc tính giống nhau
Trang 2Bài 13: Kiểu bản ghi.
Nội dung Hoạt động của giáo viên và
học sinh
Thời gian
Xét VD:
Chơng trình quản lí các thí sinh của một kỳ thi tuyển sinh cần quản lí đợc 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
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
- Mỗi một bản ghi sẽ lu trữ dữ liệu GV: Các em hãy quan sát bảng
Trang 3về một đối tợng cần quản lí.
- Mỗi một thuộc tính của đối tợng
tơng ứng với một trờng của bản
ghi Các trờng khác nhau có thể có
các kiểu dữ liệu khác nhau
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 trờng
* 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 (trờng);
- Kiểu dữ liệu của mỗi trờng;
- Cách khai báo biến;
- Cách tham chiếu đến trờng
1 Khai báo
- Cách khai báo kiểu:
GV: Do dữ liệu kiểu bản ghi thờng dùng để mô tả nhiều đối t-ợng nên ta thờng khai báo 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 trờng 1> : <kiểu trờng 1>;
<tên trờng 2> : <kiểu trờng 2>;
<tên trờng k> : <kiểu trờng k>;
End;
GV:
- Phần mô tả kiểu bản ghi đợc 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 báo các trờng gồm tên trờng, dấu hai chấm, rồi đến kiểu dữ
liệu của trờng đó và kết thúc bởi
Trang 4dấ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 trờng trên?
HS: Hoten: string[30];
Ngaysinh: string[10]; Gioitinh: boolean;
toan, tin, li, hoa, van, su, dia: real;
- Để truy cập vào từng trờng của
bản ghi ta viết:
<tên biến bản ghi> <tên trờng>
GV: Cũng giống nh dữ liệu 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 trờng của bản ghi
VD: A Hoten
B Ngaysinh Lop[i] Toan Với i là một chỉ số nào đó của mảng
- GV: Muốn tham chiếu đến tr-ờng Gioitinh của đối tợng A ta viết nh thế nào?
- HS: A Gioitinh
- GV: Lop[10] Hoten là để chỉ
Trang 5thô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
GV: Vì bản ghi có nhiều trờng nên việc gán giá trị cho 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
GV: Cách 1 đợc thực hiện trong điều kiện nào?
HS: Khi hai biến A, B phải đợc
Trang 6VD: A:= B; B:=A;
- Cách 2: Gán giá trị cho từng
tr-ờ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);
khai báo cùng một kiểu bản ghi GV:
- Các biến cùng cấu trúc nhng
có tên kiểu khác nhau thì không
áp dụng đợc 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)
Chơng trình hoàn thiện:
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 (Trờng)?
- 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
nh thế nào để giải quyết bài 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
- 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 chơng trình
If (Lop [i] Toan + Lop[i] Van >= - GV: Giống nh mảng một chiều
Trang 810) 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.
để 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 trờng của bản ghi ta sử dụng 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: Trờng xếp loại không đợc nhập từ bàn phím mà đợc xác
định dựa vào 2 thuộc tính điểm toán và văn theo 4 trờng hợp đã
đợc quy định
- GV: Để tính giá trị trờng xếp 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 đ… ợc không?
- HS: Sử dụng đợc
- GV: Sau khi nhập xong thì ta phải đa kết quả ra màn hình
Sử dụng lệnh lặp For do… Writeln (biến)
Trang 9- Câu lệnh with: cho ta tham chiếu
đến trờng của bản ghi một cách
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 trờng của biến bản ghi
Lop [i], ta viết: Lop [i] <tên tr-ờng>
Nh vậy cần xử lí bao nhiêu trờng thì cần phải viết kèm bấy nhiêu lần Lop [i]
Pascal cung cấp lệnh with để tham chiếu đến trờng của biế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: Đợc 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
………