Tải bản đầy đủ (.pdf) (9 trang)

Kiểu dữ liệu bàn ghi và kiểu tệp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (124.36 KB, 9 trang )

Giaùo trỗnh Lỏỷp trỗnh Pascal cn baớn


58


Trang 58
BAèI 9. Dặẻ LIU KIỉU BAN GHI VAè KIỉU TP

I. Kióứu baớn ghi:
1. Khaùi nióỷm vaỡ õởnh nghộa:
Caùc kióứu cỏỳu truùc dổợ lióỷu nhổ kióứu maớng, tỏỷp hồỹp õóửu õổồỹc taỷo ra bũng mọỹt tỏỷp
hồỹp caùc phỏửn tổớ coù cuỡng kióứu.
óứ taỷo ra mọỹt kióứu cỏỳu truùc dổợ lióỷu mồùi vồùi caùc phỏửn tổớ dổợ lióỷu coù kióứu khaùc
nhau, ngổồỡi ta õởnh nghộa ra baớn ghi
(Record). RECORD
laỡ mọỹt cỏỳu truùc bao gọửm
nhióửu thaỡnh phỏửn. Caùc thaỡnh phỏửn coù thóứ thuọỹc caùc kióứu dổợ lióỷu khaùc nhau vaỡ õổồỹc
goỹi laỡ caùc trổồỡng
(Field),
mọựi trổồỡng õóửu õổồỹc õỷt tón.
óứ mọ taớ mọỹt kióứu T coù cỏỳu truùc Record vồùi danh saùch caùc trổồỡng coù tón laỡ
S1,
S2, ..., Sn
vaỡ coù caùc mọ taớ kióứu tổồng ổùng laỡ trổồỡng coù tón laỡ
T1, T2, ... Tn
ta duỡng
caùch vióỳt nhổ sau:
Type
T = Record
S1 : T1;


S2 : T2;
...
Sn : Tn;
End;
Vờ duỷ: Mọ taớ thồỡi gian DATE coù ba trổồỡng: Ngaỡy, Thaùng, Nm
Type
Date = Record
Ngay: 1..31;
Thang: 1..12;
Nam: Word;
End;
4 Vờ duỷ: óứ mọ taớ Nhỏn sổỷ cuớa phoỡng tọứ chổùc, ta duỡng caùc trổồỡng: HoDem, Ten,
NgaySinh, Luong,... ồớ õỏy ta lỏỳy vờ duỷ coù 5 trổồỡng:
Type
NhanSu = Record
HoDem: String[20];
Ten: String[7];
NgaySinh: Date;
Giaùo trỗnh Lỏỷp trỗnh Pascal cn baớn


59


Trang 59
Luong: Real;
CoGiaDinh: Boolean;
End;
Var
NV, NV1: NhanSu;

DS: Array[1..100] of NhanSu;
{Danh sach tren la kieu mang mo ta nhan su cua mot co quan co duoi 100
nhan vien}
ệ Ghi chuù: Ta coù thóứ vióỳt trổỷc tióỳp mọ taớ trổồỡng NgaySinh nóỳu nhổ chổa coù kióứu
Date nhổ sau:
Type
NhanSu = Record
HoDem: String[20];
Ten: String[7];
NgaySinh: Record
Ngay: 1..31;
Thang: 1..12;
Nam: Word;
End;
Luong: Real;
CoGiaDinh: Boolean;
End;
2. Sổớ duỷng Record:
Muọỳn truy cỏỷp mọỹt bióỳn kióứu Record, ta phaới truy cỏỷp theo thaỡnh phỏửn cuớa
chuùng. Cuù phaùp õóứ truy cỏỷp õeùn mọỹt thaỡnh phỏửn naỡo õoù laỡ:
<Tón bióỳn Record>.<Tón trổồỡng>

4 Vờ duỷ:
NV.HoLot := Huynh Dinh;
NV.Ten := Can;
NV.NgaySinh.Ngay : = 4;
NV. NgaySinh.Thang := 2;
NV. NgaySinh. Nam := 1982;
NV.Luong := 500000;
NV.CoGiaDinh := False;

Giaùo trỗnh Lỏỷp trỗnh Pascal cn baớn


60


Trang 60
4
Vờ duỷ 1: Nhỏỷp lyù lởch nhỏn vión cuớa mọỹt cồ quan.
Uses CRT;
Type
Date = Record
Ngay: 1..31;
Thang: 1..12;
Nam: Word;
End;
NhanSu = Record
HoDem: String[20];
Ten: String[7];
NgaySinh: Date;
Luong: Real;
CoGiaDinh: Boolean;
End;
Var
DS: Array[1..100] of NhanSu;
i, SoNV: Byte;
GD: Char;
Begin
ClrScr;
Writeln( NHAP HO SO NHAN VIEN );

Write( So nhan vien tai co quan: );
Readln(SoNV);
For i:=1 to SoNV do
Begin
ClrScr;
Write( Ho dem: ); Readln(DS[i].HoDem);
Write( Ho dem: ); Readln(DS[i].Ten);
Write( Ngay sinh: / /);
GotoXY(14,3); Readln(DS[i].NgaySinh.Ngay);
GotoXY(17,3); Readln(DS[i].NgaySinh.Thang);
GotoXY(20,3); Readln(DS[i].NgaySinh.Nam);
Write( Luong: ); Readln(DS[i].Luong);
Write( Co gia dinh (Y/N) ?: ); Readln(GD);
– Giạo trçnh Láûp trçnh Pascal càn bn —


61


Trang 61
If Upcase(GD) = ‘Y’ then
DS[i].CoGiaDinh := True
Else
DS[i].CoGiaDinh := False;
End;
Readln;
End.
Ư Ghi chụ:
- Cạc biãún
Record

cng kiãøu cọ thãø gạn cho nhau. Vê dủ:
NV := NV1;
thay vç ta
phi thỉûc hiãûn:
NV.HoDem := NV1.HoDem;
NV.Ten := NV1.Ten;
......
- Cọ thãø dng phẹp so sạnh:

If NV = NV1 then Write(‘ Cung mot nhan vien ! ‘);
Hồûc:

If (NV.HoDem = NV1.HoDem) and (NV.Ten = NV1.Ten) then
Write(‘ Hai nhan vien cung ho ten !. ‘);
- Khäng âỉåüc dng cạc thao tạc sau:
+ Cạc th tủc âc v ghi
(Read, Readln, Write, Writeln)
cho c mäüt biãún kiãøu
Record nhỉ:
Readln(NV), Writeln(NV);
+ Sỉí dủng cạc phẹp toạn quan hãû nhỉ:
<, >, <=, >=.
Nhỉng cọ thãø sỉí dủng
phẹp toạn
<>
v
=
cho hai biãún Record cọ cng kiãøu.
+ Táút c cạc phẹp toạn säú hc v logic.
3. Cáu lãûnh With:

Khi cáưn truy cáûp nhiãưu thnh pháưn ca mäüt biãún kiãøu Record, ta cọ thãø dng cáu
lãûnh
With
âãø chỉång trçnh âỉåüc gn hån.
Cụ phạp:
WITH <Biãún kiãøu Record> DO <Cáu lãûnh>
4
Vê dủ 1: Theo nhỉ vê dủ 1, ta cọ thãø viãút ngàõn gn hån nhỉ sau:
Uses CRT;
Type
Date = Record
Ngay: 1..31;
– Giaïo trçnh Láûp trçnh Pascal càn baín —


62


Trang 62
Thang: 1..12;
Nam: Word;
End;
NhanSu = Record
HoDem: String[20];
Ten: String[7];
NgaySinh: Date;
Luong: Real;
CoGiaDinh: Boolean;
End;
Var

DS: Array[1..100] of NhanSu;
i, SoNV: Byte;
GD: Char;
Begin
ClrScr;
Writeln(‘ NHAP HO SO NHAN VIEN ‘);
Write(‘ So nhan vien tai co quan: ‘);
Readln(SoNV);
For i:=1 to SoNV do
With DS[i] do
Begin
ClrScr;
Write(‘ Ho dem: ‘); Readln(HoDem);
Write(‘ Ho dem: ‘); Readln(Ten);
Write(‘ Ngay sinh: / /’);
With NgaySinh do
Begin
GotoXY(14,3); Readln(Ngay);
GotoXY(17,3); Readln(Thang);
GotoXY(20,3); Readln(Nam);
End;
Write(‘ Luong: ‘); Readln(Luong);
Write(‘ Co gia dinh (Y/N) ?: ’); Readln(GD);
If Upcase(GD) = ‘Y’ then

×