zeregina etiketadun mezuak erakusten. Erakutsi mezu guztiak
zeregina etiketadun mezuak erakusten. Erakutsi mezu guztiak

2024(e)ko maiatzaren 1(a), asteazkena

14. ASTEA | etxerako lana

 14. astea (2024/05/01) etxean egitekoa

AZP-2 azpitaldekoek saio praktiko hau galdu duzuenez, hona hemen, gutxi gora behera, aste honetan AZP-1 eta AZP-3 azpitaldeekin egin duguna.

Fitxategiekin lan eginez, ondoko eragiketak praktikatu ditugu:

  • 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.

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 }

 

2024(e)ko apirilaren 23(a), asteartea

13. ASTEA | etxerako lana

 13. astea (2024/04/23) etxean egitekoa

  • Funtsezkoena une honetan: Proiektuarekin jarrraitzea
  • Gogoratu datorren asteko asteazkena festa delako, laborategirik ez dugula izango. Kalterik izan ez dezazuen 14. praktikari dagokiona ostegun honetan egingo dugu:
    • Eguna: 2024-04-25
    • Ordua: 11:30etatik 13:30etara
    • Lekua: P0A6A ikasgelan
 

2024(e)ko apirilaren 10(a), asteazkena

12. ASTEA | etxerako lana

 12. astea (2024/04/17) etxean egitekoa

  • Dagoeneko zuen izenak eta abizenak idatzi dituzue Proiektuaren taldekideak artikuluan aipatzen den taulan, norbait falta bada edo zeozer zuzendu behar bada e-posta bat idatz egidazue
  • 12. ASTEA | laborategi/mintegian egin dena zuk zeuk etxean, zure ordenagailuan, errepika ezazu. Fitxategiaren ariketa hau izan da:
  • program ErregistroenFitxategiaSortuEtaIkusi;
     
    const
       sBIDEA = 'C:\NereKarpeta\';
     
    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);
    var
       f: tfrdIkasleak;
       rdElem: trdIkaslea;
       iKont: integer;
       iZenbat: integer;
    begin
       assign(f, sFitxIzen);    { fitxategia uztartu }
       rewrite(f);              { fitxategia sortu eta existitzekotan datuz hustu }
     
       repeat
           write('Zenbat ikasle dira? ');
           readln(iZenbat);
       until iZenbat > 0;
     
       for iKont:=1 to iZenbat do
       begin
          write(iKont:10, '. ikaslearen izena eman: ');
          readln(rdElem.sNor);          { erregistroaren eremu bat teklatuz irakurri }
          write(iKont:10, '. ikaslearen nota eman:  ');
          readln(rdElem.rNota);         { erregistroaren eremu bat teklatuz irakurri }
     
          write(f, rdElem);   { elementu bat (erregistro bat) fitxategia idatzi }
       end;
     
       close(f);     { fitxategia itxi }
    end;
     
     
    { sFitxIzen katea ezaguna da programa nagusian eta prozedura honetan  }
    { izena ez da aldatuko, horregatik sarrerako parametroa da prozeduran }
    procedure FitxategiaIkusi(sFitxIzen: tsKate249);
    var
       f: tfrdIkasleak;
       rdElem: trdIkaslea;
    begin
       assign(f, sFitxIzen);    { fitxategia uztartu }
       reset(f);                { fitxategia existitzen bada ireki }
     
       while not eof(f) do      { fitxategiaren bukaeran ez gauden bitartean... }
       begin
          read(f, rdElem);      { elementu bat (erregistro bat) fitxategitik irakurri }
     
          { erregistroaren eremu banaren edukia pantailaratu }
          writeln(filepos(f):10, '. ikaslearen izena: ', rdElem.sNor);
          writeln(filepos(f):10, '. ikaslearen nota:  ', rdElem.rNota:0:2);
       end;
     
       close(f);
    end;
     
     
    { sFitxIzen katea ezaguna da programa nagusian eta prozedura honetan  }
    { izena ez da aldatuko, horregatik sarrerako parametroa da prozeduran }
    function fnMediaKalkulatu(sFitxIzen: tsKate249): real;
    var
       f: tfrdIkasleak;
       rdElem: trdIkaslea;
       rMetatua: real;
    begin
       assign(f, sFitxIzen);    { fitxategia uztartu }
       reset(f);                { fitxategia existitzen bada ireki }
     
       rMetatua := 0.0;
       while not eof(f) do      { fitxategiaren bukaeran ez gauden bitartean... }
       begin
          read(f, rdElem);      { elementu bat (erregistro bat) fitxategitik irakurri }
     
          { nota bat gehiago pilatu rMetatua batukarian }
          rMetatua := rMetatua + rdElem.rNota;
       end;
     
       fnMediaKalkulatu := rMetatua / filesize(f);
        
       close(f);
    end;
     
    
    { Hiru fitxategien izenak ezagunak direlako programa nagusian eta   }
    { prozedura honetan aldatzen ez direlako sarrerako parametroak dira }
    procedure BiFitxategiBerriSortu(     sFitxIzen: tsKate249;
                                    sFitxIzenAprob: tsKate249;
                                    sFitxIzenSuspn: tsKate249);
    var
       f, f_A, f_S: tfrdIkasleak;
       rdElem: trdIkaslea;
    begin
       assign(f, sFitxIzen);
       reset(f);
       assign(f_A, sFitxIzenAprob);
       rewrite(f_A);
       assign(f_S, sFitxIzenSuspn);
       rewrite(f_S);
    
       while not eof(f) do
       begin
          read(f, rdElem);
          if rdElem.rNota >= 5.0 then
             write(f_A, rdElem)
          else
             write(f_S, rdElem)
       end;
    
       close(f);
       close(f_A);
       close(f_S);
    end;
    
    
    {=============Programa nagusia eta programa nagusiko aldagaiak=============}
    var
       sFitxIzen: tsKate249;
       rBBA: real;
       sFitxIzenAprob: tsKate249;
       sFitxIzenSuspn: tsKate249;
    begin
       writeln;
       write('Eman fitxategiaren izena, adibidez (31Taldea): ');
       readln(sFitxIzen);
       //sFitxIzen := sBIDEA + sFitxIzen + '.dat';      (* edo hurrengoa *)
       sFitxIzen := concat(sBIDEA, sFitxIzen, '.dat');  (* edo aurrekoa *)
       writeln('==>', sFitxIzen, '<== bidea eta luzapena programak gehituta');
    
       writeln;
       writeln('Fitxategiaren datuak jasotzen...');
       FitxategiaSortuEtaBete(sFitxIzen);
    
       writeln; 
       writeln('Fitxategi osoaren datuak:');
       FitxategiaIkusi(sFitxIzen);
    
       writeln; 
       rBBA := fnMediaKalkulatu(sFitxIzen);
       write('Nota guztien batezbesteko aritmetikoa: ', rBBA:0:2, ' puntu');
    
       writeln;
       sFitxIzenAprob:= sBIDEA + 'Aprobatuak.dat';
       sFitxIzenSuspn:= sBIDEA + 'Suspendituak.dat';
       BiFitxategiBerriSortu(sFitxIzen, sFitxIzenAprob, sFitxIzenSuspn);
    
       writeln; 
       writeln('Aprobatuen datuak:');
       FitxategiaIkusi(sFitxIzenAprob);
    
       writeln; 
       writeln('Suspendituen datuak:');
       FitxategiaIkusi(sFitxIzenSuspn);
    
       writeln;
       writeln('=======================');
       writeln('RETURN sakatu amaitzeko');
       write  ('=======================');
       readln;
    end.
    
  • 12. ASTEA | laborategi/mintegian egin denaren haritik. Erregistroen fitxategi bat daukagula (bi eremu: sNor katea eta rNota zenbakia) ondoko hiru lan hauek laster burutu ahalko dituzu:
    • Ikasle baten izena teklatuz eman eta bilatu; ikaslea aurkitu ondoren bere nota aldatu, nota berria nota guztien batezbesteko aritmetikoa izan dadin
    • Nota maximoa eta nota minimoa zehaztu; nota maximoa eta nota minimoa elkar trukatu 
    • Bi fitxategi sortu: batezbestekoaren gainetik daudenen fitxategia eta batezbestekoaren azpitik daudenen fitxategia
  • Ondoko hau urrunago dago: Proiektua amaiturik (2024) zereginaren bitartez zuen proiektua entregatu, hots, menuaren J eta K aukerak programatu (Entregatze-data: 2024ko maiatzaren 1ean, 23:59tan, astelehena)

2024(e)ko apirilaren 9(a), asteartea

11. ASTEA | etxerako lana

 11. astea (2024/04/10) etxean egitekoa

Proiektua dela eta, hirukoteak osoatu dituzue eta orain hau egizue:

  • Azterketa bat, eredu bat enuntziatua astiro irakurri eta azpimarratu ulertzen ez dituzuen hitzak (adibidez fitxategi)
  • Azterketa bat, beste eredu bat enuntziatua astiro irakurri eta azpimarratu ulertzen ez dituzuen hitzak (adibidez fitxategi). Bide batez, konturatu zaitez bi azterketa enuntzituek dituzten antzekotasunak
  • Proiektuan eskatzen dena artikula astiro irakurri eta ondokoak egin:
    1. C:\KromoBilduma kartepa sortu, eta bertan ondoko fitxategiak dorde:
      • KromoenProiektua.pas bezero-programa
      • datu_mota.pas unitatea
      • maia_uzta.pas unitatea
      • KROMOAK.DAT datu-fitxategia edo JOKALARIAK.DAT datu-fitxategia
    2. datu_mota.pas unitatea ireki eta bere INTERFACE atala irakurri, ikusi eta identifikatu erabiliko diren konstanteak eta datu-motak
    3. maia_uzta.pas unitatea ireki eta bere INTERFACE atala irakurri, ikusi eta identifikatu erabiliko diren azpiprogramak
    4. KromoenProiektua.pas bezero-programa ireki, aztertu eta konpilatu KromoenProiektua.exe lortzeko
  • KromoenProiektua.exe programa exekutatu, ondokoa eginez:
    1. Menuaren A, B, C, D, E eta F aukerak Azterketa bat, eredu bat enuntziatuarekin bat datozela ikusi
    2. Menuaren G, H eta I aukerak Azterketa bat, beste eredu bat enuntziatuarekin bat datozela ikusi
    3. Menuaren J aukera dela eta, Bilduma-fitxategiarekin lanean (menuaren J aukera) artikulua irakurri eta ulertu
    4. Menuaren K aukera dela eta, Proiektua aberasteko ideiak (menuaren K aukera) artikulua irakurri
  • Zure taldekideekin bildu K aukeran programatuko duzuena erabakitzeko eta, Proiektua: hobekuntzak aitortu (2024) zereginari erantzun
 

2024(e)ko martxoaren 23(a), larunbata

10. ASTEA | etxerako lana

 10. astea (2024/03/27) etxean egitekoa

 

2024(e)ko martxoaren 18(a), astelehena

9. ASTEA | etxerako lana

 9. astea (2024/03/20) etxean egitekoa

 

2024(e)ko martxoaren 12(a), asteartea

8. ASTEA | etxerako lana

 8. astea (2023/03/13) etxean egitekoa


Autoebaluazioa Azp-2: menu bat azpiprogramaz (kateak)

Aurreko astean eskatutako 7. astea | menu bat azpiprogramaz ariketa eredutzar harturik, antzekoa den beste hau egizu: Autoebaluazioa Azp-2: menu bat azpiprogramaz (kateak). Programa berria gidatzeko menu bat programatu beharra dago, aukerak hauek direla:

                                MENUA

        M  Maiuskulak eta minuskulak
        D   Katea pantailaratu diagonalki
        B   Bi noten batezbestekoa aritmetikoa
        H   Hainbat noten batezbestekoa aritmetikoa      

         I   Irten          

                           Zure aukera: __

Aukera guztiak azpiprograma banatan programatu, eta eskatzen diren aukera bakoitzaren kodea hemendik har daiteke 8. astea | kateen adibideak:
 

2024(e)ko martxoaren 3(a), igandea

7. ASTEA | etxerako lana

 7. astea (2024/03/06) etxean egitekoa

Teoriako ikasgelan 6. astea | zenbaki bat asmatzen ariketa eta den 6. astea | letra bat asmatzen ariketaren azaldu genituen astelehenean:
Etxean birpasatu laborategian ikusi dugun 7. astea | Taylor azpiprogramaz (angelu txikiekin) ariketa. Horretarako, bi programa hauek argi eduki:

Taylor bitartez angelu txiki baten (1. koadrantekoa) kosinua kalkulatzen duen programa egina dagoenez, zuen lana litzateke 7. astea | Taylor azpiprogramaz (edozein angelurako) artikuluan eskatzen den ariketa programatzea.

Etxean birpasatu laborategian ikusi ditugun Azpiprogramak: Divide et Impera artikuluaren honako hauek:

  •   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 (eta berredura kalkulatzen duena ere)
  •   9. Errekurtsibitatea (ez)
  • 10. Errekurtsibitateren adibidea (ezta ere)


Azpiprogramak erabat finkatzea da datorren asteko praktika saioaren helburua. Hori dela eta, hauxe da hurrengo autoebaluaziorako proposamenak:

7. asterako lan desberdinak agindu direnez, komeni da ezagutzea haien garrantzia edo premia zein den une honetan, eta, ondorioz, etxekolanen hurrenkera zein den:

  1. Birpasatu laborategian ikusi ditugun Azpiprogramak: Divide et Impera artikuluaren lehen zortzi atalak
  2. Programa nagusia emanda, Autoebaluazioa: triangelu baten zirkunzentroa ariketa bukatu eta eGela bitartez bidali
  3. fnliFaktorialaKalkulatu eta fnrBerreduraKalkulatu funtzioak programatzen dakigula, 7. astea | Taylor azpiprogramaz (angelu txikiekin) artikuluan deskribatzen den kosinua programatu
  4. Menua kudeatzen duen funtzioa erabiliz, Autoebaluazioa: menu bat azpiprogramaz ariketa kodetu eta eGela bitartez bidali

 

2024(e)ko otsailaren 26(a), astelehena

6. ASTEA | etxerako lana

 6. astea (2024/02/28) etxean egitekoa
  • 5. astea | zenbaki edo letra sorta baten maximoa blog-artikuluko programetan oinarriturik, 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


Autoebaluazioa:

Autoebaluazioa: hainbat aukerako menu bat. Azken asteetako hiru ariketa hauek ondo menperatu ondoren, programa bakar batean bildu:



Autoebaluazioa:

Autoebaluazioa: Fibonacciren zenbakiak azpiprogramaz. Programa bakarra izan arren programak bi zati izango ditu. Lehenengo zatian prozedura bat erabili eta bigarrenean funtzio bat.



 

2024(e)ko otsailaren 18(a), igandea

5. ASTEA | etxerako lana

 5. astea (2024/02/21) etxean egitekoa

Ziurtatu aurreko astean egindako ariketak menperatzen dituzula:
Ziurtatu aste honi dagozkion ariketa hauek menperatzen dituzula:
 

2024(e)ko otsailaren 13(a), asteartea

4. ASTEA | etxerako lana

 4. astea (2024/02/14) etxean egitekoa

Aste honen etxekolana, argi dago, hurrengo asteleheneko kontrola prestatzea da. Hori dela eta, proiektuaren Informatika ☆ 2023-24 | proiektua blogeko ariketa guztien soluzioak eskuragarri jarri ditut. Ondoko ariketak arretaz aztertu eta ikasi:

3. astetik dakarzkigun ariketak hauek dira:

4. aste honi dagozkion berezko ariketak hauek dira:

4. aste honen bi ariketa hauek ostiralean azalduko dira teoriako eskolan, zuek, une honetan, enuntziatua irakurri eta ulertu:
 

2024(e)ko otsailaren 5(a), astelehena

3. ASTEA | etxerako lana

 3. astea (2023/02/08) etxean egitekoa

Proiektua dela eta, ondoko bi programa hauek eginak dituzue (edo eginak izan beharko zenituzke): oraintxe bertan ikasiko dugu:

Proiektuaren aurreko bi ariketa horien kodeak programa honen antzekoak dira:

{------------------------------------------------------------------------------
   Angelu positiboa radianetan --> angelu positiboa gradu, minutu, segundotan
 ------------------------------------------------------------------------------}
program RadianPositiboak_GraduMinutuSegundo;
var
  rRadianak: real;
  rGraduak: real;
  rAldeOsoa: real;
  rAldeDezimala: real;
  iGraduak: integer;
  rMinutuak: real;
  iMinutuak: integer;
  rSegundoak: real;
