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

8. astea | esaldiaren hitzak




 



Programaren kodea:




 



{--------------------------------------------------------------
Esaldi bat hartu eta bere hitzak banatu egiten duen programa
--------------------------------------------------------------}

program EsaldiBatetikBereHitzakLortu;
uses
crt;
type
tKateLuze = string[100];


function fnsAurrekoakKendu(sEsaldia: tKateLuze): tKateLuze;
//var
// k: integer;
begin
writeln('/////fnsAurrekoakKendu funtzio barruan/////');

//k := 1;
while sEsaldia[1] = ' ' do
begin
delete(sEsaldia, 1, 1);
writeln('posizioa ', 1, ' denean/////', sEsaldia,'/////');
end;

fnsAurrekoakKendu := sEsaldia;
end;


function fnsAtzekoakKendu(sEsaldia: tKateLuze): tKateLuze;
var
iAzkenposizioa: integer;
begin
writeln('\\\\\fnsAtzekoakKendu funtzio barruan\\\\\');

iAzkenposizioa := length(sEsaldia);
while sEsaldia[iAzkenposizioa] = ' ' do
begin
delete(sEsaldia, iAzkenposizioa, 1);
writeln('posizioa ', iAzkenposizioa, ' denean\\\\\', sEsaldia,'\\\\\');
iAzkenposizioa := length(sEsaldia);
end;

fnsAtzekoakKendu := sEsaldia;
end;


function fnsErdikoakKendu(sEsaldia: tKateLuze): tKateLuze;
var
iNon: integer;
begin
writeln('|||||fnsErdikoakKendu funtzio barruan|||||');

repeat
iNon := pos(' ', sEsaldia); (* zuriune bikotea bilatu *)
write('iNon: ', iNon, ', ');

delete(sEsaldia, iNon, 1); (* bikotetik zuriune bat kendu *)
writeln('delete ondoren|||||', sEsaldia,'|||||');
until iNon = 0; (* azken bikotearen bigarren zuriunea geratzen da *)

fnsErdikoakKendu := sEsaldia;
end;


procedure HitzakErakutsi(sEsaldia: tKateLuze);
var
sHitza: tKateLuze ;
k, iNon: integer;
begin
writeln('#####HitzakErakutsi prozedura barruan#####');

sEsaldia := sEsaldia + ' ';
k := 1 ;
iNon := pos(' ', sEsaldia);
while iNon <> 0 do
begin
sHitza := copy(sEsaldia, 1, iNon-1);

delete(sEsaldia, 1, iNon);
// writeln(k, ' itzulian, delete ondoren#####', sEsaldia,'#####');

writeln(k, '. hitza#####', sHitza,'#####');
k := k + 1;
iNon := pos(' ', sEsaldia);
end;
end;


{---------------------Programa nagusia---------------------}
var
sEsaldia, sEsaldiBerri1, sEsaldiBerri2, sEsaldiBerri3: tKateLuze;
begin
clrscr;

write('Sarrerako esaldia eman: ');
readln(sEsaldia);
writeln('===>', sEsaldia, '<===');

writeln;
sEsaldiBerri1 := fnsAurrekoakKendu(sEsaldia);
writeln('===>', sEsaldiBerri1, '<===');

writeln;
sEsaldiBerri2 := fnsAtzekoakKendu (sEsaldiBerri1);
writeln('===>', sEsaldiBerri2, '<===');

writeln;
sEsaldiBerri3 := fnsErdikoakKendu (sEsaldiBerri2);
writeln('===>', sEsaldiBerri3, '<===');

(* esaldi barruan hitzak zuriune bakarrez banaturik daude *)
(* hitzak esalditik banatu, horretarako zuriuneak bilatu *)
writeln;
HitzakErakutsi(sEsaldiBerri3);

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



 

8. astea | akronimoak




 



Programaren kodea:




 



{ -----------------------------------------------------------------
Akronimoak1.pas:
Gaia: Karaktere-kateak
Deskribapena: Esaldiaren akronimoak lortu
------------------------------------------------------------------ }
program Akronimoak_hitzak_bakandu_gabe;

uses
crt;

type
tKateLuze = string[99];

{ FUNTZIOA: fnboTestuaEgokiaDa
SARRERA PARAMETROAK: kate bat
IRTEERA PARAMETROAK:
ATAZA: sartutako kate horrek gehiegizko zuriunerik ez daukala aztertu }
function fnboTestuaEgokiaDa(sKatea: tKateLuze): boolean ;
begin
fnboTestuaEgokiaDa := TRUE;
if sKatea[1]=' ' then
begin
fnboTestuaEgokiaDa := FALSE;
writeln('Testuaren lehen karakterea ezin daiteke izan zuriunea');
end;
if sKatea[length(sKatea)]=' ' then
begin
fnboTestuaEgokiaDa := FALSE;
writeln('Testuaren azken karakterea ezin daiteke izan zuriunea');
end;
if (sKatea[1]<>' ') and (sKatea[length(sKatea)]<>' ') then
begin
if pos(' ', sKatea) <> 0 then
begin
fnboTestuaEgokiaDa := FALSE;
writeln('Testuaren bi hitzen artean zuriune bakarra onartzen da');
end;
end;
end;


{ FUNTZIOA: fnsAkronimoakLortu
SARRERA PARAMETROAK: kate bat
IRTEERA PARAMETROAK:
ATAZA: Sartutako kate hori mozten joan eta iterazio bakoitzeko lehen letra hartu }
function fnsAkronimoakLortu(sEsaldia: tKateLuze): tKateLuze;
var
sEmaitza: tKateLuze;
iZuriuneaNon: integer;
begin
{ sarrera letra larritan jarriko dugu }
sEsaldia := upcase(sEsaldia);

{ emaitza izango den katea hasieratu, datuaren lehen karakterea eta puntua }
sEmaitza := sEsaldia[1] + '.';
writeln('sEmaitza dagoeneko >>>', sEmaitza, '<<<');
writeln;
repeat
iZuriuneaNon := pos(' ', sEsaldia);
writeln('iZuriuneaNon = ', iZuriuneaNon);
{ katea moztu hurrengo hitzaren hasiera lortzeko }
delete(sEsaldia, 1, iZuriuneaNon) ;
writeln('sEsaldia moztu ondoren >>>', sEsaldia, '<<<');

{emaitza izango den kateari akronimo berria eta puntua gehitu}
sEmaitza := sEmaitza + sEsaldia[1] + '.';
writeln('sEmaitza dagoeneko >>>', sEmaitza, '<<<');
writeln;
until iZuriuneaNon = 0 ;

{ repeat-until baldintza dela eta, azkeneko akronimoa bikoiztuta
geratzen delako azkeneko bi karakterak ezabatu beharko ditugu,
hau da, azken akronimoa eta bere puntua kendu beharko ditugu. }
writeln('Azken bi karaktereak soberan daude eta kenduko ditugu!');
delete(sEmaitza, length(sEmaitza)-2, 2);
writeln;

fnsAkronimoakLortu := sEmaitza;
end;


{ --------------------------PROGRAMA NAGUSIA----------------------------------- }
var
sKatea, sEmaitza: tKateLuze;
cAukera: char;
begin
writeln('Esaldi baten akronimoak lortzeko programa, esaldi horren hasieran eta bukaeran');
writeln('zuriunerik ez dago, esaldiaren hitzen arteko banatzailea zuriune bakarra da.');
writeln;

{ Prozesaketa errepikatzen da erabiltzailea kontrakoa erabaki arte }
repeat
repeat
writeln('Sar ezazu sarrerako testua (hitzen artean zuriune bakarra):');
readln(sKatea);
until fnboTestuaEgokiaDa(sKatea);

sEmaitza := fnsAkronimoakLortu(sKatea);

writeln(sKatea, '===>', sEmaitza);
writeln;

{ Hurrengo exekuzioa prestatzen dugu eta erantzuna E izanez gero amaitu egiten da }
write('Beste testu bat aztertu nahi duzu: (B ala E): ');
{ Erantzuna B ala E dela ziurtatzen dugu }
repeat
cAukera := upcase(readkey);
until (cAukera = 'B') or (cAukera = 'E');
clrscr;
until cAukera = 'E';
end. { PROGRAMAren amaiera }



 

8. ASTEA | etxerako lana

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


Aurreko astean eskatutako 7. astea | menu bat azpiprogramaz ariketa eredutzar harturik, antzekoa den beste hau egizu: Autoebaluazioa Azp-1: 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:


 






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 | Taylor (angelu txikiekin eta programa monolitikoan)

Ariketa hau egiteko, hasi hemendik (faktorialak) eta hemendik (berreturak).











Zero bertsioa











Angelu baten kosinua Taylor-ren arabera honela kalkula daiteke:




Non x radianetan emanikiko angelua den.





Programa bat idatzi kosinua kalkulatuko duena aurreko segidaren N batugai erabiliz. Batugaien N kopurua ez da ezaguna, batugaiak aintzat hartuko dira azken batugaiaren balio absolutua 0.00001 baino txikiagoa izan arte (doikuntza hori teklatuaren bitartez emango du programaren erabiltzaileak).




Kasu honetan, eta zero bertsioa delako, den-dena programa nagusian egingo duzue. Hurrengo bertsioetan azpiprogramak erabiliz programazioa hobetuko duzue. Hauxe izan daiteke programa horren irteera bat:









Algoritmoa:



  1. Erabiliko den rEpsilon prezisioa teklatuz irakurri

  2. Lehenego koadranteko rAng angelua graduetan, teklatuz irakurri

  3. Lehenego koadranteko rAng angelua radianetara igaro rX lortuz

  4. rX angeluari dagokion rKos kosinua lortu Taylor bitartez

  5. Taylor bitartez lortu den rKos emaitza eta cos(rX) balioa pantailan erakutsi eta bi balioak elkar alderatu



 

7. ASTEA | etxerako lana

 7. astea (2023/03/07) 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 proposamena:



 


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)






 


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