2024(e)ko apirilaren 4(a), osteguna

Proiektua: jorratu beharreko ibilbidea


Baliabideak

Proiektuarekin lotutako hasierako informazioa hau da:



Bidea

Udaberriko oporralditik itzultzean, apirilaren 9ko laborategi egunean, irakasleak proiektuaren enuntziatua azaldu zuen eta erabiliko diren unitateei dagozkien interfazeen deskribapenak egin zituen (unitateak lau hauek dira: maia_uzta, bilduma21, bilduma30 eta bilduma39).

Ondoren, bide hau irekitzat ematen da:


Bideak hiru munarri ditu:
  1. Proiektuaren baliabideak unitate batean garaturik daude, apirilaren 9an unitatearen funtzionamendua laborategian ikusi da. Zuen lana: etxeko ordenadorean unitate baten funtzionamendua frogatzea, bi adibide: itsas-bataila (i) eta itsas-bataila (ii)
  2. Proiektuari gehituko dizkiozuen hobekuntzen aitorpena, gehien jota apirilaren 18rako (ostegunerako) bete behar duzue Proiektua: hobekuntzak aitortu (2024) izeneko zereginari erantzunez
  3. Proiektua garatu, gehien jota maiatzaren 1erako (astelehenerako) bukatu beharko duzue eta bere entrega Proiektua amaiturik (2024) izeneko zereginaren bitartez egingo duzue
Goiko irudia begiratu, ikusten duzue bidea bukatzen den tontorraren ostean beste tontor bat agertzen dela? Ba bai, halaxe da, oraindik zerbait gehiago falta da, hau:
Hirugarren munarrian entregatu duzuen lanaren gaineko azterketa bat pasatu beharko duzue 15. asteko praktika egunean (maiatzaren 7an). Lantaldearen kide bakoitzak froga bera egin beharko du bakarka, ordenagailuaren aurrean garatutako proiektuaren gaineko ariketa bat izango da.


Entregak

Goiko irudian proiektuaren urratsak erakusten badira, hurrengo irudi honetan urrats bakoitzean zer entregatuko duzuen erakusten da:

  1. Proiektuari laguntzen dion unitate sorta: zuen etxeko ordenagailuan frogatu. Entregarik ez dago, baina arazorik baduzue tutoretza bat eska ezazue
  2. Proiektuari gehitu dizkiozuen hobekuntzen aitorpena: txosten idatzi bat
  3. Proiektua garatu: txosten bat idatzi bat eta programa bat (programa iruzkindu)
  4. Proiektuaren gaineko bakarkako froga: programa bat



Kalifikazioa

Guzti honetatik 1,0 + 0,5 = 1,5 puntu ateratzen dira:


Hirugarren kontrola, ariketa handia (proiektua)


Iazko azterketa baten inguruan jardungo dugu kurtsoaren zehar.

