14. astea (2023/04/30) etxean egitekoa
- Funtsezkoena une honetan: proiektuaren lana entregatzea eta datorren asteko kontrola prestatzea. Hori dela eta, hauek begiratu:
- Proiektuan eskatzen dena (zure proiektua birpasa ezazu eta bermatu ondo kontrolatzen duzula)
- 15. asteko kontrolean arrakasta izateko, fitxategien gaineko eragiketa hauek menperatu behar dituzu:
- Bilaketa: kromo bati dagokion daturen bat eman (jokalariaren izena adibidez) eta fitxategian bilatu azpiprograma batez, bilaketaren helburuarekin lotuta dago azpiprograma horrek zer itzuliko duen, aukerak:
- Bilatzen dugun kromoaren informazio guztia behar dugu programa nagusian. Azpiprogramak erregistro osoa itzuliko dio programa nagusiari, eta azpiprograma prozedura bat izango da derrigorrez
- Bilatzen dugun kromoaren datu bakar bat behar dugu programa nagusian (jokalariaren taldea adibidez). Azpiprogramak katea den erregistroaren eremu hori itzuliko dio programa nagusiari, eta azpiprograma funtzio bat izan daiteke
- Gehiketa: kromo berri bat fitxategiaren bukaeran gorde
- Txerketa: posizio jakin batean kromo bat txertatu (array laguntzailea), txertaketaren posizioa ezaguna teklatuz irakurtzen delako. Beste aukera bat dago ere:
- Txerketa: posizio jakin batean kromo bat txertatu (fitxategi laguntzailea), txertaketaren posizioa ezaguna dela
- Ezabaketa: kromo bat fitxategitik kendu (array laguntzailea), ezabaketaren posizioa ezaguna bilaketa bat egiten delako. Beste aukera bat dago ere:
- Ezabaketa: kromo bat fitxategitik kendu (fitxategi laguntzailea), ezabaketaren posizioa ezaguna dela
- Fitxategi bat banatu: kromo bildumatik abiatuta lortu 0_ale.dat izeneko fitxategia eta Errepikatuak.dat izeneko fitxategia lortu
- Bi fitxategi batu: Osasuna.dat izeneko eta Erreala.dat izeneko fitxategietatik abiatuta fitxategi bakarra lortu
Fitxategiekin lan eginez, ondoko eragiketak praktikatu ditugu laborategian:
- Fitxategiaren existentzia aztertu
- Fitxategia sortu
- Fitxategi osoa prozesatu
- Bilaketa
- Elementu baten datu bat aldatu
- Elementu berri bat bukaeran gehitu
- Bi fitxategi bakar batera bildu
- Fitxategi bat bitan banatu
Programa hau datorren asteko kontrola prestatze aldera lagungarria izan daiteke.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 | program Aste_14__ErregistroenFitxategiarekinLanean; uses crt, // clrscr erabiltzeko sysutils; // fileexists erabiltzeko type tsKate199 = string [ 199 ]; tsKate12 = string [ 12 ]; trdIkasle = record sIzena: tsKate12; rNota: real ; iKontrola: integer ; end ; tfrdIkasgela = file of trdIkasle; {--------------------------------Azpiprogramak---------------------------------} procedure FitxategiaSortuEtaBete(sFitxIzen: tsKate199); var f: tfrdIkasgela; rdElem: trdIkasle; iZenbat: integer ; iKont: integer ; iZeinKontrol: integer ; begin assign(f, sFitxIzen); rewrite(f); repeat write ( 'Zenbat ikasleren datuak gordeko dira? ' ); readln(iZenbat); until iZenbat > 0 ; repeat write ( 'Zein kontrol da? (1 ala 2) ' ); readln(iZeinKontrol); until (iZeinKontrol = 1 ) or (iZeinKontrol = 2 ); for iKont:= 1 to iZenbat do begin write (iKont: 10 , '. ikaslearen izena: ' ); readln(rdElem . sIzena); rdElem . sIzena := upcase(rdElem . sIzena); repeat write (iKont: 10 , '. ikaslearen nota: ' ); readln(rdElem . rNota); until (rdElem . rNota >= 0.0 ) and (rdElem . rNota <= 10.0 ); rdElem . iKontrola := iZeinKontrol; write (f, rdElem); end ; close(f); end ; procedure FitxategiarenEdukiaIkusi(sFitxIzen: tsKate199); var f: tfrdIkasgela; rdElem: trdIkasle; begin assign(f, sFitxIzen); reset(f); writeln ( 'IZENA' : 34 , 'NOTA' : 18 , 'KONTROLA' : 18 ); writeln ( '-----' : 34 , '----' : 18 , '--------' : 18 ); while not eof(f) do begin read(f, rdElem); writeln (filepos(f): 5 , '. ikaslea: ' , rdElem . sIzena: 18 , rdElem . rNota: 18 : 2 , rdElem . iKontrola: 18 ); end ; close(f); end ; procedure Batu(sFitxIzen_1eta2, sFitxIzen_1, sFitxIzen_2: tsKate199); var f_1eta2: tfrdIkasgela; f_1: tfrdIkasgela; f_2: tfrdIkasgela; rdElem: trdIkasle; begin assign(f_1, sFitxIzen_1); reset(f_1); assign(f_2, sFitxIzen_2); reset(f_2); assign(f_1eta2, sFitxIzen_1eta2); rewrite(f_1eta2); while not eof(f_1) do begin read(f_1, rdElem); write (f_1eta2, rdElem); end ; while not eof(f_2) do begin read(f_2, rdElem); write (f_1eta2, rdElem); end ; close(f_1); close(f_2); close(f_1eta2); end ; procedure Banatu(sFitxIzen_1eta2, sFitxIzen_Aprob, sFitxIzen_Suspn: tsKate199); var f_1eta2: tfrdIkasgela; f_A: tfrdIkasgela; f_S: tfrdIkasgela; rdElem: trdIkasle; begin assign(f_1eta2, sFitxIzen_1eta2); reset(f_1eta2); assign(f_A, sFitxIzen_Aprob); rewrite(f_A); assign(f_S, sFitxIzen_Suspn); rewrite(f_S); while not eof(f_1eta2) do begin read(f_1eta2, rdElem); if rdElem . rNota >= 5.0 then write (f_A, rdElem) else write (f_S, rdElem); end ; close(f_1eta2); close(f_A); close(f_S); end ; function fniBilatu(sFitxIzen_1eta2: tsKate199; sNor: tsKate12; iZeinKontrol: integer ): integer ; var f: tfrdIkasgela; rdElem: trdIkasle; boAurkitua: boolean ; begin assign(f, sFitxIzen_1eta2); reset(f); boAurkitua := FALSE ; while not eof(f) and not boAurkitua do begin read(f, rdElem); if (rdElem . sIzena = sNor) and (rdElem . iKontrola = iZeinKontrol) then boAurkitua := TRUE ; end ; if boAurkitua then fniBilatu := filepos(f) - 1 else fniBilatu := - 1 ; close(f); end ; procedure Aldatu(sFitxIzen_1eta2: tsKate199; iNonDago: integer ); var f: tfrdIkasgela; rdElem: trdIkasle; begin assign(f, sFitxIzen_1eta2); reset(f); seek(f, iNonDago); read(f, rdElem); repeat write ( '"' , rdElem . sIzena, '" ikaslearen nota berria: ' ); readln(rdElem . rNota); until (rdElem . rNota >= 0.0 ) and (rdElem . rNota <= 10.0 ); seek(f, iNonDago); write (f, rdElem); close(f); end ; procedure Gehitu(sFitxIzen_1eta2: tsKate199; const rdBerria: trdIkasle); var f: tfrdIkasgela; begin assign(f, sFitxIzen_1eta2); reset(f); seek(f, filesize(f)); write (f, rdBerria); close(f); end ; {---------------------------------Programa nagusia-----------------------------} var sFitxIzen: tsKate199; sFitxIzen_1: tsKate199; sFitxIzen_2: tsKate199; sFitxIzen_1eta2: tsKate199; sFitxIzen_Aprob: tsKate199; sFitxIzen_Suspn: tsKate199; sNor: tsKate12; iZeinKontrol: integer ; iNonDago: integer ; rdBerria: trdIkasle; BEGIN clrscr; writeln ( 'Eman ikasleen datuak gordeko dituen fitxategiaren' ); write ( 'izena (adibidez, "NOTAK" edo "1_KONTROLA"): ' ); readln(sFitxIzen); sFitxIzen := 'C:\Users\Docencia\Desktop\Pascal\' + sFitxIzen + ' .DAT'; writeln ; if fileexists(sFitxIzen) then begin writeln ( '"' , sFitxIzen, '" badago, bere edukia erakutsi.' ); FitxategiarenEdukiaIkusi(sFitxIzen); writeln ; end else begin writeln ( '"' , sFitxIzen, '" ez dago, sortu eta datuz bete.' ); FitxategiaSortuEtaBete(sFitxIzen); writeln ; FitxategiarenEdukiaIkusi(sFitxIzen); writeln ; end ; writeln ; writeln ( '===============================================================' ); writeln ( ' HONAINO FITXATEGI BAT SORTU ETA BERE EDUKIA PANTAILARATU DA.' ); writeln ( ' SORTU "1_KONTROLA" FITXATEGIA ETA "2 KONTROLA" FITXATEGIA.' ); writeln ( '===============================================================' ); writeln ; writeln ( '===============================================================' ); writeln ( ' HEMENDIK AURRERA BI FITXATEGIEN EDUKIA BAKARRERA EKARRIKO DA' ); writeln ( ' ETA ALDERANTZIZ FITXATEGI BATEN EDUKIA BITAN BANATUKO DA.' ); writeln ( '===============================================================' ); writeln ; sFitxIzen_1 := 'C:\Users\Docencia\Desktop\Pascal\1_KONTROLA.DAT' ; sFitxIzen_2 := 'C:\Users\Docencia\Desktop\Pascal\2_KONTROLA.DAT' ; if (fileexists(sFitxIzen_1)) and (fileexists(sFitxIzen_2)) then begin sFitxIzen_1eta2 := 'C:\Users\Docencia\Desktop\Pascal\1eta2_KONTROLA.DAT' ; Batu(sFitxIzen_1eta2, sFitxIzen_1, sFitxIzen_2); writeln ; writeln ( '"' , sFitxIzen_1eta2, '" fitxategiaren edukia: ' ); FitxategiarenEdukiaIkusi(sFitxIzen_1eta2); writeln ; writeln ( '-------------------------------------------------------------' ); writeln ; write ( 'Nota aldatuko diogun ikaslearen izena eman: ' ); readln(sNor); sNor := upcase(sNor); repeat write ( 'Zein kontroleko nota aldatuko diogu "' , sNor, '" ikasleari? ' ); readln(iZeinKontrol); until (iZeinKontrol = 1 ) or (iZeinKontrol = 2 ); iNonDago := fniBilatu(sFitxIzen_1eta2, sNor, iZeinKontrol); if iNonDago = - 1 then writeln ( '"' , sNor, '" ikaslerik ez dago' ) else Aldatu(sFitxIzen_1eta2, iNonDago); writeln ; writeln ( '-------------------------------------------------------------' ); writeln ; writeln ( '-------------------------------------------------------------' ); writeln ; write ( 'Gehituko dugun ikaslearen izena eman: ' ); readln(rdBerria . sIzena); rdBerria . sIzena := upcase(rdBerria . sIzena); repeat write ( 'Zein kontroleko datuak gehituko ditugu (1 ala 2) ' ); readln(rdBerria . iKontrola); until (rdBerria . iKontrola = 1 ) or (rdBerria . iKontrola = 2 ); repeat write ( '"' , rdBerria . sIzena, '" ikaslearen nota berria: ' ); readln(rdBerria . rNota); until (rdBerria . rNota >= 0.0 ) and (rdBerria . rNota <= 10.0 ); Gehitu(sFitxIzen_1eta2, rdBerria); writeln ; writeln ( '-------------------------------------------------------------' ); sFitxIzen_Aprob := 'C:\Users\Docencia\Desktop\Pascal\APROBATUAK.DAT' ; sFitxIzen_Suspn := 'C:\Users\Docencia\Desktop\Pascal\SUSPENDITUAK.DAT' ; Banatu(sFitxIzen_1eta2, sFitxIzen_Aprob, sFitxIzen_Suspn); writeln ; writeln ( '"' , sFitxIzen_Aprob, '" fitxategiaren edukia: ' ); FitxategiarenEdukiaIkusi(sFitxIzen_Aprob); writeln ; writeln ( '"' , sFitxIzen_Suspn, '" fitxategiaren edukia: ' ); FitxategiarenEdukiaIkusi(sFitxIzen_Suspn); writeln ; end else begin writeln ( 'Bi fitxategietatik bat falta da (ala biak falta dira)' ); end ; writeln ; writeln ; writeln ( '=======================' ); writeln ( 'RETURN sakatu amaitzeko' ); write ( '=======================' ); readln; end . { PROGRAMAREN BUKAERA } |
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.