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.