- Nhập xuất đợc dữ liệu cho biến bản ghi - Tham chiếu đến từng trờng của kiểu bản ghi - Sử dụng kiểu bản ghi để giải quyết một số bài toán đơn giản.. GV: Đa ra một số câu hỏi sau: - Làm
Trang 1Đ13 KIểU bản ghi
I Mục tiêu, yêu cầu:
1 Kiến thức:
- Biết khái niệm kiểu bản ghi
- Phân biệt đợc sự giống và khác nhau giữa kiểu bản ghi và kiểu mảng một chiều
2 Kĩ năng:
- Định nghĩa đợc kiểu bản ghi, khai báo đợc biến kiểu bản ghi trong ngôn ngữ lập trình Pascal
- Nhập xuất đợc dữ liệu cho biến bản ghi
- Tham chiếu đến từng trờng của kiểu bản ghi
- Sử dụng kiểu bản ghi để giải quyết một số bài toán đơn giản
3 Thái độ:
- Giáo viên: Nghiêm túc, chính xác, khoa học
- Học sinh: Hăng say xây dựng bài học
Ii Phơng pháp,
- Thuyết trình giảng giải, kết hợp vấn đáp học sinh làm sáng tỏ từng đơn vị kiến thức
III.phơng tiện dạy học:
- GV: Chuẩn máy chiếu, máy tính, bảng phụ, phiếu học tập, giáo án
- HS: Sách, vở, bút, thớc
IV Nội dung bài giảng:
1 Kiểm tra bài cũ: Hãy trình bày một số khái niệm về kiểu dữ liệu xâu? Cho biết kết quả của thao tác xử lí xâu sau:
+ Insert (‘ab’,’cd’,1) = ?
+ Pos ( ‘c’, ‘abcd’) = ?
2 Bài Mới:
*Đặt vấn đề:
GV:Yêu cầu hs quan sát bảng “Kết quả
thi Kiểm tra chất lợng ” (Nên vẽ vào giấy
khổ lớn)
Gv: hỏi học sinh một số thông tin, đối
t-ợng cần quản lí : SBD, Họ tên thí sinh,
Giới tính, Điểm của các môn,
GV: Đa ra một số câu hỏi sau:
- Làm thế nào để quản lý toàn bộ thông tin
trên của học sinh
GV: Khai thác từ “Bảng kết quả thi ”của
học sinh rồi chỉ ra: Mỗi hàng ta gọi là một
bản ghi (record), mỗi cột là một
tr-ờng(field)
Một số khái niệm:
- Kiểu bản ghi đợc dùng để mô tả cho 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
- Bản ghi thờng đợc gọi là Record, mỗi Record sẽ lu trữ dữ liệu về một đối tợng cần quản lý
- Mỗi 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ó dữ kiệu khác nhau
GV: Mỗi thông tin trên có thể lựa chọn
kiểu dữ liệu là gì?
HS: Lựa chọn nhiều mảng một chiều
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 → kiểu bản
ghi
Các ngôn ngữ lập trình thờng cho cách để xác định:
+ Tên kiểu bản ghi + Tên các trờng + Kiều dữ liệu của trờng + Cách khai báo biến + Cách tham chiếu đến trờng
Ngày 11/03/2011 Tiết 33:
Trang 2GV: Ta sẽ tìm hiểu cách khai báo và sử
dụng kiểu bản ghi trong ngôn ngữ Pascal
1 Khai báo
GV: Mỗi ngôn ngữ có một cách khai báo
kiểu bản ghi khác nhau
Ngôn ngữ Pascal không cho bạn khai báo
biến bản ghi trực tiếp mà phải khai báo
biến bản ghi thông qua định nghĩa kiểu
bản ghi
Trớc hết phải định nghĩa kiểu bản ghi
sau đó biến bản ghi đợc khai báo thông
qua kiểu bản ghi này
Để khai báo biến bản ghi, thờng định nghĩa một kiểu bản ghi sau đó khai báo biến bản ghi
Cách định nghĩa kiểu:
Type <tên kiểu bản ghi> = Record <Tên trờng 1> : <kiểu trờng 1>;
<Tên trờng k> : <kiểu trờng k>;
End; GV: Làm thế nào để có thể khai báo đợc
nhiều biến bản ghi có cùng một kiểu?
HS: (Gv sẽ gợi ý để học sinh đa ra đó là)
sử dụng kiểu mảng trong đó phần tử mảng
sẽ có kiểu bản ghi
Cách khai báo biến:
Var <Tên biến>:<Tên kiểu bản ghi>;
Var <Tên mảng>:Array [1 n] Of <Tên kiểu bản ghi>
GV: Đa ra ví dụ về khai báo bản ghi
Khai báo một 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 sẽ bao gồm: Số báo danh
(SBD), Họ và tên của HS(Hoten) và điểm
thi các môn của mỗi học sinh Toán, Văn)
Hãy xác định kiểu dữ liệu cho các trờng
trên?
Type
Hocsinh = record
SBD: integer;
Hoten: string[30];
Toan,Van,Tong:real;
Ketqua: string[10];
end; Var Hs1, hs2: Hoc sinh;
Lop: Array [ 1 50] OF Hocsinh;
GV: Khi có nhu cầu thay đổi thông tin
trong từng trờng, làm thế nào để truy cập
vào từng trờng của bản ghi?
HS: Phải biết cách tham chiếu trờng
Để 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>
Ví dụ:Hs1 Hoten, hs2.hoten,
Gv: Nếu tổ chức mảng Lop và i chỉ số của
biến mảng la tham chiếu ntn?
GV: HS1,Hs2 tên kiểu là gì?cùng kiểu ko?
GV: Lop[1] và Hs1 cùng kiểu không?
LOP[i] SBD, Lop [i] Toan,
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
Khi nhập thông tin vào từ bàn phím, ta
thờng phải nhập cho từng trờng
2 Gán giá trị
Có 2 cách để gán giá trị cho bản ghi
- Dùng lệnh gán trực tiếp: Nếu A, B là
hai bản ghi chùng kiểu ta có thể gán giá trị của A cho B bằng câu lệnh gán:
VD: B :=A; hoặc A := B;
Ví dụ;
Chơng trình sau đợc viết trong ngôn ngữ
Pascal dùng kiểu bản ghi để xử lý bảng kết
quả thi bao gồm 2 môn toán, văn của học
sinh Sau khi nhập xong danh sách sẽ đa ra
bảng kết quả thi
- Gán giá trị cho từng trờng Dùng câu
lệnh gán giá trị cho các trờng hoặc nhập vào từ bàn phím
Hs1 Hoten := ‘Nguyen Van Anh’;
Readln (lop[i] Ngay sinh) Chơng trình xử lý bằng kết quả thi
Program vd1;
Type { Khai bao}
Hocsinh = record
Write(' Diem toan:) ; readln(LOP[i].Toan); Write(' Diem van :');readln(LOP[i].Van); end;
Trang 3SBD: integer;
Hoten: string[30];
Toan,Van,Tong:real;
Ketqua: string[10];
end;
Var LOP:ARRAY[1 100] of Hocsinh;
i,n: integer;
BEGIN { nhap so hoc sinh }
Write('Nhap so hoc sinh trong lop : ');
readln(n);
{ nhap du lieu tung ban ghi}
For i:=1 to n do
Begin
writeln(' Nhap so lieu hoc sinh thu ',i);
Write(' SBD : '); readln(LOP[i].SBD);
Write('HO VA TEN: );
readln(LOP[i].Hoten);
{ 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
V Cñng cè:
- Nh¾c l¹i mét sè kh¸i niÖm míi (nÕu cßn thêi gian yªu cÇu häc sinh viÕt khai b¸o cho mét bµi to¸n quan lÝ Nh©n viªn C«ng ty A)
- Nh¾c l¹i cÊu tróc c©u lÖnh If - Then, If - Then - Else th«ng qua c¸c vÝ dô
- Ra bµi tËp vÒ nhµ: C©u hái: H·y viÕt chương tr×nh nhËp vµo danh s¸ch häc sinh mét líp häc gåm c¸c th«ng tin (Hä tªn, §iÓm To¸n, §iÓm lý, ®iÓm hãa, riªng §TB tÝnh theo c«ng thøc §TB := (TOAN+LY+HOA)/3, h·y in danh s¸ch häc sinh theo tø h¹ng gi¶m dÇn cña
§TB
VI Rót kinh nghiÖm sau bµi gi¶ng: