akta etiketadun mezuak erakusten. Erakutsi mezu guztiak
akta etiketadun mezuak erakusten. Erakutsi mezu guztiak

2023(e)ko maiatzaren 10(a), asteazkena

15. ASTEA | laborategi/mintegian egin dena

15. astea (2023/05/09) laborategi/mintegian egindakoa








  • 25 ikasleetatik 17 ikasleek kontrol-ariketaren bidalketa egin dute





  • Hirugarren kontrola egin dugu eta ondoko hau galdetu da. Ematen den 3_kontrola__AZP-1.zip fitxategi trinkoaren edukia ondoko hau da:



    • 2022-23ko_HirugarrenKontrola_AZP1-A.pdf fitxategian ariketaren enuntziatua jaso da eta 2022-23ko_HirugarrenKontrola_AZP1-B.pdf fitxategian ariketaren enuntziatua jaso da

    • Ariketaren emaitzaren hasierak diren A_eredua__1_azp__3_froga.pas iturburu-programa eta B_eredua__1_azp__3_froga.pas iturburu-programa 

    • froga_3 unitatearen bi fitxategi hauek:


      • froga_3.ow

      • froga_3.ppw











  • Jarraian, bigarren eta hirugarren azpitaldeetako ariketen enuntziatuak eta soluzioak ematen dira:













3_kontrola__AZP-2.zip









3_kontrola__AZP-3.zip







 

2023(e)ko maiatzaren 1(a), astelehena

14. ASTEA | laborategian egin dena

 14. astea (2023/05/02) laborategi/mintegian egindakoa






  • Zerrenda pasatzeko, eGela zerbitzuko 14. saioan egindako programak bidalketaren bitartez. Lanik bidali ez dutenak:


    1. Danel Agirre Olaeta

    2. Izaro Barañano Arrizabalaga

    3. Xabier Garay Berganza

    4. Jon González Belategui

    5. Gaizka Martin Zorrozua

    6. Maider Nogueira Alonso

    7. Asier Ochoa Espiña

    8. Izaro Prieto Sarria

    9. Antxon Zubiaurre Peñalba


















  • 13. astea | fitxategi bat bitan banatu ariketan hasierako fitxategiaren existentzia aztertzen da. Ariketa horren aldaera bat egin dugu: erregistroen fitxategi bat (bi eremu: sNor katea eta rNota zenbakia). Hona hemen egindako programaren abiapuntua:



program FitxategiBatBitanBanatu_EMATEKOA;
uses
crt;
const
iLUZERA = 30;
sBIDEA = 'C:\NireDatuak\';
type
tsKate49 = string[49];
tasIzenenZerrenda = array [1..iLUZERA] of tsKate49;
tsKate200 = string[200];
const
asZERRENDA: tasIzenenZerrenda = ('AGIRRE ROMERO, UNAI', // 01
'ANGULEMA CARAZO, JON ANDER', // 02
'BIKARREGI IGLESIAS, JULEN', // 03
'CANO RUIZ DE HEREDIA, JULIAN', // 04
'CORRAL EGIA, JOSEBA ANDONI', // 05
'DIAZ DE ULZURRUN ROY, LEONOR', // 06
'EGIGUREN MARKINEZ, IRUNE', // 07
'ERKIAGA ANDONEGI, IKER', // 08
'FERNANDEZ FEITO, FELIX', // 09
'GARTZIA DE ALZA GIL, KATALIN', // 10
'HERRANZ MARTINEZ, REBECA', // 11
'IRAGORRI COTANO, KIMETZ', // 12
'JOMA GABILONDO, ASIER', // 13
'KRUGER GARAI, LUDWING', // 14
'LANDA ASTORQUIZA, UNAI', // 15
'LANDAIDA MORENO, XABIER', // 16
'LIBARRENX BOLLAR, IZAR', // 17
'MADARI TOXO, MARIA DEL CARMEN', // 18
'MARTINEZ DE LA CRUZ, IMANOL', // 19
'NARBAIZA ARIZTONDO, MARKEL', // 20
'OSORIO ORTIZ, OLATZ', // 21
'PARIS ECHEVARRIA, AITOR', // 22
'QUINTAS ESCOBAR, AINHOA', // 23
'RADA BARANDIKA, TEODORO', // 24
'SAN JOAN GOIRI, JULIA AUGUSTA', // 25
'SEGUROLA LOPEZ DE MUNAIN, ANE', // 26
'TAPIA FERNANDEZ, ENDIKA', // 27
'URIOSTE ALZAGA, ENEKO', // 28
'VICINAY URCELAY, ELOY', // 29
'ZUATZU ZALAKAIN, ZIGOR'); // 30

type
trdFitxa = record
sNor: tsKate49;
rNota: real;
end;
tfrdFitxategia = file of trdFitxa;


procedure DatuakErakutsi(const rdElem: trdFitxa);
begin
writeln('Ikaslearen izena: ':24, rdElem.sNor);
writeln('Ikaslearen nota: ':24, rdElem.rNota:0:1);
writeln;
end;


procedure FitxategiaIkusi(sFitxIzen: tsKate200);
var
rdElem: trdFitxa;
f: tfrdFitxategia;
begin
assign(f, sFitxIzen);
reset(f);

close(f);
end;


function fnsIzenaLortu(sIzenDeiturak: tsKate49): tsKate49;
var
sIzena: tsKate49;
iKomaNon: integer;
begin

fnsIzenaLortu := sIzena;
end;


procedure DatuakJaso(var rdElem: trdFitxa; iKont: integer);
var
iHamarreko, iUnitate: integer;
begin
rdElem.sNor := fnsIzenaLortu(asZERRENDA[iKont]);

iHamarreko := random(10); // 0 eta 9 artekoa
iUnitate := random(10); // 0 eta 9 artekoa

rdElem.rNota := iUnitate + 0.1*iHamarreko;
end;


procedure FitxategiaSortuEtaSekuentzialkiBete(sFitxIzen: tsKate200);
var
rdElem: trdFitxa;
f: tfrdFitxategia;
iKopurua, k: integer;
begin
assign(f, sFitxIzen);
rewrite(f);

randomize;
iKopurua := random(iLUZERA)+1;
writeln('iKopurua = ', iKopurua);
readln;

for k:=1 to iKopurua do
begin
DatuakJaso(rdElem, k);
write(f, rdElem);
end;

close(f);
end;


procedure FitxategiaBanatu(sFitxIzen, sAprobatuak, sSuspendituak: tsKate200);
var
rdElem: trdFitxa;
f, f_A, f_S: tfrdFitxategia;
begin
assign(f, sFitxIzen);
reset(f);
assign(f_A, sAprobatuak);
rewrite(f_A);
assign(f_S, sSuspendituak);
rewrite(f_S);


close(f);
close(f_A);
close(f_S);
end;


(* ----------------------------programa nagusia---------------------------- *)
var
sFitxIzen, sAprobatuak, sSuspendituak: tsKate200;
begin
clrscr;
writeln;
writeln;

write('Datuen fitxategiaren izena eman (adibidez "Ikasleak"): ');
readln(sFitxIzen);
sFitxIzen := sBIDEA + sFitxIzen + '.dat';
writeln('sFitxIzen |||', sFitxIzen, '|||');

FitxategiaSortuEtaSekuentzialkiBete(sFitxIzen);

writeln('---Denak----------------------------------');
FitxategiaIkusi(sFitxIzen);
writeln;
writeln;

sAprobatuak := sBIDEA + 'Aprobatuak.dat';
sSuspendituak := sBIDEA + 'Suspendituak.dat';

FitxategiaBanatu(sFitxIzen, sAprobatuak, sSuspendituak);

writeln('---Aprobatuak-----------------------------');
FitxategiaIkusi(sAprobatuak);
writeln;
writeln;

