<< Chapter < Page | Chapter >> Page > |
Readln;
END.
Đối với các bản ghi lồng nhau thì lệnh with..do cũng phải lồng nhau.
a. Xây dựng kiểu dữ liệu:
Bản ghi có cấu trúc cố định dùng để mô tả một đối tượng mà các thể hiện của nó có các thuộc tính như nhau. Trong thực tế nhiều khi ta gặp những đối tượng mà thuộc tính của chúng gồm hai loại:
Ví dụ 2.4: Kiểu dữ liệu quản lý vé ngành đường sắt
Trên một tuyến đường sắt có nhiều đoàn tàu chạy trong ngày, có những chuyến tốc hành chỉ dừng lại ở một vài ga dọc đường, có những chuyến tàu thường dừng lại tất cả các ga lẻ. Với tàu tốc hành, hành khách chỉ được mang theo hành lý không quá 20 kg và sẽ có suất ăn trên tàu. Với tàu thường hành khách phải mua vé hàng hóa nếu có vận chuyển hàng hóa và không có suất ăn trên tàu.
Thuộc tính chung: tên đoàn tàu (TDT), tuyến đường (TD), giờ đi (GD), loại tàu (LT) ( ví dụ tốc hành –TH, tàu thường TT)
Thuộc tính riêng với tàu tốc hành: Số xuất ăn (SXA), số ga lẻ dừng dọc đường (SGD), còn tàu thường có thuộc tính riêng là cước hàng hóa (CHH).
Xây dựng các bản ghi dữ liệu:
Type QLDS=record
Ten_doan_tau:string[3];
Tuyen_duong:string[15];
Gio_di:real;
Case Loai_tau: (Toc_hanh,Tau_thuong ) of
Toc_hanh:(So_xuat_an:Word; So_ga_do:Byte);
Tau_thuong: (cuoc_hang_hoa:real);
End;
Ví dụ 2.5: Kiểu dữ liệu quản lý điểm của sinh viên:
SV là kiểu dữ liệu bản ghi dùng để quản lý điểm của sinh viên. Các trường cố định của SV gồm MHS (mã hồ sơ), HOTEN (họ tên), NS (ngày sinh), GIOI (giới tính), Khoa (Sư phạm- SP, Kinh tế - KT, Cơ điện – CD). Các môn học tùy thuộc vào khoa mà sinh viên đang theo học, giả sử chúng ta quy định khoa sư phạm có các môn : Toán, Lý, Tin cơ bản, lập trình nâng cao; khoa Kinh tế có các môn : Kế toán máy, Marketing; khoa Cơ điện có các môn: Cơ học máy, Sức bền vật liệu. Tất cả sinh viên nếu là Nam thì học thêm môn Bơi lội, nếu là Nữ thì học thêm Thể dục nghệ thuật.
Mỗi bản ghi kiểu sinh viên có cấu trúc thuộc một trong các dạng sau:
* Sinh viên khoa sư phạm:
1/ Mhs, Hoten, Ns, Boi_loi, Toan, Ly, Tincoban, Lap_trinh_nang_cao
2/ Mhs, Hoten, Ns, The_duc, Toan, Ly, Tincoban, Lap_trinh_nang_cao
* Sinh viên khoa cơ điện:
3/ Mhs, Hoten, Ns, Boi_loi, Co_hoc_may, Suc_ben_vat_lieu
4/ Mhs, Hoten, Ns, The_duc, Co_hoc_may, Suc_ben_vat_lieu
* Sinh viên khoa Kinh tế:
5/ Mhs, Hoten, Ns, Boi_loi, Ke_toan_may, Marketing
6/ Mhs, Hoten, Ns, The_duc, Ke_toan_may, Marketing
Kiểu dữ liệu bản ghi SV được khai báo như sau:
SV=record
Mhs: Byte;
Hoten: String[20];
NS:Record;
Ngay:1..31; Thang:1..12; Nam:Word;
End;
Case monhoc:(pl1,pl2) of
pl1: (case gioi:(Nam,Nu) of
Nam:(Boi loi:real);
Nu: (the_duc:real);
pl2: (case KHOA:(SP,CD,KT) of
SP: (Toan, Ly, Tincb, Ltnc:Real);
CD: (Co_hoc_may, Suc_ben_vat_lieu: real);
KT: (Ke_toan_may, Marketing:real));
End;
Từ cách khai báo trên, ta rút ra một số nhận xét sau:
Nhận xét 1: Trong một kiểu record các trường cố định được khai báo trước, trường phân loại khai báo sau, như vậy truờng phân loại phải là trường khai báo cuối cùng. Các trường thay đổi khai báo bên trong trường phân loại.
Nhận xét 2: Mỗi kiểu dữ liệu record có cấu trúc thay đổi chỉ được phép có duy nhất một trường phân loại, nghĩa là không thể có hai toán tử case…of ngang hàng khi khai báo.
Nhận xét 3: Vì mỗi trường lại có thể là một bản ghi cho nên bên trong trường phân loại lại có thể chứa các trường phân loại khác, đây là trường hợp bản ghi thay đổi nhiều mức.
b. Truy nhập:
Việc truy nhập vào các trường cố định của bản ghi có cấu trúc thay đổi hoàn toàn giống như bản ghi thường. Còn việc truy nhập vào các trường thay đổi cần phải chú ý một số điểm sau:
Bài tập chương 2:
1. Viết lại chương trình ở ví dụ 2.5, đưa vào chương trình con Nhập và chương trình con hiện. Dữ liệu đưa ra có dạng như sau:
Ma ho so | Ho va ten | Gioitinh | Khoa | So mon hoc | Tong diem | Trung bình |
… | ||||||
Notification Switch
Would you like to follow the 'Lập trình nâng cao' conversation and receive update notifications?