* 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]
(1)Bµ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 ghi, truy cập trường ghi II 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 liệu mà các em đã học có kiểu liệu nào dùng để khai báo chung cho tất các biến trên hay chưa? HS: Cha cã kiÓu d÷ liÖu nµo Bµi h«m 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 số thuộc tính giống Lop11.com (2) Bµi 13: KiÓu b¶n ghi Néi dung Hoạt động giáo viên và Thêi häc sinh 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 m«n: To¸n , Tin, LÝ, Ho¸, V¨n, Sö, §Þa GV: Làm 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 để quản lí d÷ liÖu trªn §ã lµ b¶n ghi * 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 số thuộc tính mµ c¸c thuéc tÝnh cã thÓ cã c¸c kiÓu d÷ liÖu kh¸c Lop11.com 4’ (3) - Mçi mét b¶n ghi sÏ lu tr÷ d÷ GV: C¸c em h·y quan s¸t b¶ng liệu đối tượng cần quản lí kÕt qu¶ thi (SGK – Tr74) - Mỗi thuộc tính đối - Mçi hµng ta gäi lµ mét b¶n tượng tương ứng với trường ghi ghi Các trường khác - Mỗi cột là trường cã thÓ cã c¸c kiÓu d÷ liÖu kh¸c * 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 liệu trường; - C¸ch khai b¸o biÕn; - Cách tham chiếu đến trường Khai b¸o 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 - C¸ch khai b¸o kiÓu: thuéc tÝnh Type <tªn kiÓu b¶n ghi> = record GV: <tên trường 1> : <kiểu trường 1>; - Phần mô tả kiểu ghi <tên trường 2> : <kiểu trường 2>; khoá record và <tên trường k> : <kiểu trường k>; kết thúc từ khoá end; End; - Giữa từ khóa đó là phần khai Lop11.com 15’ (4) báo các trường gồm tên trường, dấu hai chấm, đến kiểu liệu trường đó và kết thúc bëi dÊu chÊm phÈy VD: Khai b¸o kiÓu b¶n ghi - C¸ch khai b¸o biÕn: Var <tên biến ghi> : <tên kiểu để xử lí bảng kết thi các b¶n ghi>; häc sinh Mçi b¶n ghi bao gåm: Var <tªn m¶ng> : array[1 N] of hä tªn, ngµy sinh, giíi tÝnh, vµ <tªn kiÓu b¶n ghi>; ®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 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 trường GV: Còng gièng nh d÷ liÖu b¶n ghi ta viÕt: kiÓu m¶ng vµ kiÓu x©u th× d÷ <tên biến ghi> <tên trường> liÖu kiÓu b¶n ghi còng cã c¸ch truy cập vào trường ghi VD: A Hoten B Ngaysinh Lop[i] Toan Với i là số nào đó m¶ng Lop11.com (5) - GV: Muốn tham chiếu đến trường Gioitinh đối tượng A ta viÕt nh thÕ nµo? - HS: A Gioitinh - GV: Lop[10] Hoten là để 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 Lop11.com (6) 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ó cách để gán giá trị cho ghi: GV: C¸ch ®îc thùc hiÖn ®iÒu kiÖn nµo? - 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 HS: Khi hai biÕn A, B ph¶i ®îc khai b¸o cïng mét kiÓu b¶n ghi GV: 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); - C¸c biÕn cïng cÊu tróc nhng cã tªn kiÓu kh¸c 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) VD: SGK (Tr 76) Chương trình hoàn thiện: - GV: Đọc đề bài Program xep-loai; Uses crt; Const max = 60; Type hocsinh = record Hoten: string [30]; - 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, Ngaysinh:string [10]; ®iÓm v¨n, xÕp lo¹i Diachi: string [50]; - GV: Ta sö dông kiÓu d÷ liÖu Toan, Van: real; nào để giải bài Xeploai: char; to¸n nµy? End; Lop11.com (7) Var - HS: Sö dông mét m¶ng c¸c b¶n Lop : array [1 max] of hocsinh; ghi N, i: Byte; - GV: Em h·y m« t¶ th«ng tin vÒ Begin mét häc sinh b»ng kiÓu b¶n ghi? Clrscr; - HS: Write (‘Nhap so hoc sinh lop Type hocsinh = record Hoten: string [30]; N = ’); readln (N); For i:= to N Ngaysinh : string [10]; Begin Diachi : string [50]; Toan, Van : real; writeln(‘nhap so lieu ve hoc Xeploai : char; sinh thu ’,i, ‘:’); write (‘Ho va ten:’); End; readln (Lop [i] Hoten); - GV: Sau m« t¶ kiÓu b¶n write (‘Ngay sinh:’); ghi ta cÇn ph¶i khai b¸o c¸c biÕn readln (Lop [i] Ngaysinh); cÇn sö dông H·y t¹o m¶ng c¸c write (‘Dia chi:’); ghi đó? readln (Lop [i] Diachi); - HS: Var Lop: array [1 60] of write (‘Diem Toan:’); hocsinh; readln (Lop [i] Toan); write (‘Diem Van:’); - GV: Sử dụng biến N để nhập readln (Lop [i] Van); sè häc sinh líp, vµ biÕn i If Lop [i] Toan + Lop[i] Van >= lµ biÕn chØ sè Hai biÕn nµy cã 18 Then Lop [i] Xeploai := ‘A’; kiÓu nguyªn If (Lop [i] Toan + Lop[i] Van - GV: sau phÇn khai b¸o lµ phÇn >= 14) and thân chương trình (Lop [i] Toan + Lop[i] Van < 18) + §Çu tiªn ta ph¶i nhËp tæng sè häc sinh líp (nhËp N) Then Lop [i] Xeploai := ‘B’; Lop11.com (8) If (Lop [i] Toan + Lop[i] Van >= - GV: Gièng nh m¶ng mét 10) and chiều để nhập liệu cho các (Lop [i] Toan + Lop[i] Van< 14) phÇn tö cña m¶ng c¸c b¶n ghi ta Then Lop [i] Xeploai := ‘C’; sö dông c©u lÖnh nµo? If Lop [i] Toan + Lop[i] Van < -HS: Sö dông lÖnh For… to… 10 Then Lop [i] Xeploai := ‘D’; - GV: §Ó nhËp th«ng tin cho c¸c End; trường ghi ta sử dụng Clrscr; lÖnh nµo? Writeln(‘Danh sach xep loai HS: NhËp trùc tiÕp tõ bµn phÝm Readln (Lop[i] Hoten); hoc sinh lop:’); For i := to N Readln (Lop[i] Ngaysinh); Writeln (Lop [i] Hoten:30, ’xep Readln (Lop[i] Diachi); Readln (Lop[i] Toan); loai:’, Lop[i] Xeploai); Readln; Readln (Lop[i] Van); End 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 thuộc tính điểm toán và văn theo trường hợp đã 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 nhËp xong th× ta Lop11.com (9) ph¶i ®a kÕt qu¶ mµn h×nh Sö dông lÖnh lÆp For… Writeln (biÕn) - C©u lÖnh with: cho ta tham chiÕu - GV: Ta thÊy c©u lÖnh sauFor… 3’ đến trường ghi cách truy cập đến ng¾n gän trường biến ghi Lop [i], With <tªn biÕn b¶n ghi> ta viết: Lop [i] <tên trường> <c©u lÖnh>; Nh vËy cÇn xö lÝ bao nhiªu trường thì cần phải viết kèm nhiªu lÇn Lop [i] Pascal cung cấp lệnh with để tham chiếu đến trường biến b¶n ghi mét c¸ch ng¾n gän: With <tªn biÕn b¶n ghi> <c©u lÖnh>; Cñng cè, dÆn dß (2’) §Æc ®iÓm c¬ b¶n gièng vµ kh¸c c¶u kiÓu b¶n ghi víi 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 Các em 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 SGK – Tr 79 III Rót kinh nghiÖm …………………………………………………………………………… Lop11.com (10)