writeln('---Suspendituak---------------------------');
FitxategiaIkusi(sSuspendituak);
writeln;
writeln;

writeln;
writeln('=======================');
writeln('RETURN sakatu amaitzeko');
writeln('=======================');
readln;
end.





Aurreko FitxategiBatBitanBanatu.pas programa osaturik:





 

2023(e)ko apirilaren 25(a), asteartea

13. ASTEA | laborategi/mintegian egin dena

 13. astea (2023/04/25) laborategi/mintegian egindakoa






  • Zerrenda pasatzeko, eGela zerbitzuko 13. saioan egindako programak bidalketaren bitartez. Lanik bidali ez dutenak:


    • Danel Agirre Olaeta

    • Alex Arroitajauregui Elguea

    • Xabier Garay Berganza

    • Jon Gonzalez Belategui

    • Gaizka Martin Zorrozua

    • Maider Nogueira Alonso

    • Asier Ochoa Espiña

    • Maialen Roman Payas

    • Antxon Zubiaurre Peñalba





  • Proiektuaren 8. aukera egin dugu ondoko hau aplikatuz: FITXATEGIEN GAINEKO ERAGIKETAK. Fitxategi-array (F→A) eta array-fitxategi (A→F) eragiketak erabiliko dira ondoko lan hauek egiteko:


    1. Txertaketa, elementu bat edo gehiago fitxategiaren erdi aldean tartekatzeko

    2. Ezabaketa, elementu bat edo gehiago fitxategiaren erdi aldetik kentzeko (adibide hau egin dugu)

    3. Sailkatzea, fitxategiaren elementuak ordenatzeko





  • Proiektuaren 9. aukeraren adibide hau egin dugu:


    1. Bilaketa, elementu baten sLiburuKodea teklatuz eman eta bilatu, bilatu ondoren aldaketa bat egin

    2. Aldaketa, elementu jakin bati bere iAldizMaileguan aldatu balio berri bat gordez

    3. Bilaketa, elementu baten sLiburuKodea teklatuz eman eta bilatu, bilatu ondoren liburu hori fitxategitik kendu

    4. Ezabaketa, elementu jakin bat fitxategitik kentzeko array laguntzaile bat edo beste fitxategi laguntzaile bat beharko da




program LiburutegiProiektua_Azp1_13astea;

uses
datu_mota, biblioteka, erabiltzaile, top10, crt, sysutils;


(* HELBURUA: Menuaren aukerak pantailan idaztea eta hautapen bat irakurtzea. *)
(* PARAMETROAK: Parametrorik ez du behar eta bere irteera karaktere bat da. *)
function fncAukeraHautatu: char;
var
cAukera: char;
begin
writeln;
writeln(' =============================================================================');
writeln(' | MENUA |');
writeln(' =============================================================================');
writeln(' | 1. Mailegu-eskaera berri bat gehitzea |');
writeln(' | 2. Mailegatutako liburu bat itzultzea |');
writeln(' | 3. Letra batetik hasten diren liburuei buruzko informazioa bistaratzea |');
write(' | 4. Liburutegiaren fitxategia ikusi');
textcolor(Yellow);
write(' (AZTERKETAN EZ ZEN ESKATU)');
textcolor(LightGray);
writeln(' |');
write(' | 5. Erreserben arraya ikusi');
textcolor(Yellow);
write(' (AZTERKETAN EZ ZEN ESKATU)');
textcolor(LightGray);
writeln(' |');
writeln(' |---------------------------------------------------------------------------|');
write(' | ');
textcolor(Cyan);
write('6. Erabiltzaileen fitxategia sortu eta ikusi');
textcolor(LightGray);
textcolor(Yellow);
write(' (7. AUKERA PRESTATZEKO)');
textcolor(LightGray);
writeln(' |');
write(' | ');
textcolor(Cyan);
write('7. Mailegurik duten erabiltzaileen izenak pantailaratu');
textcolor(LightGray);
writeln(' |');
writeln(' |---------------------------------------------------------------------------|');
write(' | ');
textcolor(LightRed);
write('8. Gehien mailegatutako 10 liburuen fitxategia sortu eta pantailaratu');
textcolor(LightGray);
writeln(' |');
write(' | ');
textcolor(LightRed);
write('9. Lantaldeak proposatutako aukera');
textcolor(LightGray);
textcolor(Yellow);
write(' (BLOGEKO ADIBIDEAK IKUSI)');
textcolor(LightGray);
writeln(' |');
writeln(' |---------------------------------------------------------------------------|');
writeln(' | 0. Amaitu |');
writeln(' =============================================================================');
repeat
write(' Zure aukera: ' );
readln(cAukera);
until(cAukera >= '0') and (cAukera <= '9');
fncAukeraHautatu := cAukera;
end;


(* HELBURUA: Erregistro baten eremuen informazioa pantailaratzea. *)
(* PARAMETROAK: Parametro bakarra eta sarrerakoa. *)
procedure LiburuaErakutsi(const rdLiburuBat: trdLiburu);
begin
with rdLiburuBat do
begin
writeln('Liburuaren kodea: ':32, sLiburuKodea);
writeln('Liburuaren izenburua: ':32, sIzenburua);
writeln('Maileguan duen erabiltzailea: ':32, sMaileguanNori);
writeln('Zenbatetan maileguan: ':32, iAldizMaileguan);
writeln('Kokapena: ':32, sKokapena);
writeln('Azken maileguaren data: ':32, sAzkenMaileguData);
writeln;
end;
end;


(* HELBURUA: Fitxategi bat arakatu eta letra jakin batez *)
(* hasten diren liburuen datuak pantailaratzea. *)
(* ALGORITMOA: Fitxategi bat ibiltzea hasieratik bukaeraraino. *)
(* PARAMETROAK: Bi parametro eta biak sarrerakoak. *)
procedure LetraBatezHastenDirenLiburuak( cHasierakoLetra: char;
sFitxIzenLiburutegia: tsKate199);
var
f_L: tfrdLiburutegiFitxategia;
rdLiburuBat: trdLiburu;
begin
assign(f_L, sFitxIzenLiburutegia);
reset(f_L);
while not eof(f_L) do
begin
read(f_L, rdLiburuBat);
if upcase(cHasierakoLetra) = upcase(rdLiburuBat.sIzenburua[1]) then
begin
LiburuaErakutsi(rdLiburuBat);
//Readln;
end;
end;
close(f_L);
end;


(* HELBURUA: Fitxategi bat arakatu eta kode jakin bateko *)
(* elementua bertan dagoen ala ez erabaki. *)
(* ALGORITMOA: Fitxategi batean bilaketa. *)
(* PARAMETROAK: Sarrerako bi parametro (fitxategiaren izena eta gakoa den kodea) *)
(* Irteerako bi parametro (elementuaren posizioa eta erregistroa bera). *)
procedure LiburutegianBilatu( sLiburuGako: tsKate15;
sFitxIzenLiburutegia: tsKate199;
var iPosizioa: integer;
var rdLiburuBat: trdLiburu);
var
f_L: tfrdLiburutegiFitxategia;
boAurkitua: Boolean;
begin
assign(f_L, sFitxIzenLiburutegia);
reset(f_L);

boAurkitua := FALSE;
while not boAurkitua and not eof(f_L) do
begin
read(f_L, rdLiburuBat);
if rdLiburuBat.sLiburuKodea = sLiburuGako then
boAurkitua := TRUE;
end;

if boAurkitua then
iPosizioa := filepos(f_L) -1
else
iPosizioa := -1;

close(f_L);
end;


(* HELBURUA: Fitxategi bateko elementu jakin baten informazioa eguneratu. *)
(* ALGORITMOA: Fitxategi baten informazio aldaketa. *)
(* PARAMETROAK: Sarrerako hiru parametro (fitxategiaren izena, *)
(* elementu berria eta bere posizioa fitxategian). *)
procedure LiburuaEguneratuLiburutegian( const rdLiburuBat: trdLiburu;
sFitxIzenLiburutegia: tsKate199;
iPosizioa: integer);
var
f_L: tfrdLiburutegiFitxategia;
begin
assign(f_L, sFitxIzenLiburutegia);
reset(f_L);
seek(f_L, iPosizioa);
write(f_L, rdLiburuBat);
close(f_L);
end;


(* HELBURUA: Liburu baten mailegua egin behar da. Hau da, liburuaren kodea eta *)
(* erabiltzailearen kodea ezagunak direla, liburua bilatu behar da *)
(* fitxategian. Horrelako libururik ez badago mezu bat pantailaratu (hau *)
(* ez zen azterketako enuntziatuan eskatu). Horrelako libururik bai badago *)
(* mailegatuta ala libre dagoen aztertu: liburua libre badago, fitxategia *)
(* eguneratu; liburua libre ez badago erreserben arrayan elementu berri *)
(* bat gehitu. *)
(* PARAMETROAK: Sarrerako bi parametro (fitxategiaren izena eta gaurko data) *)
(* Irteerako bi parametro (arraya eta bere luzera efektiboa). *)
procedure MaileguEskariBerria( sGaurkoData: tsKate10;
sFitxIzenLiburutegia: tsKate199;
var ardErreserbak: tardErreserbak;
var iLuzera: integer);
var
sLiburuarenKodea: tsKate15;
sErabiltzailearenKodea: tsKate15;
iPosLiburutegian: integer;
rdLiburuBat : trdLiburu;
begin
write('Liburuaren kodea: ');
readln(sLiburuarenKodea);
write('Erabiltzailearen kodea: ');
readln(sErabiltzailearenKodea);
LiburutegianBilatu(sLiburuarenKodea, sFitxIzenLiburutegia, iPosLiburutegian, rdLiburuBat);
if iPosLiburutegian = -1 then { Konprobazio hau ez da eskatzen enuntziatuan }
writeln('ERRORA: "', sLiburuarenKodea, '" kodea duen libururik ez dago')
else
begin
writeln;
LiburuaErakutsi(rdLiburuBat); { Hau ez da eskatzen enuntziatuan }
if rdLiburuBat.sMaileguanNori = 'INORI' then
begin { Liburua eskuragarri dago }
with rdLiburuBat do
begin
sMaileguanNori := sErabiltzailearenKodea;
iAldizMaileguan := iAldizMaileguan + 1;
sAzkenMaileguData := sGaurkoData;
writeln;
writeln;
writeln('Liburuaren izenburua: ', sIzenburua);
writeln('Hemen dago: ', sKokapena);
writeln('Maileguan hartzen duen erabiltzailea: ', sErabiltzailearenKodea);
end;
LiburuaEguneratuLiburutegian(rdLiburuBat, sFitxIzenLiburutegia, iPosLiburutegian);
end
else
begin { Liburua maileguan hartuta dago }
writeln('Liburua ez dago eskuragarri une honetan: erreserba-eskaera berria sortu');
if iLuzera < iERRESERBA_MAX then
begin
iLuzera := iLuzera + 1;
with ardErreserbak[iLuzera] do
begin
sLiburuKodea := sLiburuarenKodea;
sErabiltzaileZbk := sErabiltzailearenKodea;
sEskariData := sGaurkoData;
write('Liburua itzultzen dutenean abisatzeko telefonoa eman: ');
readln(sTelefonoa);
end;
end
else
begin
writeln('"', sLiburuarenKodea, '" kodea duen liburua ez dago eskuragarri, eta horren');
writeln('erreserba-eskaerarik ezin daiteke egin zerrenda beterik dagoelako.');
end;
end;
end;
end;


(* HELBURUA: Kode jakin bateko elementua arrayan bilatu. *)
(* ALGORITMOA: Array batean bilaketa. *)
(* PARAMETROAK: Sarrerako hiru parametro (gakoa den kodea, *)
(* arraya eta bere luzera efektiboa). *)
function fniErreserbaBilatuArrayean( sLiburuKodeGako: tsKate15;
const ardErreserbak: tardErreserbak;
iLuzera: integer): integer;
var
i: integer;
boAurkitua: Boolean;
begin
i := 1;
boAurkitua := FALSE;
while not boAurkitua and (i <= iLuzera) do
begin
if sLiburuKodeGako = ardErreserbak[i].sLiburuKodea then
boAurkitua := TRUE
else
i := i +1;
end;
if boAurkitua then
fniErreserbaBilatuArrayean := i
else
fniErreserbaBilatuArrayean := -1;
end;


(* HELBURUA: Posizio jakin bateko elementua arrayatik kendu. *)
(* ALGORITMOA: Array batetik elementu bat kendu. *)
(* PARAMETROAK: Sarrerako parametro bat (posizioa arrayan) *)
(* Irteerako bi parametro (arraya eta bere luzera). *)
procedure ErreserbaZerrendatikEzabatu(var ardErreserbak: tardErreserbak;
var iLuzera: integer;
iPosizioa: integer);
var
i: integer;
begin
for i := iPosizioa +1 to iLuzera do
ardErreserbak[i -1] := ardErreserbak[i];
iLuzera := iLuzera -1;
end;


(* HELBURUA: Maileguan dagoen liburu bat itzuli behar da. Hau da, liburuaren kodea *)
(* ezaguna dela, liburua bilatu behar da fitxategian. Horrelako libururik *)
(* ez badago mezu bat pantailaratu. Horrelako libururik badago, eskatuta *)
(* dagoen aztertu: liburua erreserben arrayan ez badago, ez bada eskatu, *)
(* fitxategia eguneratu; liburua erreserben arrayan bai badago, arraytik *)
(* ezabatu eta fitxategia eguneratu. *)
(* PARAMETROAK: Sarrerako bi parametro (fitxategiaren izena eta gaurko data) *)
(* Irteerako bi parametro (arraya eta bere luzera efektiboa). *)
procedure MailegatutakoLiburuaItzuli( sGaurkoData: tsKate10;
sFitxIzenLiburutegia: tsKate199;
var ardErreserbak: tardErreserbak;
var iLuzera: integer);
var
sLiburuGako: tsKate15;
iPosLiburutegian: integer;
iPosErreserban: integer;
rdLiburuBat: trdLiburu;
begin
write('Liburuaren kodea: ');
readln(sLiburuGako);
LiburutegianBilatu(sLiburuGako, sFitxIzenLiburutegia, iPosLiburutegian, rdLiburuBat);

if iPosLiburutegian = -1 then { Konprobazio hau ez da eskatzen enuntziatuan }
writeln('ERROREA: "', sLiburuGako, '" kodea duen libururik ez dago')
else
begin
writeln;
LiburuaErakutsi(rdLiburuBat); { Hau ez da eskatzen enuntziatuan }

if rdLiburuBat.sMaileguanNori = 'INORI' then { Hau ez da eskatzen enuntziatuan }
writeln('Maileguan ez dagoen liburua ezin daiteke itzuli!!!')
else
begin
iPosErreserban := fniErreserbaBilatuArrayean(rdLiburuBat.sLiburuKodea, ardErreserbak, iLuzera);

if iPosErreserban = -1 then
begin
writeln('Itzuli den libururako erreserbarik ez dago');
writeln('Hemen bilegitu: ', rdLiburuBat.sKokapena);
rdLiburuBat.sMaileguanNori := 'INORI'; { Inork ez du erreserbatu, liburua gorde }
end
else
begin { Erabiltzaileren batek erreserbaturik dauka, hari mailegatu }
writeln;
writeln('Maileguan eduki duen erabiltzailea: ', rdLiburuBat.sMaileguanNori);
writeln('Maileguan hartu duen erabiltzailea: ', ardErreserbak[iPosErreserban].sErabiltzaileZbk);
writeln(' Abisatzeko telefono-zenbakia: ', ardErreserbak[iPosErreserban].sTelefonoa);
rdLiburuBat.sMaileguanNori := ardErreserbak[iPosErreserban].sErabiltzaileZbk;
rdLiburuBat.iAldizMaileguan := rdLiburuBat.iAldizMaileguan +1;
rdLiburuBat.sAzkenMaileguData := sGaurkoData;
ErreserbaZerrendatikEzabatu(ardErreserbak, iLuzera, iPosErreserban);
end;

LiburuaEguneratuLiburutegian(rdLiburuBat, sFitxIzenLiburutegia, iPosLiburutegian);
end;
end;
end;


(* HELBURUA: Array bat arakatu eta bere elementuen informazioa pantailaratu. *)
(* ALGORITMOA: Array bat ibiltzea hasieratik bukaeraraino. *)
(* PARAMETROAK: Sarrerako bi parametro (arraya eta bere luzera efektiboa). *)
procedure ErreserbenArrayaIkusi(const ardErreserbak: tardErreserbak; iLuzera: integer);
var
k: integer;
begin
for k:=1 to iLuzera do
begin
with ardErreserbak[k] do
begin
writeln('================================== ', k:2, '. elementua ======');
writeln('Liburu-kodea: ':20, sLiburuKodea);
writeln('Erabiltzaile-kodea: ':20, sErabiltzaileZbk);
writeln('Telefono-zenbakia: ':20, sTelefonoa);
writeln('Eskariaren data: ':20, sEskariData);
writeln('=======================================================');
writeln;
end;
end;
end;


(* HELBURUA: Fitxategi bat arakatu eta kode jakin bateko *)
(* elementua bertan dagoen ala ez erabaki. *)
(* ALGORITMOA: Fitxategi batean bilaketa. *)
(* PARAMETROAK: Sarrerako bi parametro (fitxategiaren izena eta gakoa den kodea) *)
(* Irteerako bi parametro (elementuaren posizioa eta erregistroa bera). *)
function fnsNorBilatu(sFitxIzenBezeroak: tsKate199; sErabilGako: tsKate15): tsKate55;
var
f_B: tfrdBezeroenFitxategia;
rdBezeroBat: trdBezero;
boAurkitua: Boolean;
begin
assign(f_B, sFitxIzenBezeroak);
reset(f_B);

boAurkitua := FALSE;
while not boAurkitua and not eof(f_B) do
begin
read(f_B, rdBezeroBat);
if rdBezeroBat.sErabilKodea = sErabilGako then
boAurkitua := TRUE;
end;

if boAurkitua then
fnsNorBilatu := rdBezeroBat.sNor
else
fnsNorBilatu := '';

close(f_B);
end;


(* HELBURUA: Fitxategi bat ibili eta beste fitxategi batean datua bilatu. *)
(* ALGORITMOA: Fitxategi bat oso prozesatu eta beste fitxategi batean *)
(* bilaketa bat burutu. *)
(* PARAMETROAK: Sarrerako bi parametro (fitxategi biren izenak). *)
procedure MailegurikDutenErabiltzaileak(sFitxIzenLiburutegia: tsKate199;
sFitxIzenBezeroak: tsKate199);
var
f_L: tfrdLiburutegiFitxategia;
rdLiburuBat: trdLiburu;
sIzenDeiturak: tsKate55;
begin
assign(f_L, sFitxIzenLiburutegia);
reset(f_L);
while not eof(f_L) do
begin
read(f_L, rdLiburuBat);
sIzenDeiturak := fnsNorBilatu(sFitxIzenBezeroak, rdLiburuBat.sMaileguanNori);
if sIzenDeiturak <> '' then
writeln(sIzenDeiturak);
end;

close(f_L);
end;


function fniBilatu(sLiburuarenKodea: tsKate15; sFitxIzenLiburutegia: tsKate199): integer;
var
f_L: tfrdLiburutegiFitxategia;
rdLiburuBat: trdLiburu;
boAurkitua: boolean;
begin
assign(f_L, sFitxIzenLiburutegia);
reset(f_L);

boAurkitua := FALSE;
while not eof(f_L) and not boAurkitua do
begin
read(f_L, rdLiburuBat);
if rdLiburuBat.sLiburuKodea = sLiburuarenKodea then
boAurkitua := TRUE
end;

if boAurkitua then
fniBilatu := filepos(f_L) -1
else
fniBilatu := -1;

close(f_L);
end;


procedure Aldatu(sFitxIzenLiburutegia: tsKate199; iNon: integer);
var
f_L: tfrdLiburutegiFitxategia;
rdLiburuBat: trdLiburu;
begin
assign(f_L, sFitxIzenLiburutegia);
reset(f_L);

seek(f_L, iNon);
read(f_L, rdLiburuBat);
rdLiburuBat.iAldizMaileguan := 40;
seek(f_L, iNon);
write(f_L, rdLiburuBat);

close(f_L);
end;


procedure Kendu(sFitxIzenLiburutegia: tsKate199; iNon: integer);
var
f_L: tfrdLiburutegiFitxategia;
rdLiburuBat: trdLiburu;
ardLaguntzailea: tardLiburutegia;
iKont: integer;
iLuzera: integer;
begin
assign(f_L, sFitxIzenLiburutegia);
reset(f_L);

iLuzera := 0;
for iKont:=0 to iNon-1 do
begin
read(f_L, rdLiburuBat);

iLuzera := iLuzera +1;
ardLaguntzailea[iLuzera] := rdLiburuBat;
end;

seek(f_L, iNon+1);
while not eof(f_l) do
begin
read(f_L, rdLiburuBat);

iLuzera := iLuzera +1;
ardLaguntzailea[iLuzera] := rdLiburuBat;
end;

rewrite(f_L);

for iKont:=1 to iLuzera do
begin
write(f_L, ardLaguntzailea[iKont]);
end;

close(f_L);
end;



var { ----------------------------------------- Programa Nagusiaren aldagaiak -------------- }
sFitxIzenLiburutegia: tsKate199;
sFitxIzenErreserbak: tsKate199;
ardErreserbak: tardErreserbak;
iLuzera: integer;
sGaurkoData: tsKate10;
cAukera: char;
cHasierakoLetra: char;
sFitxIzenBezeroak: tsKate199;
boErabiltzaileenFitxategiaSortuta: boolean;
sFitxIzenTop10: tsKate199; { Menuaren 8. aukerarako }
ardSailkatuenZerrenda: tardSailkatuenZerrenda; { Menuaren 8. aukerarako }
iLuzeraTOP10: integer; { Menuaren 8. aukerarako }

sLiburuarenKodea: tsKate15; { Menuaren 9. aukerarako }
iPosizioa: integer; { Menuaren 9. aukerarako }

begin { ---------------------------------------- Programa Nagusia --------------------------- }
writeln;
writeln;
boErabiltzaileenFitxategiaSortuta := FALSE;
write('Liburutegiko fitxategiaren izena eman (LIBURUAK adibidez): ');
readln(sFitxIzenLiburutegia);
sFitxIzenLiburutegia := sBIDEA + sFitxIzenLiburutegia + '.DAT';
write('Erreserben fitxategiaren izena eman (ERRESERBAK adibidez): ');
readln(sFitxIzenErreserbak);
sFitxIzenErreserbak := sBIDEA + sFitxIzenErreserbak + '.DAT';
writeln;

LiburutegiarenFitxategiaSortu(sFitxIzenLiburutegia); { "biblioteka" unitatean garatuta }
// LiburutegiarenFitxategiaIkusi(sFitxIzenLiburutegia); { "biblioteka" unitatean garatuta }
ErreserbenFitxategiaSortu(sFitxIzenErreserbak); { "biblioteka" unitatean garatuta }
// ErreserbenFitxategiaIkusi(sFitxIzenErreserbak); { "biblioteka" unitatean garatuta }

if not fileExists(sFitxIzenLiburutegia) or not fileExists(sFitxIzenErreserbak) then
writeln('ERROREA: behar diren bi fitxategietatik bat falta da (ala biak falta dira)')
else
begin
FitxategitikArrayraIrauli(sFitxIzenErreserbak, ardErreserbak, iLuzera);
write('Gaurko data eman uuuu/hh/ee formatuan (adibidez 2022/06/01): ');
readln(sGaurkoData);
repeat
cAukera := fncAukeraHautatu;
writeln;
case cAukera of
'1': begin
writeln;
MaileguEskariBerria(sGaurkoData, sFitxIzenLiburutegia, ardErreserbak, iLuzera);
end;
'2': begin
writeln;
MailegatutakoLiburuaItzuli(sGaurkoData, sFitxIzenLiburutegia, ardErreserbak, iLuzera);
end;
'3': begin
writeln;
write('Erakutsi beharreko liburuen hasierako letra: ');
readln(cHasierakoLetra);
LetraBatezHastenDirenLiburuak(cHasierakoLetra, sFitxIzenLiburutegia);
end;
'4': begin
writeln;
LiburutegiarenFitxategiaIkusi(sFitxIzenLiburutegia);
end;
'5': begin
writeln;
ErreserbenArrayaIkusi(ardErreserbak, iLuzera);
end;
'6': begin
writeln;
writeln('Erabiltzaileen BEZEROAK.DAT fitxategia sortu eta erakutsi');
sFitxIzenBezeroak := sBIDEA + 'BEZEROAK.DAT';
BezeroenFitxategiaSortu(sFitxIzenBezeroak);
BezeroenFitxategiaIkusi(sFitxIzenBezeroak);
boErabiltzaileenFitxategiaSortuta := TRUE;
writeln;
end;
'7': begin
writeln;
writeln('Mailegurik duten erabiltzaileen izenak erakutsi');
if not boErabiltzaileenFitxategiaSortuta then
writeln('BEZEROAK.DAT fitxategirik ez dago, menuaren 6. aukera hautatu beharra dago')
else
begin
MailegurikDutenErabiltzaileak(sFitxIzenLiburutegia, sFitxIzenBezeroak);
end;
writeln;
end;
'8': begin
writeln;
textcolor(LightRed);
writeln(' Sarriago mailegatu diren 10 liburuen sailkapena lortu eta fitxategi batean');
writeln(' gorde. Suposa daiteke liburutegiak 125 liburu izan ditzakeela gehienez.');
writeln;
writeln(' Bi liburuk "iAldizMaileguan" kopuru bera badute, horien arteko sailkapen');
writeln(' erlatiboa alfabetikoki erabakiko da "sIzenburua" delako eremuari jarraituz.');
writeln(' Sarriago mailegatu izan diren 10 liburuen sailkapena jasoko duen helburuko');
writeln(' fitxategiaren elementuak erregistroak dira, erregistroen eremuak ondoko 3');
writeln(' hauek izango dira:');
writeln;
writeln(' iAldizMaileguan: integer; { liburutegi fitxategian dagoen datua }');
writeln(' sIzenburua: tsKate55; { liburutegi fitxategian dagoen datua }');
writeln(' sLiburuKodea: tsKate15; { liburutegi fitxategian dagoen datua }');
textcolor(LightGray);
writeln;

writeln;
writeln('8. aukerako lana: Gehien mailegatutako 10 liburuak');
sFitxIzenTop10 := sBIDEA + 'TOP-10.DAT';
writeln;

writeln('-------Ordenatuko den bektore laguntzailea lortu-------------');
FitxategitikBektoreaBete(sFitxIzenLiburutegia, ardSailkatuenZerrenda, iLuzeraTOP10); { "top10" unitatean garatu behar duzue }
writeln('-------Ordenatu gabeko bektorea------------------------------');
BektoreaIkusi(ardSailkatuenZerrenda, iLuzeraTOP10);

writeln('HONAINO');
readln; { "top10" unitatean garatu behar duzue }
writeln('-------Bektore laguntzailea ordenatu-------------------------');
KopuruzEtaIzenburuzOrdenatu(ardSailkatuenZerrenda, iLuzeraTOP10); { "top10" unitatean garatuta }
writeln('-------Ordenatutako bektorea---------------------------------');
BektoreaIkusi(ardSailkatuenZerrenda, iLuzeraTOP10); { "top10" unitatean garatu behar duzue }
writeln('-------Ordenatutako bektoretik helburuko fitxategia lortu----');
BektoretikFitxategiaBete(sFitxIzenTop10, ardSailkatuenZerrenda, iLuzeraTOP10); { "top10" unitatean garatu behar duzue }

writeln('========================== ', sFitxIzenTop10, ' ==========================');
writeln;
SailkapenarenFitxategiaIkusi(sFitxIzenTop10); { "top10" unitatean garatu behar duzue }
writeln;
end;
'9': begin
writeln;
textcolor(LightRed);
writeln('Lantaldeak proposatutako duen (eta onartuko zaion) zereginen bat');
textcolor(LightGray);

write('Aldatu nahi duzun liburuaren kodea eman: ');
readln(sLiburuarenKodea);
iPosizioa := fniBilatu(sLiburuarenKodea, sFitxIzenLiburutegia);
if iPosizioa = -1 then
writeln(sLiburuarenKodea, ' kodea duen libururik ez dago!!!')
else
Aldatu(sFitxIzenLiburutegia, iPosizioa);

writeln;
write('Kendu nahi duzun liburuaren kodea eman: ');
readln(sLiburuarenKodea);
iPosizioa := fniBilatu(sLiburuarenKodea, sFitxIzenLiburutegia);
if iPosizioa = -1 then
writeln(sLiburuarenKodea, ' kodea duen libururik ez dago!!!')
else
Kendu(sFitxIzenLiburutegia, iPosizioa);
end;
end;
if cAukera <> '0' then
begin
writeln;
textcolor(LightGreen);
writeln('RETURN sakatu aurrera egiteko...');
textcolor(LightGray);
readln;
end;
until cAukera = '0';

ArraytikFitxategiraIrauli(ardErreserbak, iLuzera, sFitxIzenErreserbak);
end;

writeln;
textcolor(Yellow);
writeln('=== Amaitu =================================================');
textcolor(LightGray);
readln;
end.









unit top10;

INTERFACE

uses
datu_mota, crt;

procedure FitxategitikBektoreaBete( sFitxIzenLiburutegia: tsKate199;
var ardSailkatuenZerrenda: tardSailkatuenZerrenda;
var iLuzeraTOP10: integer);

procedure SailkapenarenFitxategiaIkusi(sFitxIzenSailkatuak: tsKate199);

procedure BektoretikFitxategiaBete( sFitxIzenSailkatuak: tsKate199;
const ardSailkatuenZerrenda: tardSailkatuenZerrenda;
iLuzeraTOP10: integer);

procedure BektoreaIkusi(const ardSailkatuenZerrenda: tardSailkatuenZerrenda;
iLuzeraTOP10: integer);

procedure KopuruzEtaIzenburuzOrdenatu(var ardSailkatuenZerrenda: tardSailkatuenZerrenda;
iLuzeraTOP10: integer);


IMPLEMENTATION

procedure FitxategitikBektoreaBete( sFitxIzenLiburutegia: tsKate199;
var ardSailkatuenZerrenda: tardSailkatuenZerrenda;
var iLuzeraTOP10: integer);
var
fLiburutegia: tfrdLiburutegiFitxategia;
rdLiburuBat: trdLiburu;
begin
assign(fLiburutegia, sFitxIzenLiburutegia);
reset(fLiburutegia);

writeln('"FitxategitikBektoreaBete" prozedura exekutatzen.');
writeln('RETURN sakatu aurrera jarraitzeko...');
readln;

iLuzeraTOP10 := 0;
while not eof(fLiburutegia) do
begin
read(fLiburutegia, rdLiburuBat);

iLuzeraTOP10 := iLuzeraTOP10 +1;
ardSailkatuenZerrenda[iLuzeraTOP10].iAldizMaileguan := rdLiburuBat.iAldizMaileguan;
ardSailkatuenZerrenda[iLuzeraTOP10].sIzenburua := rdLiburuBat.sIzenburua;
ardSailkatuenZerrenda[iLuzeraTOP10].sLiburuKodea := rdLiburuBat.sLiburuKodea;
end;

close(fLiburutegia);
end;


procedure BektoretikFitxategiaBete( sFitxIzenSailkatuak: tsKate199;
const ardSailkatuenZerrenda: tardSailkatuenZerrenda;
iLuzeraTOP10: integer);
var
fSailkatuak: tfrdSailkatuenFitxategia;
rdElem: trdSailkatua;
iKont: integer;
iZenbatLiburu: integer;
begin
assign(fSailkatuak, sFitxIzenSailkatuak);
rewrite(fSailkatuak);

if iLuzeraTOP10 >= 10 then
iZenbatLiburu := 10
else
iZenbatLiburu := iLuzeraTOP10;

for iKont:=1 to iZenbatLiburu do
begin
rdElem := ardSailkatuenZerrenda[iKont];
write(fSailkatuak, rdElem);
end;
writeln('"BektoretikFitxategiaBete" prozedura exekutatzen.');
writeln('RETURN sakatu aurrera jarraitzeko...');
readln;

close(fSailkatuak);
end;


procedure BektoreaIkusi(const ardSailkatuenZerrenda: tardSailkatuenZerrenda;
iLuzeraTOP10: integer);
var
iKont: integer;
begin
writeln('"BektoreaIkusi" prozedura exekutatzen.');
writeln('RETURN sakatu aurrera jarraitzeko...');
readln;

for iKont:=1 to iLuzeraTOP10 do
begin
writeln(' aldiak:', ardSailkatuenZerrenda[iKont].iAldizMaileguan);
writeln(' izenburua:', ardSailkatuenZerrenda[iKont].sIzenburua);
writeln(' kodea:', ardSailkatuenZerrenda[iKont].sLiburuKodea);
writeln;
end;
end;


(* Bektore baten ordenazioa AUKERAKETA metodoaren bitartez. *)
(* Parametro bat irteerakoa den bitartean bestea sarrerakoa *)
(* da. Horregatik arraya erreferentziaz pasatzen da baina *)
(* aldatzen ez den luzera logikoari dagokion osoa balioz. *)
procedure KopuruzEtaIzenburuzOrdenatu(var ardSailkatuenZerrenda: tardSailkatuenZerrenda;
iLuzeraTOP10: integer);
var
iPosMax, j, k: integer;
rdMax: trdSailkatua;
begin
writeln('"KopuruzEtaIzenburuzOrdenatu" prozedura exekutatzen.');
writeln('RETURN sakatu aurrera jarraitzeko...');
readln;

for k:=1 to iLuzeraTOP10-1 do
begin
rdMax := ardSailkatuenZerrenda[k];
iPosMax := k;
for j:=k+1 to iLuzeraTOP10 do (* ordenatu gabekoen artean *)
begin
if (rdMax.iAldizMaileguan < ardSailkatuenZerrenda[j].iAldizMaileguan) or
((rdMax.iAldizMaileguan = ardSailkatuenZerrenda[j].iAldizMaileguan) and (rdMax.sIzenburua > ardSailkatuenZerrenda[j].sIzenburua)) then
begin
rdMax := ardSailkatuenZerrenda[j];
iPosMax := j;
end;
end;
ardSailkatuenZerrenda[iPosMax] := ardSailkatuenZerrenda[k]; (* trukatu, tokiz aldatuz *)
ardSailkatuenZerrenda[k] := rdMax;
end;
end;


procedure SailkapenarenFitxategiaIkusi(sFitxIzenSailkatuak: tsKate199);
var
fSailkatuak: tfrdSailkatuenFitxategia;
rdSailkatuBat: trdSailkatua;
begin
assign(fSailkatuak, sFitxIzenSailkatuak);
reset(fSailkatuak);

writeln('"SailkapenarenFitxategiaIkusi" prozedura exekutatzen.');

textcolor(Cyan);
writeln(filesize(fSailkatuak), ' elementu fitxategian');
writeln;

while not eof(fSailkatuak) do
begin
read(fSailkatuak, rdSailkatuBat);

writeln(' Aldiak:', rdSailkatuBat.iAldizMaileguan);
writeln(' Izenburua:', rdSailkatuBat.sIzenburua);
writeln(' Kodea:', rdSailkatuBat.sLiburuKodea);
writeln;
end;

textcolor(LightGray);

close(fSailkatuak);
end;


END.


   

2023(e)ko apirilaren 11(a), asteartea

12. ASTEA | laborategi/mintegian egin dena

 12. astea (2023/04/18) laborategi/mintegian egindakoa






  • Zerrenda pasatzeko, eGela zerbitzuko 12. saioan egindako programak bidalketaren bitartez. Lanik bidali ez dutenak:


    • Gaizka Martin Zorrozua

    • Maider Nogueira Alonso

    • Antxon Zubiaurre Peñalba





  • Erregistroen array baten adibidea egin dugu. Konkretuki 11. astea | erregistroen bektore baten elementuak ezabatu artikulutik abiatuta, ikasle gazteak kendu array laguntzaile bat erabiliz. Bi eremu (sIzena katea eta iAdina zenbaki osoa) dituen erregistroetako arrayarekin lan egin dugu eragiketa hauek burutuz:


    1. Zerrenda datuz bete (suposatuz arrayak gehienez 25 elementu izan ditzakeela)

    2. Zerrendaren edukia pantailaratu

    3. Adin guztien batezbesteko aritmetikoa kalkulatu

    4. Adin txikiko elementuak (media baino txikiagoak direnak) zerrendatik kendu, ondorioz hasierako zerrenda aldatua suertatuko da

    5. Zerrenda berriaren edukia pantailaratu





  • Erregistroen fitxategi bat (bi eremu: sNor katea eta rNota zenbaki erreala) sortu dugu eta ondoren bere edukia pantailan erakutsi dugu. Hona hemen programaren kodea urratsez-urrats azalduta:



program ErregistroenFitxategiaSortuEtaIkusi;

type
tsKate249 = string[249]; { fitxategiaren izena luzea izan daitekeelako }
tsKate15 = string[15];
trdIkaslea = record
sNor: tsKate15;
rNota: real;
end;
tfrdIkasleak = file of trdIkaslea;


{ sFitxIzen katea ezaguna da programa nagusian eta prozedura honetan }
{ izena ez da aldatuko, horregatik sarrerako parametroa da prozeduran }
procedure FitxategiaSortuEtaBete(sFitxIzen: tsKate249);
begin
end;


{ sFitxIzen katea ezaguna da programa nagusian eta prozedura honetan }
{ izena ez da aldatuko, horregatik sarrerako parametroa da prozeduran }
procedure FitxategiaIkusi(sFitxIzen: tsKate249);
begin
end;


{=============Programa nagusia eta programa nagusiko aldagaiak=============}
var
sFitxIzen: tsKate249;
begin
writeln;
writeln('Eman fitxategiaren izena, adibidez (C:\NereKarpeta\31Taldea.dat): ');
readln(sFitxIzen);
writeln('===>', sFitxIzen, '<===');

writeln;
writeln('Fitxategiaren datuak jasotzen...');
FitxategiaSortuEtaBete(sFitxIzen);
writeln;

writeln('Fitxategiaren datuak:');
FitxategiaIkusi(sFitxIzen);

writeln;
writeln('=======================');
writeln('RETURN sakatu amaitzeko');
write ('=======================');
readln;
end.


 

2023(e)ko apirilaren 1(a), larunbata

11. ASTEA | laborategi/mintegian egin dena

 11. astea (2023/04/04) laborategi/mintegian egindakoa





Zerrenda pasatzeko, eGela zerbitzuko 11. saioan egindako programak bidalketaren bitartez. Lanik bidali ez dutenak:

  • Eñaut Calvo Gaztañaga

  • Gaizka Martin Zorrozua

  • Maider Nogueira Alonso

  • Antxon Zubiaurre Peñalba




Gaurko saioaren helburua hirukoitza da:



  1. Proiektuari buruz gain-gainetik hitz egitea (lantaldeak osatu

  2. Arrayekin lan egitea 

  3. Erregistroen arrayekin lan egitea   






1. Proiektua garatzeko taldekideak








2. Arrayekin lanean, arrayaren elementuak datu-mota soilak (real, integer, string, char,...) 







3. Erregistroen arrayekin lanean




 

2023(e)ko martxoaren 30(a), osteguna

10. ASTEA | laborategi/mintegian egin dena

10. astea (2023/03/28) laborategi/mintegian egindakoa






  • Kontrolaren bidalketaren bitartez zerrenda pasatu dugu. Azterketarik bidali ez dutenak:


    • Gaizka Martin Zorrozua

    • Maider Nogueira Alonso

    • Antxon Zubiaurre Peñalba






 

2023(e)ko martxoaren 14(a), asteartea

9. ASTEA | laborategi/mintegian egin dena

 9. astea (2023/03/21) laborategi/mintegian egindakoa






  • Zerrenda pasatzeko, eGela zerbitzuko 9. saioan egindako programak bidalketaren bitartez. Lanik bidali ez dutenak:


    • Alex Arroitajauregui Elguea

    • Gaizka Martin Zorrozua

    • Antxon Zubiaurre Peñalba





  • Aurreko astean amaitu gabe geratu zen 8. astea | palindromoak ariketa programatu dugu ñ eta Ñ karaktereak aintzat hartu gabe




 

2023(e)ko martxoaren 13(a), astelehena

8. ASTEA | laborategi/mintegian egin dena

 8. astea (2022/03/14) laborategi/mintegian egindakoa






  • Zerrenda pasatzeko, eGela zerbitzuko 8. saioan egindako programak bidalketaren bitartez. Lanik bidali ez dutenak:


    1. Naroa Garcia Castezubi

    2. Gaizka Martin Zorrozua

    3. Jon Minguez Laiseca    asteazkenean etorriko da 

    4. Antxon Zubiaurre Peñalba








 



2023(e)ko martxoaren 3(a), ostirala

7. ASTEA | laborategi/mintegian egin dena

 7. astea (2023/03/07) laborategi/mintegian egindakoa






  • Zerrenda ez dugu pasatu. Baina eGela bitartez bidalitako lanen arabera, ez etorriak hauek izan dira:


    1. Gaizka Martin Zorrozua

    2. Anartz Pildain Aranguren

    3. Antxon Zubiaurre Peñalba





  • Praktika saio honek bi zati izan ditu. Lehen zatian, oso modu gidatuan, Azpiprogramak: Divide et Impera artikulua ikusi dugu, teoriako ikasgelan hasita daukagu gai hau eta laborategian, modu praktikoan, honako hau ikusi dugu:


    •   1. Uneko parametroak eta parametro formalak

    •   2. Sarrerako parametroak

    •   3. Uneko parametro eta parametro formalen arteko bateragarritasuna

    •   4. Irteerako parametroak

    •   5. Aldagai orokorrak

    •   6. Bertako aldagaiak

    •   7. Funtzioak

    •   8. Faktoriala kalkulatzen duen funtzio iteratiboa egin dugu

    •   9. Errekurtsibitatea (errekurtsibitatearen kontzeptua eman gabe geratu da)

    • 10. Errekurtsibitateren adibidea (adibide hau eman gabe geratu da ere)






 


2023(e)ko otsailaren 27(a), astelehena

6. ASTEA | laborategi/mintegian egin dena

 6. astea (2023/02/28) laborategi/mintegian egindakoa






  • Zerrenda ez dugu pasatu. Baina eGela bitartez bidalitako lanen arabera, ez etorriak hauek izan dira:


    • Gaizka Martin Zorrozua

    • Antxon Zubiaurre Peñalba





  • Zerrenda pasatu dugu, 2. azpitalditik etorriak:


    • Naroa Barroso Blanco

    • Endika Perez Valle





  • Nahiz eta eskatzen diren programak horiek ez izan, 5. astea | zenbaki edo letra sorta baten maximoa blog-artikulura joan eta bertan ematen diren hiru kodeak hartu. Algoritmoak ulertu, programak exekutatu eta emaitzak aztertu



    5. astea | zenbaki edo letra sorta baten maximoa blog-artikuluko programetan oinarriturik, etxerako eskatzen diren programak:



    • ZenbakiSortaBatenMinimoa_1.pas minimoa kalkulatzeko iZenbat irakurri, emaitza izango den iMinimoa hasieratu eta FOR batean iZenbat iterazio egin balio minimoa lortzeko

    • ZenbakiSortaBatenMinimoa_2.pas minimoa kalkulatzeko iZenbat irakurri, FOR-etik kanpo emaitza izango den iMinimoa kalkulatu eta FOR batean iZenbat-1 iterazio egin balio minimoa lortzeko

    • LetraSortaBatenMaximoa.pas maximoa kalkulatzeko iZenbat irakurri, emaitza izango den iMaximoa hasieratu eta FOR batean iZenbat iterazio egin balio maximoa lortzeko








  • 6. astea | Fibonacci zenbakiak ariketa planteatu eta egin dugu. Hiru bertsio:


    1. Fibonacciren hainbat zenbaki pantailan idatzi: iZenbat datua teklatuaren bitartez irakurri, Fibonacciren lehen bi zenbakiak FOR agindua baino lehen pantailaratu eta hurrengo zenbakiak banan-banan FOR aginduaren iterazio bakoitzean

    2. Muga bat emanik Fibonacciren zenbakiak pantailan idatzi: iMuga datua teklatuaren bitartez irakurri, Fibonacciren lehen hiru zenbakiak WHILE agindua baino lehen pantailaratu eta hurrengo zenbakiak banan-banan WHILE aginduaren iterazio bakoitzean

    3. Muga bat emanik Fibonacciren zenbakiak pantailan idatzi: iMuga datua teklatuaren bitartez irakurri, Fibonacciren lehen bi zenbakiak REPEAT agindua baino lehen pantailaratu eta hurrengo zenbakiak banan-banan REPEAT aginduaren iterazio bakoitzean




 

2023(e)ko otsailaren 20(a), astelehena

5. ASTEA | laborategi/mintegian egin dena

 5. astea (2023/02/21) laborategi/mintegian egindakoa






  • Lehen kontrola egiten dugula zerrenda pasatu dugu. Deitutakoen artean ez etorriak:


    • Gaizka Martin Zorrozua

    • Antxon Zubiaurre Peñalba





  • Ikasgelan azaldu den 5. astea | Newton-en hurbilketa-metodoa kalkulu-metodoaren haritik, ariketa bati ekin diogu. Hortaz, y=ax2+bx+c funtzioaren ariketari hasiera eman diogu eta ez dugu amaitzeko astirik izan baina oso bideratuta geratu da. Honaino heltzeko asmoa izan dugu:


    {    
    Zenbaki positibo baten erro karratua
    x^2 - N = 0 parabola berezia

    Newton-Raphson metodoa
    ======================
    Xi+1 = Xi - f(Xi)/f'(Xi)
    Xi+1 = Xi - (X¡*Xi - N) / 2*Xi
    Xi+1 = (N/Xi + Xi) / 2

    Kontuz Xi ez dadila zero izan, halakoetan tangentea
    horizontala izango da eta ezingo du OX ardatza moztu.
    Halakoetan beste hurbilketa bat hautatu.

    -------

    Bigarren graduko edozein parabola
    Ax^2 + Bx + C = 0

    f(x) = Ax^2 + Bx + C
    f'(x) = 2Ax + B

    Newton-Raphson metodoa
    ======================
    Xi+1 = Xi - f(Xi)/f'(Xi)
    Xi+1 = Xi - (AXi^2 + BXi + C)/(2AXi + B)

    Kontuz parabolak OX ardatza ez duenean mozten ez ikutzen.
    Halakoetan programaren exekuzioa ez da eteten, horregatik
    B^2-4AC diskriminatzailea kalkulatu eta negatiboa izanez
    gero erro irudikariak kalkulatu eta balioak pantailaratu.

    Kontuz (2AXi+B) ez dadila zero izan, halakoetan tangentea
    horizontala izango da eta ezingo du OX ardatza moztu.
    Halakoetan beste hurbilketa bat hautatu.

    Erroak parabolaren koefizienteen arabera:

    A=1, B=-4, C=3 erroak x=1 eta x=3, puntu berezia x=2
    A=1, B=2, C=1 erroa x=1 (doblea)
    A=1, B=2, C=3 erro irudikariak
    }

    program NewtonEdozeinParabola_while ;
    const
    rEPSILOM = 0.000000001 ;
    var
    rA, rB, rC, rEmaitza, rAurrekoa, rDiskriminatzailea : real ;
    cErantzuna : char ;
    begin
    writeln ;
    writeln ;
    writeln ;
    writeln('Erroak parabolaren koefizienteen arabera:') ;
    writeln ;
    writeln(' A=1, B=-4, C=3 erroak x=1 eta x=3, puntu berezia x=2') ;
    writeln(' A=1, B=2, C=1 erroa x=1 (doblea)') ;
    writeln(' A=1, B=2, C=3 erro irudikariak ') ;
    writeln ;
    writeln ;
    writeln('Bigarren graduko parabola baten erro bat kalkulatu') ;
    writeln('--------------------------------------------------') ;
    writeln ;
    write('x^2-ren A koefizientea eman (adibidez 1): ') ;
    readln(rA) ;
    write(' x-ren B koefizientea eman (adibidez -4): ') ;
    readln(rB) ;
    write(' C koefiziente librea eman (adibidez 3): ') ;
    readln(rC) ;

    rDiskriminatzailea := rB*rB - 4*rA*rC ;

    if rDiskriminatzailea < 0 then
    begin
    writeln ;
    writeln(rA:0:1, 'X^2 + ', rB:0:1, 'X + ', rC:0:1, ' parabolak ez du mozten OX ardatza.') ;
    writeln('Erroak irudikariak dira:') ;
    writeln('x1 = ':30, -rB/(2*rA):0:2, '+i(', sqrt(-rDiskriminatzailea)/(2*rA):0:2,') eta ') ;
    writeln('x2 = ':30, -rB/(2*rA):0:2, '-i(', sqrt(-rDiskriminatzailea)/(2*rA):0:2,')') ;
    end
    else
    begin
    repeat
    repeat
    write('Erroaren hurbilketa bat eman, x bat eman: ') ;
    readln(rAurrekoa) ; (* lehendabiziko hurbilketa *)

    if 2*rA*rAurrekoa + rB = 0.0 then
    begin
    writeln('Tangentea horizontala delako,':35) ;
    writeln('erroa ezin daiteke kalkulatu.':35) ;
    writeln('Hurbilketa berri bat hautatu.':35) ;
    end ;
    until 2*rA*rAurrekoa + rB <> 0.0 ;

    writeln ;
    writeln(' rEPSILOM = ', rEPSILOM:0:9, ' rHurbilketa = ':27, rAurrekoa:0:9) ;
    rEmaitza := rAurrekoa - (rA*rAurrekoa*rAurrekoa + rB*rAurrekoa + rC) / (2*rA*rAurrekoa + rB) ;
    writeln('rAurrekoa = ', rAurrekoa:0:16, 'rEmaitza = ':20, rEmaitza:0:16) ;
    writeln ;
    while abs(rEmaitza - rAurrekoa) > rEPSILOM do
    begin
    rAurrekoa := rEmaitza ;
    rEmaitza := rAurrekoa - (rA*rAurrekoa*rAurrekoa + rB*rAurrekoa + rC) / (2*rA*rAurrekoa + rB) ;
    writeln('rAurrekoa = ', rAurrekoa:0:16, 'rEmaitza = ':20, rEmaitza:0:16) ;
    end ;

    writeln ;
    writeln(rA:0:1, 'X^2 + ', rB:0:1, 'X + ', rC:0:1, ' = 0 ekuazioaren emaitza ', rEmaitza:0:16, ' da') ;

    writeln ;
    write('Erro gehiago bilatu nahi da (B/E): ') ;
    readln(cErantzuna) ;
    cErantzuna := UpCase(cErantzuna) ;
    until cErantzuna <> 'B' ;
    end ; (* Diskriminatzailearen else bukaera *)

    writeln ;
    writeln('=======================') ;
    writeln('RETURN sakatu amaitzeko') ;
    writeln('=======================') ;
    readln ;
    end. { PROGRAMAREN BUKAERA }

     




 

2023(e)ko otsailaren 14(a), asteartea

4. ASTEA | laborategi/mintegian egin dena

 4. astea (2023/02/14) laborategi/mintegian egindakoa



  • Zerrenda pasatu dugu, deitutakoen artean ez etorriak:


    • Martin Zorrozua, Gaizka  

    • Ureta Uranga, Ander    asteazkenean etortzekoa da 

















  • rX zenbaki erreala izanik, eta iY zenbaki osoa izanik, jakingo zenuke rXiY berretura kalkulatzen? Etxerako lana da




  • Eta iZbk zenbaki osoa eta positiboa teklatuaren bitartez irakurririk, jakingo zenuke liFaktoriala=iZbk! faktoriala kalkulatzen? Etxerako lana ere



 

2023(e)ko otsailaren 6(a), astelehena

3. ASTEA | laborategi/mintegian egin dena

 3. astea (2023/02/07) laborategi/mintegian egindakoa





  • Zerrenda pasatu dugu, deitutakoen artean ez etorriak:


    • Martin Zorrozua, Gaizka  

    • Zubiaurre Peñalba, Antxon  









  • 3. asteko praktika honetan bi eratako ariketak eta kontzeptuak nahastu dira, orain artean ikusitako/aipatutako ariketak eta berriago diren ariketak:





    • 3. astea (laborategia)  |  [ikusitako ariketa ezagunak]








    • 3. astea (laborategia)  |  [ariketa berriak]







  • 3. astea | triangeluaren azalera izeneko ariketaren enuntziatua zertan den ikusi dugu laborategian, ariketa honek segida izango du eta bere entrega eskatuko dut. Programa honi hobekuntza bat gehitu (A puntua eta B puntua lotzen dituen AB lerroa edozein izan daiteke) eta EdozeinTriangelurenAzalera.pas programa bidali beharko didazue eGela bitartez (zehaztasunak hemen: 3. astea | edozein triangeluren azalera). 



 



15. ASTEA | laborategi/mintegian egin dena

15. astea (2023/05/09) laborategi/mintegian egindakoa 25 ikasleetatik 17 ikasleek kontrol-ariketaren bidalketa egin dute Hirugarren ko...