IV. KIỂU BẢN GHI (RECORD) 1 Ðịnh nghĩa và khai báo
2. Truy xuất một Record
Ðể truy xuất vào một trường của kiểu Record, ta cần dùng tên biến kiểu Record, sau đó là dấu chấm (.) rồi đến tên trường. Dạng tổng quát sau:
<Biến Record>.<Tên trường> Ví dụ 8.39: Nhập lý lịch nhân viên của một cơ quan TYPE
Lylich = RECORD {Lý lịch gồm Họ tên, Tuổi, Phái, Lương} Hoten : string [25] ;
Tuoi : integer ;
PhaiNam : boolean; {Nam : M (Male), Nữ : F (Female)} Luong : real;
END; VAR x, y : Lylich ;
nv : ARRAY [1 .. 200] OF Lylich ; {nv là mảng lý lịch các nhân viên} ...
Write('Nhập tổng số nhân viên : '); readln(n) ; FOR i := 1 TO n DO
BEGIN
Write(' Họ tên : '); readln(nv[i].Hoten); Writeln(' Tuổi : '); readln(nv[i].Tuoi) ;
Write(' Phái (Nam :M, Nữ : F) ? '); readln (Phai);
ELSE nv[i].PhaiNam := FALSE ; Writeln(' Lương : '); read(nv[i].Luong) ; END ;
...
Lưu ý :
· Các biến Record có thể gán cho nhau. Ví dụ x và y là 2 biến bản ghi có cùng kiểu Lylich, thì ta có thể gán:
x := y; Như vậy ta không phải lặp lại:
x.Hoten := y.Hoten ; x.Tuoi := y.Tuoi ; ...
· Không được viết ra màn hình hoặc đọc từ bàn phím một biến record như : Writeln(x); hoặc Readln(x);
· Không thể so sánh các record bằng các phép toán quan hệ <, >, <=, >=,=,<> · Không được dùng các toán số học và logic với kiểu record.
Ví dụ 8.40: Nhập vào 2 số phức C1 và C2 và tính C3 là tổng của chúng
Với chương trình loại này ta phải lần lượt nhập từng phần thực và phần ảo riêng rẽ của C1 và C2. Ta không thể dùng dòng lệnh C3 = C1 + C2. Kết quả tính C3 phải là phép cộng riêng rẽ từng phần thực và phần ảo của C1 và C2 rồi ghép lại.
PROGRAM So_Phuc ; TYPE Sophuc = Record pt, pa : real ; End; VAR c1, c2, c3 : Sophuc ; BEGIN
Write('Lần lượt nhập phần thực và phần ảo của 2 số phức C1 và C2') ; Write('Nhập phần thực của số phức C1 : ') ; Readln(c1.pt) ;
Write('Nhập phần ảo của số phức C1 : ') ; Readln(c1.pa) ; Write('Nhập phần thực của số phức C2 : ') ; Readln(c2.pt) ;
Write('Nhập phần ảo của số phức C2: ') ; Readln(c2.pa) ; c3.pt := c1.pt + c2.pt ;
c3.pa := c1.pa + c2.pa ;
Writeln('Kết quả của phép cộng 2 số phức :'); Write(‘C3 = C1 + C2 ‘);
Write(‘ = (‘, c1.pt:5:2, ‘+i ‘, c1.pa:5:2, ‘) +(‘, c2.pt:5:2, ‘+i ‘,c2.pa:5:2, ‘) ‘); Write(‘C3 = ‘, c3.pt:5:2, ‘+i’, c3.pa:5:2 );
Readln; END.