begin
  writeln;
  writeln;
  writeln('------------------------------------------------------------------------------');
  writeln(' Angelu positiboa (radianetan) --> Angelu positiboa (gradu-minutu-segundotan)');
  writeln('------------------------------------------------------------------------------');
  writeln;
  repeat
    write('0.0 eta +40.0 arteko radianak eman: ');
    readln(rRadianak);
  until (rRadianak >= 0.0) and (rRadianak <= 40.0);
  
  rGraduak :=  rRadianak*360/(2*PI);
  writeln(rRadianak:0:5, ' radian = ', rGraduak:0:5, ' gradu');
    
  writeln;
  writeln('rGraduak = ', rGraduak:0:5, ' gradu');
  rAldeOsoa := int(rGraduak);
  rAldeDezimala := frac(rGraduak);
  writeln('GRADUAK--> ', rAldeOsoa:0:5, ' gradu + ', rAldeDezimala:0:5, ' gradu');
    
  writeln;
  writeln('rGraduak/360 = ', rGraduak/360:0:5, ' itzuli');
  writeln('ITZULIAK--> ', int(rGraduak/360):0:5, ' itzuli + ', frac(rGraduak/360):0:5, ' itzuli');
  writeln('GRADUAK---> ', 360*int(rGraduak/360):0:5, ' gradu + ', 360*frac(rGraduak/360):0:5, ' gradu'); 
   
  rGraduak := 360*frac(rGraduak/360);
  writeln('rGraduak =  ', rGraduak:0:5, ' gradu (angelu efektiboa)');
  
  writeln;
  rAldeOsoa := int(rGraduak);
  rAldeDezimala := frac(rGraduak);
  writeln('GRADUAK---> ', rAldeOsoa:0:5, ' gradu + ', rAldeDezimala:0:5, ' gradu');
     
  iGraduak := trunc(rAldeOsoa);
  writeln('iGraduak =  ', iGraduak, ' gradu');
  
  rMinutuak := rAldeDezimala*60;
  writeln('rMinutuak = ', rMinutuak:0:5, ' minutu');
  
  rAldeOsoa := int(rMinutuak);
  rAldeDezimala := frac(rMinutuak);
  
  writeln('MINUTUAK--> ', rAldeOsoa:0:5, ' minutu + ', rAldeDezimala:0:5, ' minutu');
  
  iMinutuak := trunc(rAldeOsoa);
  writeln('iMinutuak = ', iMinutuak, ' minutu');
  rSegundoak := rAldeDezimala*60;
  writeln('rSegundoak = ', rSegundoak:0:5, ' segundo');
    
  writeln;
  writeln(rRadianak:0:5, ' radian = ', iGraduak, ' gradu ', iMinutuak, ' minutu ', rSegundoak:0:4, ' segundo');
  
  writeln;
  writeln ('=======================');
  writeln ('RETURN sakatu amaitzeko');
  write   ('=======================');
  readln;
end. { PROGRAMAREN BUKAERA }

Goiko adibide-programa hori enuntziatu honi dagokio, zure lana da exekutatzea eta bere irteera aztertzea (programak zer egiten duen ondo ulertzeko arreta berezia jarri emaitzen unitateetan). Ondoren, beste programa bat egizu rRadianak angelu-datua positiboa edo negatiboa denerako.

Aste honetan etxean egingo dituzuen ariketak hauek dira: Hasita daukagun 3. astea | triangeluaren azalera ariketa honi aurre egingo diozue aste honetan, ariketa garrantzitsua da honako arrazoi hauengatik:
  1. Ezagutzen ditugun beste ariketa batzuetan oinarritzen delako
  2. Gainera, eGela bitartez bidaltzea eskatuko dizuedalako: guztiz orokorra ez den ariketa hau abiapuntuz harturik, bere hedapena den 3. astea | edozein triangeluren azalera ariketa eskatuko dudalako. Programaren entrega egiteko Etxekolana: Edozein triangeluren azalera zeregina sortu dut
 

2024(e)ko urtarrilaren 29(a), astelehena

2. ASTEA | etxerako lana

 2. astea (2024/01/31) etxean egitekoa

Aste honetako laborategitik irtetean (eta ostiraleko klasea eman ondoren) jarraian aipatzen diren ariketa guzti hauek programatuta eta ulertuta egon daitezela:
Proiektuarekin lotutako bi programa hauek ere egin:
Zuk ikusi lana eta denbora nola banatzen dituzun, bai etxean zein laborategian. Baina aurrera egiteko programa hauek menperatu behar dira, hurrengo gaia baldintzazko aginduak delako eta gai berri hori kontzeptu hauen gainean eraikitzen delako.

2024(e)ko urtarrilaren 22(a), astelehena

1. ASTEA | etxerako lana

 1. astea (2024/01/24) etxean egitekoa

  • Konpiladorea instalatu zuen etxeetako ordenagailuetan. Horretarako, joan eGela gela birtualeko BALIABIDEAK atalera eta hiru aukera izango dituzu programa hartzeko:
  • Aurreko adibideak begiratu gabe ondoko hau egin: Teoriako blogean argitaratutako Programa baten egitura izeneko artikulutik abiatura LaukizuzenarenAzalera programa egin dugu: zenbaki osoak lantzen dituen programa (bi zenbaki teklaturen bitartez irakurri, eta datu horiei dagokien emaitza kalkulatu ondoren bere balioa pantailan erakutsi). Programa horren baliokidea den TriangeluarenAzalera ariketa egizu (bi zenbaki teklaturen bitartez irakurri rOinarria eta rAltuera, eta datu horiei dagokien triangeluaren azalera pantailan erakutsi), baina zenbaki errealekin lan eginez