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)
- Kiểm tra sĩ số: Tổng số: Vắng: CP:
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;
Bài 13: Kiểu bản ghi Ngày soạn: Ngày giảng: 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. Nội dung cụ thể ổn định tổ chức lớp (1’) - Kiểm tra sĩ số: Tổng số: Vắng: CP: KP: 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; 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 chưa? HS: Chưa 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. Bà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ẽ lưu trữ dữ liệu về 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. 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 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 = record : ; : ; : ; 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 dấu chấm phẩy. - Cách khai báo biến: Var : ; Var : array[1..N] of ; 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: . 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ỉ 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. 2. Gán giá trị 15’ 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 VD: 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); 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 khai báo cùng một kiểu bản ghi. GV: - Các biến cùng cấu trúc nhưng 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? Var 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 chương trình. + Đầu tiên ta phải nhập tổng số học sinh trong lớp (nhập N). 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; 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 như mảng một 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 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). - 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 do ; - 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] . 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 do ; 3’ 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 Rút kinh nghiệm
Tài liệu đính kèm: