Demagun erregistroen fitxategi bat sortu dugula. Fitxategiaren elementu bakoitza erregistro bat da, eta erregistroak bi eremu ditu: lehena Integer datu-motakoa eta bigarrena Real datu-motakoa.trdIntReal = RECORD Demagun sortutako fitxategiaren izena Zenbakiak.dat dela eta bere edukia datu-mota desberdineko fitxategien bitartez pantailaratzea nahi dugula. Eduki bera pantailaratzeko lau fitxategiren datu-motak erabiliko dira. |
1
Zenbakiak.dat fitxategiaren edukia pantailaratzeko erabiliko dugun datu-mota DM_rdIntReal da, hots, sorrerako datu-mota berbera. Ondorioz, pantailaratuko den informazioa "jatorrizkoa" izango da. Adibidean:
1. eremuan 163 balioa eta 2. eremuan 1.1295338E+001 balioa.
2
Zenbakiak.dat fitxategiaren edukia pantailaratzeko erabiliko dugun datu-mota DM_rdRealInt da, jatorrizkoaren antzekoa baina eremuen datu-motak elkar trukaturik (lehena Real datu-motakoa eta bigarrena Integer datu-motakoa):
trdRealInt = RECORD
Lehena : real ;
Bigarrena: integer ;
END ;
Ondorioz, nahiz eta Zenbakiak.dat fitxategiaren edukia ez den aldatu, pantailaratuko den informazioa bestelakoa izango da. Adibidean:
1. eremuan 9.7150463E+302 balioa eta 2. eremuan 1076270902 balioa.
3
Zenbakiak.dat fitxategiaren edukia pantailaratzeko erabiliko dugun FILE datu-mota DM_fbyBytak da, hots, fitxategian BYTE datu-motako informazioa dagoela interpretatzen duen fitxategia. Horregatik, Zenbakiak.dat fitxategiaren edukia hainbat byten sorta delakoan, byte guztiak banan-banan pantailaratuko dira.
4
Zenbakiak.dat fitxategiaren edukia pantailaratzeko erabiliko dugun FILE datu-mota DM_fcKaraktereak da, hots, fitxategian CHAR datu-motako informazioa dagoela interpretatzen duen fitxategia. Horregatik, Zenbakiak.dat fitxategiaren edukia hainbat karakteren sorta delakoan, karaktere guztiak banan-banan pantailaratuko dira; bide batez, karaktere bakoitzaren ordinala ere erakusten da (3 urratseko informazio bera da).
{-----------------------------------------------------------------
Erregistroak gordetzen dituen Zenbakiak.dat fitxategia sortu eta
datu-mota desberdineko fitxategien bitartez atzitu.
-----------------------------------------------------------------}
program Fitxategi_integerrealbytechar;
type
tsKate99 = string[99];
trdIntReal = record
Lehena : integer;
Bigarrena: real;
end;
tfrdIntReal = file of trdIntReal;
trdRealInt = record
Lehena : real;
Bigarrena: integer;
end;
tfrdRealInt = file of trdRealInt;
tfbyBytak = file of byte;
tfcKaraktereak = file of char;
procedure INTEGER_REAL_FitxategiaSortu(sFitxIzen: tsKate99);
var
f: tfrdIntReal;
rdZenbakiak: trdIntReal;
k, iZenbat: integer;
begin
assign(f, sFitxIzen);
rewrite(f);
write('Zenbat elementu nahi dituzu (2 elementu adibidez): ');
readln(iZenbat);
randomize;
for k:=1 to iZenbat do
begin
rdZenbakiak.Lehena := random(256); (* byte baten balioak *)
rdZenbakiak.Bigarrena := random*100; (* 0.0 eta 0.999 artekoa *)
write(f, rdZenbakiak);
end;
close(f);
end;
procedure INTEGER_REAL_FitxategiaIkusi(sFitxIzen: tsKate99);
var
f: tfrdIntReal;
rdZenbakiak: trdIntReal;
begin
assign(f, sFitxIzen);
reset(f);
while not eof(f) do
begin
read(f, rdZenbakiak);
writeln('1. eremua = ', rdZenbakiak.Lehena:3, '2. eremua =':30, rdZenbakiak.Bigarrena:15);
end;
close(f);
end;
procedure REAL_INTEGER_FitxategiaIkusi(sFitxIzen: tsKate99);
var
f: tfrdRealInt;
rdZenbakiak: trdRealInt;
begin
assign(f, sFitxIzen);
reset(f);
while not eof(f) do
begin
read(f, rdZenbakiak);
writeln('1. eremua =', rdZenbakiak.Lehena:15, '2. eremua = ':20, rdZenbakiak.Bigarrena:2);
end;
close(f);
end;
procedure CHAR_FitxategiaIkusi(sFitxIzen: tsKate99);
var
f: tfcKaraktereak;
cKarakterea: char;
k: integer;
begin
assign(f, sFitxIzen);
reset(f);
k:= 0;
while not eof(f) do
begin
read(f, cKarakterea);
k := k + 1;
writeln(k:3, '. elementua = |', cKarakterea, '| ', Ord(cKarakterea):3);
end;
close(f);
end;
procedure BYTE_FitxategiaIkusi(sFitxIzen: tsKate99);
var
f: tfbyBytak;
byByte: byte;
k: integer;
begin
assign(f, sFitxIzen);
reset(f);
k:= 0;
while not eof(f) do
begin
read(f, byByte);
k := k + 1;
writeln(k:3, '. elementua = ', byByte:3);
end;
close(f);
end;
var {---------------------- Programa Nagusiko aldagaiak ---------------}
sFitxIzen: tsKate99;
begin {--------------------------- Programa Nagusia -------------------}
{
sFitxIzen := 'C:\Datuak\Zenbakiak.dat';
writeln('Fitxategi bitarraren izena: ', sFitxIzen);
}
sFitxIzen := 'Zenbakiak.dat';
writeln('Fitxategi bitarraren izena: ', sFitxIzen);
writeln;
writeln('sizeof(tsKate99) = ', sizeof(tsKate99):3, ' byte');
writeln('sizeof(integer) = ', sizeof(integer):3, ' byte');
writeln('sizeof(real) = ', sizeof(real):3, ' byte');
writeln('sizeof(byte) = ', sizeof(byte):3, ' byte');
writeln('sizeof(char) = ', sizeof(char):3, ' byte');
writeln('sizeof(trdIntReal) = ', sizeof(trdIntReal):3, ' byte');
writeln('sizeof(trdRealInt) = ', sizeof(trdRealInt):3, ' byte');
writeln;
writeln('RETURN sakatu aurrera egiteko!');
readln;
INTEGER_REAL_FitxategiaSortu(sFitxIzen); { Lehen eremua integer }
writeln; { Bigarren eremua real }
writeln('Zenbakiak.dat fitxategiaren edukia integer-real bezala azterturik:');
writeln('------------------------------------------------------------');
INTEGER_REAL_FitxategiaIkusi(sFitxIzen);
writeln('------------------------------------------------------------');
writeln;
writeln('Zenbakiak.dat fitxategi bera real-integer bezala azterturik:');
writeln('------------------------------------------------------------');
REAL_INTEGER_FitxategiaIkusi(sFitxIzen);
writeln('------------------------------------------------------------');
writeln;
writeln('Zenbakiak.dat fitxategi bera BYTE bezala azterturik:');
writeln('------------------------------------------------------------');
BYTE_FitxategiaIkusi(sFitxIzen);
writeln('------------------------------------------------------------');
writeln;
writeln('Zenbakiak.dat fitxategi bera CHAR bezala azterturik:');
writeln('------------------------------------------------------------');
CHAR_FitxategiaIkusi(sFitxIzen);
writeln('------------------------------------------------------------');
writeln;
writeln;
writeln ('Programa amaitzeko RETURN tekla sakatu');
readln;
end. { PROGRAMAREN BUKAERA }
iruzkinik ez:
Argitaratu iruzkina