| ZER DAKIDAN: Zenbakiak, karaktereak, kateak eta zerrendak (arrayak) lantzeko gai naiz. ZER IKASIKO DUDAN: Oinarrizko datu-mota desberdinak egitura bakar batean antolatzen eta gordetzen ikasiko dut, horretarako Record datu-mota funtsezkoa da. Erregistro batek hainbat eremu izango ditu, adibidez: demagun rdFitxa aldagaia erregistro bat dela eta bere eremu baten identifikadorea iAdina dela, eremu horren erreferentzia egiteko ondoko hau idatzi beharko da rdFitxa.iAdina non puntua lokailu berezia den. |
ESKATZEN DEN PROGRAMA
Erregistro baten eremuak datuz bete eta erregistroaren edukia pantailaratzea. Ariketaren erregistroak ibilgailu baten datuak bilduko ditu.
Erregistroaren egitura honako hau da:
| 1. eremua | sMatrikula | 'ZZZZ-LLL' formatuko 8 karakteredun kate bat |
| 2. eremua | cIbilgailuMota | karaktere bat |
| 3. eremua | rdDataUnea | 2 eremuko erregistroa (eremu bakoitza 3 osoen array bat) |
| 4. eremua | rAldiunekoAbiadura | zenbaki erreal bat |
Hauxe da ariketaren programa:
{ 22. ariketa: auto bat radar atari azpitik igartzean ondoko datuak }
{ jaso eta gordetzen dira erregistro aldagai batean: }
{ - Matrikula, karkatere-kate bat }
{ - Ibilgailu mota, karaktere bat }
{ - Data, 3 zenbakien array bat (posizioak: Urtea, Hilea, Eguna) }
{ - Unea, 3 zenbakien array bat (posizioak: Orduak, Minutuak, }
{ Segundoak) }
{ - Aldi uneko abiadura, zenbaki erreal bat }
{ Datuak erdi automatikoki lortuko dira auzazko balioak aukeratuz. }
program Ariketa_22 ;
type
tsKateMatrikula = string[8] ; { ZZZZ-LLL formatuko matrikula }
taiData = array[1..3] of integer ; { Urtea, Hilea, Eguna }
taiUnea = array[1..3] of integer ; { Orduak, Minutuak, Segundoak }
trdNoiz = record
Eguna : taiData ;
Ordua : taiUnea ;
end ;
trdIbilgailua = record
sMatrikula : tsKateMatrikula ;
cIbilgailuMota : char ;
rdDataUnea : trdNoiz ;
rAldiunekoAbiadura : real ;
end ;
procedure IbilgailuarenDatuakJaso(var rdIbilgailua: trdIbilgailua) ;
var
iZenbat, iAusazkoa, iKont, k : integer ;
sMatrikula, sMatrikulaZifra : tsKateMatrikula ;
begin
randomize ;
iZenbat := 15 + random(16) ;
for iKont:=1 to iZenbat do
begin
sMatrikula := '' ;
for k:=1 to 4 do
begin
iAusazkoa := random(10) ;
Str(iAusazkoa, sMatrikulaZifra) ;
sMatrikula := sMatrikula + sMatrikulaZifra ;
end ;
iAusazkoa := random(5) ;
case iAusazkoa of
0: rdIbilgailua.sMatrikula := sMatrikula + ' KHS' ;
1: rdIbilgailua.sMatrikula := sMatrikula + ' BPK' ;
2: rdIbilgailua.sMatrikula := sMatrikula + ' KKK' ;
3: rdIbilgailua.sMatrikula := sMatrikula + ' XYZ' ;
4: rdIbilgailua.sMatrikula := sMatrikula + ' KGB' ;
end ;
iAusazkoa := random(4) ;
case iAusazkoa of
0: rdIbilgailua.cIbilgailuMota := 'A' ;
1: rdIbilgailua.cIbilgailuMota := 'B' ;
2: rdIbilgailua.cIbilgailuMota := 'C' ;
3: rdIbilgailua.cIbilgailuMota := 'D' ;
end ;
rdIbilgailua.rdDataUnea.Eguna[1] := 2021 ; (* 2021-01-01 eta 2021-12-28 artean *)
rdIbilgailua.rdDataUnea.Eguna[2] := 1 + random(12) ;
rdIbilgailua.rdDataUnea.Eguna[3] := 1 + random(27) ;
rdIbilgailua.rdDataUnea.Ordua[1] := 13 ; (* 13:05:00 eta 13:15:59 artean *)
rdIbilgailua.rdDataUnea.Ordua[2] := 5 + random(11) ;
rdIbilgailua.rdDataUnea.Ordua[3] := random(60) ;
rdIbilgailua.rAldiunekoAbiadura := 50 + random(131) ; (* 50.0 eta 180.0 artean *)
end ;
end ;
procedure IbilgailuarenDatuakErakutsi(const rdIbilgailua: trdIbilgailua) ;
begin
writeln('Matrikula: ':20, rdIbilgailua.sMatrikula) ;
writeln('Mota: ':20, rdIbilgailua.cIbilgailuMota) ;
write('Data: ':20) ;
write(rdIbilgailua.rdDataUnea.Eguna[1], '-') ;
if rdIbilgailua.rdDataUnea.Eguna[2] >= 10 then
write(rdIbilgailua.rdDataUnea.Eguna[2], '-')
else
write('0', rdIbilgailua.rdDataUnea.Eguna[2], '-') ;
if rdIbilgailua.rdDataUnea.Eguna[3] >= 10 then
writeln(rdIbilgailua.rdDataUnea.Eguna[3])
else
writeln('0', rdIbilgailua.rdDataUnea.Eguna[3]) ;
write('Ordua: ':20) ;
write(rdIbilgailua.rdDataUnea.Ordua[1], ':') ;
if rdIbilgailua.rdDataUnea.Ordua[2] >= 10 then
write(rdIbilgailua.rdDataUnea.Ordua[2], ':')
else
write('0', rdIbilgailua.rdDataUnea.Ordua[2], ':') ;
if rdIbilgailua.rdDataUnea.Ordua[3] >= 10 then
writeln(rdIbilgailua.rdDataUnea.Ordua[3])
else
writeln('0', rdIbilgailua.rdDataUnea.Ordua[3]) ;
writeln('Abiadura: ':20, rdIbilgailua.rAldiunekoAbiadura:6:2) ;
end ;
(* ---------------------- PROGRAMA NAGUSIA ---------------------- *)
var
rdIbilgailua: trdIbilgailua ;
begin
writeln ;
writeln ;
writeln ;
writeln(' Ibilgailuaren datuak eskuratzen... ') ;
IbilgailuarenDatuakJaso(rdIbilgailua) ;
writeln ;
writeln ;
writeln(' Hona hemen ibilgailuaren datuak:') ;
IbilgailuarenDatuakErakutsi(rdIbilgailua) ;
writeln ;
writeln ;
readln ;
end.
Programaren balizko exekuzio bat hurrrengo irudian erakusten da:
|
| Erregistroa itzultzen duen funtziorik ez dugu programatuko, gauza bera gertatzen da arrayekin (21. Ariketa: zerrendak (IV)) |

iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.