15. astean, azken praktika egunean, proiektuari buruzko bakarkako froga:
  • azp1, 2024-05-07an
  • azp2, 2024-05-08an
  • azp3, 2024-05-06an



     
     
    %66a










    1,0 puntu






    Proiektuaren emaitza (proiektuaren programa).

    Lantaldeko partaideek kalifikazio berdina.


      %33a


      0,5 puntu
      Irakasgaiaren ebaluazioa artikulutik hartutako taula
       

      Proiektua zergatik eta zertarako

      Ikasketa prozesuan ikasleak ariketa laburrak egin beharko ditu kontzeptu zehatz bat edo beste ikaste aldera. Baina, azken azterketa, bilduma bat delako, ariketa handia izango da. Horregatik, komenigarria da azken azterketaren neurriko proiektu bat urratsez urrats ikasturtearen zehar garatzea.

      Proiektua mintegiko (12+24 orduak) eskolekin lotuta dago, batez ere gelaz kanpoko 24 orduekin lotuta dago.

      Proiektua bideratzeko Informatika ☆ 2023-24  |  proiektua izeneko bloga erabiliko dugu, non 2022-23 ikasturteko azterketa pare baten gaineko ariketak erakusten diren. Kromo-biltegi kasu bat aitzakiz hartuz, datuen multzoak prozesatzea izango da proiektuaren helburua.


      Proiektuaren garapenaren urrats bakoitzean, ikasleak argi beharko du izan zer da dagoeneko dakiena eta zer ikasiko duen urrats horretan. Urrats bakoitzaren hasieran, adibidez, honelako informazioa jasoko du ikasleak:

      ZER DAKIDAN:
      Badakit testuak eta konstanteen balioak pantailan idazten.



      ZER IKASIKO DUDAN:
      ReadLn prozedurari esker, teklatuaren bitartez, balio bat aldagai batean gordetzen ikasiko dut. Esleipena operazioaren bitartez aldagai batean balio jakin bat  gordetzen ikasiko dut.

      Azkeneko laborategi egunean, maiatzaren 7an, proiektua gaitzat harturik ikasleak azterketa bat pasatu beharko du.

       

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

      10. ASTEA | etxerako lana

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

       

      10. ASTEA | laborategi/mintegian egin dena

      10. astea (2024/03/26) laborategi/mintegian egindakoa

      • Zerrenda pasatu dugu. Deitutako 25en artean 6 ez dira etorri (zehaztapen gehiago eGela zerbitzuan)

      Gaurko helburua bikoitza da:

      1. Arrayekin lan egitea 
      2. Unitateak zer diren azaltzea 


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


      2. Unitateak
       

      10. astea | izenen eta noten taula


      asTaula hiru dimentsiotako taula bat da, kateak gorde ditzakeen asTaula arrayak 40 errenkada eta 3 zutabe ditu. Errenkada bakoitza ikasle bati dagokio: Errenkadaren lehen zutabean izena biltegitzen da, bigarrenean abizena eta hirugarren zutabean ikaslearen nota gordetzen da (hirurak string[19] datu-motakoak). Teoriako blogean gehiago...
       

      10. astea | elkar trukatu

      Gehienez 25 elementu gordetzeko gai den array batekin lan egingo dugu. Arrayaren elementuak zenbaki errealak izango dira.


      Datua den zenbaki erreal bat arrayean gorde aurretik, frogatu beharra dago errepikaturik ez dela egongo. Horretarako, teoriako blogearen 10. astea | bilaketa sekuentzialaren aplikazio bat programara jo eta bertako BilaketaLineala izeneko funtzioa erabili gure behar izanetara egokituz, hots, erabili beharko dituen moldapenak eginez.

       
      { Zenbaki erreal desberdinez array bat elikatu ondoren, minimoaren eta }
      { maximoaren posizioak lortu bi haien arteko lekuak elkar trukatzeko.  }
      program ElkarTrukatu;
      uses
         crt;
      
      const
         iBEHEMUGA = 1;
         iGOIMUGA = 20;
      
      type
         tarZerrenda = array[iBEHEMUGA..iGOIMUGA] of real;
      
      
      function fniBilatu(const arZerrenda: tarZerrenda;
                                  iZenbat: integer;
                                   rGakoa: real): integer;
      var
         iKontagailu: integer;
         boAurkitua: boolean;
      begin
         iKontagailu := iBEHEMUGA;
         boAurkitua := FALSE;
         while (iKontagailu <= iZenbat) and not boAurkitua do
         begin
            if arZerrenda[iKontagailu] = rGakoa then
            begin
               writeln(rGakoa:0:1, ' balioa ', iKontagailu:2, ' posizoan dago!');
               boAurkitua := TRUE;
            end
            else
            begin 
               writeln(rGakoa:0:1, ' bilatzen, ', iKontagailu:2, '. elementuarekin ez du bat egiten, hurrengoa aztertu!');
               iKontagailu := iKontagailu + 1;
            end;
         end;
         
         if boAurkitua then
         begin
            fniBilatu := iKontagailu;
            writeln(rGakoa:0:1, ' balioa badago arrayan. Beste balio batekin saiatu!'); 
         end
         else
         begin
            fniBilatu := 0;
            writeln(rGakoa:0:1, ' balioa berria da eta ', iZenbat+1, '. posizioan kokatuko da');
         end;
         writeln;
      end;
      
      
      procedure ArrayaDatuDesberdinezBete(var arZerrenda: tarZerrenda;
                                             var iLuzera: integer);
      var
         iKont: integer;
         rZbk: real;
      begin
         randomize;
         iLuzera := random(iGOIMUGA) + 1;      { iBEHEMUGA eta iGOIMUGA arteko balioak }
         //writeln('iLuzera=', iLuzera);
         
         arZerrenda[iBEHEMUGA] := random(10) + 0.1*random(2);   { 0.0, 0.1, 1.0, 1.1, ... 8.0, 8.1, 9.0, 9.1 arteko balioak }
         writeln('1. datua = ', arZerrenda[iBEHEMUGA]:0:1);
         writeln;
         for iKont:=iBEHEMUGA+1 to iLuzera do
         begin     
            repeat 
               rZbk := random(10) + 0.1*random(2);             { 0.0, 0.1, 1.0, 1.1, ... 8.0, 8.1, 9.0, 9.1 arteko balioak }
            until fniBilatu(arZerrenda, iKont-1, rZbk) = 0;
            arZerrenda[iKont] := rZbk;
         end;
      end;
      
      
      procedure ArrayarenEdukiaIkusi(const arZerrenda: tarZerrenda;
                                              iLuzera: integer);
      var
         iKont: integer;
      begin   
         for iKont:=iBEHEMUGA to iLuzera do
         begin     
            writeln(iKont:10, '. elementua = ', arZerrenda[iKont]:0:1);
         end;
         writeln;
      end;
      
      
      function fniArrayarenMaximoaNon(const arZerrenda: tarZerrenda;
                                               iLuzera: integer): integer;
      var
         iKont, iMaxNon: integer;
         rMaximoa: real;
      begin 
         iMaxNon := iBEHEMUGA;
         rMaximoa := arZerrenda[iBEHEMUGA];
         for iKont:=iBEHEMUGA+1 to iLuzera do
         begin
            if arZerrenda[iKont] > rMaximoa then
            begin
               iMaxNon := iKont;
               rMaximoa := arZerrenda[iKont];
            end;
         end;
         fniArrayarenMaximoaNon := iMaxNon;
      end;
      
      
      function fniArrayarenMinimoaNon(const arZerrenda: tarZerrenda;
                                               iLuzera: integer): integer;
      var
         iKont, iMinNon: integer;
         rMinimoa: real;
      begin 
         iMinNon := iBEHEMUGA;
         rMinimoa := arZerrenda[iBEHEMUGA];
            
         for iKont:=iBEHEMUGA+1 to iLuzera do
         begin
            if arZerrenda[iKont] < rMinimoa then
            begin
               iMinNon := iKont;
               rMinimoa := arZerrenda[iKont];
            end;
         end;
         fniArrayarenMinimoaNon := iMinNon;
      end;
      
      
      procedure ElementuakTrukatu(var arZerrenda: tarZerrenda;
                                         iPosMax: integer;
                                         iPosMin: integer);
      var
         rLaguntzailea: real;
      begin
         rLaguntzailea := arZerrenda[iPosMax];
         arZerrenda[iPosMax] := arZerrenda[iPosMin];
         arZerrenda[iPosMin] := rLaguntzailea;
      end;
      
      
      { ------------------------- Programa Nagusia ------------------------- }
      var
        arZerrenda: tarZerrenda;
        iLuzera, iPosMax, iPosMin: integer;
        cErantzuna: char;
      begin
        repeat 
          clrscr;
          writeln('----------------------------------------');
          ArrayaDatuDesberdinezBete(arZerrenda, iLuzera);
          writeln('Hasierako datuak:');
          ArrayarenEdukiaIkusi(arZerrenda, iLuzera);
      
          iPosMax := fniArrayarenMaximoaNon(arZerrenda, iLuzera);
          iPosMin := fniArrayarenMinimoaNon(arZerrenda, iLuzera);
          
          writeln('Maximoa ', iPosMax, ' posizioan');
          writeln('Minimoa ', iPosMin, ' posizioan');
          writeln('Elkar trukatu ondoren: ');
          writeln;
          ElementuakTrukatu(arZerrenda, iPosMax, iPosMin);
          writeln('Datuen trukaketa egin ondoren:');
          ArrayarenEdukiaIkusi(arZerrenda, iLuzera);
          
          writeln;
          repeat
             write('Amaitu nahi duzu? (b/e): ');
             cErantzuna := readkey;
             writeln(cErantzuna);
             cErantzuna := upcase(cErantzuna);
          until (cErantzuna = 'B') or (cErantzuna = 'E');
           
        until cErantzuna = 'B';
      end. { programaren amaiera }
       

      10. astea | zenbakiak kendu

      Gehienez 15 elementu gordetzeko gai diren arrayekin lan egingo dugu. Arrayen elementuak zenbaki osoak izango dira.


      Programaren balizko exekuzio bat jarraian erakusten da:


       
      { Zenbaki osoak array batean gorde ondoren, bakoiti eta negatiboak  }
      { diren elementuak arraytik kendu (array laguntzaile bat erabiliz). }
      program ZenbakiakKendu;
      uses
         crt;
      
      const
         iBEHEMUGA = 1;
         iGOIMUGA = 20;
      
      type
         taiZerrenda = array[iBEHEMUGA..iGOIMUGA] of integer;
      
      
      procedure ArrayaAleatoriokiDatuzBete(var aiZerrenda: taiZerrenda;
                                             var  iZenbat:integer);
      var
        iKont: integer;
      begin
         repeat
            write('Zenbat datu dira? (gehienez ', iGOIMUGA, '): ');
            readln(iZenbat);
         until  (iZenbat >= iBEHEMUGA) and (iZenbat <= iGOIMUGA);
      
         for iKont:=iBEHEMUGA to iGOIMUGA do
         begin
            aiZerrenda[iKont]:= random(40)-20;     { -20 eta 19 artek balioak }
         end;
      end;
      
      
      procedure ArrayarenEdukiaIkusi(const aiZerrenda: taiZerrenda;
                                              iLuzera: integer);
      var
         iKont: integer;
      begin   
         for iKont:=iBEHEMUGA to iLuzera do
         begin     
            writeln(iKont:10, '. elementua = ', aiZerrenda[iKont]:3);
         end;
         writeln;
      end;
      
      
      procedure BakoitiNegatiboakKendu(var aiZerrenda: taiZerrenda;
                                          var iLuzera: integer);
      var
         iKont, iLuzeraBerria: integer;
         aiZerrendaBerria: taiZerrenda; 
      begin
         iLuzeraBerria := 0;
         for iKont:=iBEHEMUGA to iLuzera do
         begin     
            if (aiZerrenda[iKont] < 0) and (aiZerrenda[iKont] mod 2 <> 0) then
            begin
               writeln('Hau saihestu --->  aiZerrenda[', iKont:2,'] = ', aiZerrenda[iKont]:3);
            end    
            else   
            begin
               iLuzeraBerria := iLuzeraBerria + 1;
               aiZerrendaBerria[iLuzeraBerria] := aiZerrenda[iKont];
            end;   
         end;
         
         aiZerrenda := aiZerrendaBerria;
         iLuzera := iLuzeraBerria;
      end;
      
      
      { ------------------------- Programa Nagusia ------------------------- }
      var
         aiZerrenda: taiZerrenda;
         iLuzera: integer;
         cErantzuna: char;
      begin
         repeat 
            clrscr;
            writeln('--------------------------------------------');
            writeln('Datuak eskuratzen: '); 
            ArrayaAleatoriokiDatuzBete(aiZerrenda, iLuzera);
            
            writeln('Hasierako datuak: ');
            ArrayarenEdukiaIkusi(aiZerrenda, iLuzera);
      
            BakoitiNegatiboakKendu(aiZerrenda, iLuzera);
            
            writeln;
            writeln('Bakoiti negatiboak kendu ondoren: ');
            ArrayarenEdukiaIkusi(aiZerrenda, iLuzera);
      
            repeat
               write('Amaitu nahi duzu? (b/e): ');
               cErantzuna := readkey;
               cErantzuna := upcase(cErantzuna);
               writeln(cErantzuna);
            until (cErantzuna = 'B') or (cErantzuna = 'E');
          
            writeln;
            writeln;
            writeln;
            writeln;  
         until cErantzuna = 'B';
      end.    { programaren amaiera }