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

Zenbaki errealetik kopuru osora


Zenbaki errealetan bi atal desberdintzen dira: alde osoa eta alde dezimala. Eta zenbaki erreal bati dagokion zenbaki osoa lor dezakegu, esate baterako:
        readln(rDatua) ;
        iEmaitza1 := trunc(rDatua) ;
        iEmaitza2 := round(rDatua) ;
Zenbaki erreal bat teklatuaren bitartez irakurri eta bere dagozkion bi zenbaki oso erakutsi. Horretarako Trunc eta Round funtzio estandarrak aplikatuko dira, emaitzak zenbaki osoak izango dira. Sarrerako datua den zenbaki errealaren balioa moztuz ala biribilduz emaitza lortuko dugu:
{------------------------------------------------------------------------------
      Sarrera zenbaki erreala izanik irteera zenbaki osoa izango da
      
      round() funtzioa mugan, parametroa X.5 denean:
                 X bakoitia izatean    round(X.5)  --->  X+1
                 X bikoitia izatean    round(X.5)  --->  X
-------------------------------------------------------------------------------}
program TruncRound_funtzioak ;
var
   rZbk1, rZbk2 : real ;
begin
   writeln ;
   writeln ;
   write('Zenbaki erreala eta positiboa eman: ') ;
   readln(rZbk1) ;
   writeln ;

   writeln('Hona hemen emandako zenbakia: ', rZbk1:0:3) ;
   writeln('trunc(', rZbk1:0:3, ') = ', trunc(rZbk1)) ;
   writeln('round(', rZbk1:0:3, ') = ', round(rZbk1)) ;
   writeln ;
   writeln('Hemen emandakoaren negatiboa: ', -rZbk1:0:3) ;
   writeln('trunc(', -rZbk1:0:3, ') = ', trunc(-rZbk1)) ;
   writeln('round(', -rZbk1:0:3, ') = ', round(-rZbk1)) ;
   writeln ;
   writeln ;

   rZbk2 := rZbk1 + 0.4 ;
   writeln('Aurreko sarrerari 0.4 gehitu: ', rZbk2:0:3) ;
   writeln('trunc(', rZbk2:0:3, ') = ', trunc(rZbk2)) ;
   writeln('round(', rZbk2:0:3, ') = ', round(rZbk2)) ;
   writeln ;
   writeln('Hementxe berriaren negatiboa: ', -rZbk2:0:3) ;
   writeln('trunc(', -rZbk2:0:3, ') = ', trunc(-rZbk2)) ;
   writeln('round(', -rZbk2:0:3, ') = ', round(-rZbk2)) ;
   writeln ;
   writeln ;

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

Ikusi ere zenbaki erreal baten bi atalak nola eskuratzen diren (Zenbaki erreal baten atalak).

Round() funtzioaren muga X.5 kopurua da eta bere emaitza X araberakoa da, jakin dezagun Round() funtzioaren biribiltze emaitza zenbaki bikoitia dela ondoko irudian erakusten den bezala:


Noiz Trunc() funtzioa eta noiz Round() funtzioa? Adibide batekin erantzungo dugu, baina lehenik gogoratuz zenbaki erreal guztiak ezin direla errepresentatu memorian gordetzeko.

Zenbaki erreal baten atalak


Zenbaki errealetan bi atal desberdintzen dira: alde osoa eta alde dezimala.
        readln(rDatua);
        rAldeOsoa := int(rDatua);
        rAldeDezimala := frac(rDatua);
Zenbaki erreal bat teklatuaren bitartez irakurri eta bere atalak banatzeko funtzioak ikusten dira hemen. Sarrerako zenbaki errealaren atalak Int eta Frac funtzioek eskainiko dituzte eta zenbaki errealak izango dira ere, hots, bilatzen ditugun emaitzak zenbaki errealak izango dira:
{------------------------------------------------------------------------------
      Sarrera zenbaki erreala izanik irteera zenbaki erreala izango da
-------------------------------------------------------------------------------}
program IntFrac_funtzioak;
var
   rZbk1: real;
   rAldeOsoa: real;          { real datu-mota derrigorrez }
   rAldeDezimala: real;      { real datu-mota derrigorrez }
begin
   writeln;
   writeln;
   write('Zenbaki erreala eta positiboa eman: ');
   readln(rZbk1);
   writeln;

   rAldeOsoa := int(rZbk1);
   rAldeDezimala := frac(rZbk1);
   
   writeln('Hona hemen emandako zenbakia: ', rZbk1:0:3);
   writeln('  int(', rZbk1:0:3, ') = ', rAldeOsoa:0:3);
   writeln(' frac(', rZbk1:0:3, ') = ', rAldeDezimala:0:3);
   writeln;
   
   rAldeOsoa := int(-rZbk1);
   rAldeDezimala := frac(-rZbk1);
   
   writeln('Hemen emandakoaren negatiboa: ', -rZbk1:0:3);
   writeln('  int(', -rZbk1:0:3, ') = ', rAldeOsoa:0:3);
   writeln(' frac(', -rZbk1:0:3, ') = ', rAldeDezimala:0:3);
   writeln;
   writeln;

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

Ikusi ere zenbaki erreal bat nola bihurtzen den zenbaki oso (Zenbaki errealetik kopuru osora).

2. ASTEA | etxerako lana

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

Aste honetako laborategitik irtetean jarraian aipatzen diren ariketa guzti hauek programatuta eta ulertuta egon daitezela:
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.

Datorren asterako:


2. ASTEA | laborategi/mintegian egin dena

 2. astea (2024/01/31) laborategi/mintegian egindakoa

  • Zerrenda pasatu dugu, deitutakoen 18 ikasleetatik 7 etorri dira (zehaztapen gehiago eGela zerbitzuan)
  • 1. astea | erakarpen grabitatorioa izeneko programa egina duzue, eta gaurkoan kontzeptu hauek birpasatu ditugu:
    • Konstanteak eta aldagaiak
    • Zatiketa erreala (/)
    • Zenbaki errealen adierazpen zientifikoa
  • 2. astea | triangelu berezi baten azalera izeneko programa egin dugu. Bide batez ondokoak ikusi ditugu:
    • WriteLn prozedurari datuak (parametroak) nola pasatu
    • Testuen formatua WriteLn('Testua':n);
    • Zenbaki errealen formatua WriteLn(rAzalera:m:n);
    • ABS() funtzio estandarra erabil daiteke triangeluaren oinarria beti positiboa izan dadin
    • Zatiketa erreala (/)
  • 2. astea | kopuru handiegiak izeneko programa honi esker ondoko hauek ikasten dira:
    • WriteLn prozedurari datuak (parametroak) nola pasatu
    • Testuen formatua WriteLn('Testua':n);
    • Zenbaki osoen formatua WriteLn(iZbk:n);
    • SQR() funtzio estandarra: zenbaki bat onartzen duen funtzioa da, eta datua den zenbaki horri dagokion karratua itzultzen du
    • Datu-moten mugak (INTEGER eta LONGINT)
    • MAXINT konstantea eta MAXLONGINT konstantea
  • 2. astea | segundoen kopuruak ariketari esker ondoko hauek ikasten dira:
    • Zatiketa osoaren DIV eta MOD operadoreak
    • Integer datu-motak 2 byte edo 4 byte har ditzakeela memorian (ordenagailuaren arabera)
    • LongInt datu-motak 4 byte hartzen dituela memorian
    • MAXINT konstantea da Integer datu-motaren goimuga
    • MAXLONGINT konstantea da LongInt datu-motaren goimuga
  • 2. astea | kartesiar-polar izeneko programa egin dugu baina rAng emaitza radianetan emanik (aurrerago ikasiko dugu radianak gradu-minutu-segundo moduan nola pantailaratu). Programa honi esker ondoko hauek ikasten dira:
    • Sqrt() funtzio estandarra
    • ArcTan() funtzio estandarra
    • Radianetan emandako angelu bat gradu-minutu-segundo moduan pantailan erakusteko, teoriako klasean aipatuko diren Trunc() eta Frac() funtzio estandarrak erabili beharko dituzue


HAU EGIN GABE GERATU DA 
  • 2. astea | zenbakia pantailaren erdian izeneko programa ez dugu egin baina aurrekoen bezalakoa da. Programa honi esker ondoko hauek ikasten dira
    • WriteLn prozedurari datuak (parametroak) nola pasatu
    • Testuen formatua WriteLn('Testua':n);
    • Zenbaki osoen formatua WriteLn(iZbk:n);
    • Zatiketa osoa (DIV)
 

2. astea | radianak bihurtu gradu-minutu-segundo

ADI!
2. astea | radianak bihurtu gradu-minutu-segundo ariketa hau eta 2. astea | segundoen kopuruak desberdinak dira, batean abiapuntuko datua Real datu-motakoa delako eta bestean Integer/LongInt datu-motakoa delako.


Zergatik angeluak neurtzeko gradu-minutu-segundo unitateak erabiltzen dira? Orduak banatzerakoan minutuak eta segundoak darabilkigun formatuaren arrazoi historiko beragatik.




Sarrerako angelua positiboa izanik

rRadianak aldagaiak angelu baten radianak gordeko ditu, teklatuaren bitartez irakurriko den angelua hain zuzen ere. Radianetan datutzat aukeratu den angeluari dagozkion gradu, minutu eta segundo kalkulatuko dituen programa idatzi.

Sarrerako datua zenbaki erreala izango da, erreala eta positiboa. Graduak eta minutuak zenbaki osoak izango dira, eta segundoak zenbaki erreala izango da.

Sarrerako datua eta azken emaitza, bitarteko kalkuluak erakutsi gabe

Goiko irudiko programa hori gogoan duzula, hurrengo irudian erakusten da Radianak1.exe programa exekutagarriaren irteera bat. Bertan ikusten dira sarrerako datua, azken emaitzak eta bitarteko kalkuluak. Zure lana: irudiko irteera emanten duen Radianak1.pas iturburu-programa idaztea.
Sarrerako datua negatiboa denean emaitza ez da zuzena


Sarrerako angelua negatiboa izanik

Aurrekoaren ariketa berbera da baina orain rRadianak angeluaren aldagaia zenbaki erreala eta negatiboa izango da. Lehen bezala, graduak eta minutuak zenbaki osoak izango dira eta segundoak zenbaki erreala izango da.

Hartu hemendik Radianak2.exe programa exekutagarria eta ikusi nola dabilen sarrerako kopuru negatiboekin:
Sarrerako datua positiboa denean emaitza ez da zuzena

Zergatik angeluak neurtzeko gradu-minutu-segundo unitateak erabiltzen dira? Orduak neurtzeko arrazoi historiko beragatik.



Sarrerako angelua positiboa edo negatiboa izanik

Aurreko ariketa biak paretsuak dira eta zentzuduna izan daiteke programa bakar batean batzea. Horrek esan nahi du rRadianak sarrerako datua positiboa izatean agindu batzuk exekutatuko liratekeela, eta sarrerako angelua negatiboa izatean beste agindu batzuk exekutatuko liratekeela.

Oraindik ez dakigu nahikorik programa hori idazteko, baina hartu hemendik Radianak3.exe programa exekutagarria eta ikusi nola dabilen edozein sarrerako angeluarekin:
Sarrerako datua positiboa edo negatiboa onartzeaz gain segundoen
hamarrenak, ehunenak eta milarenak banaturik erakusten ditu

 

2. astea | zenbakia pantailaren erdian

Programa honek zenbaki oso bat idatziko du pantailaren erdian, ZENBAKIA hitzaren azpian. Pantailan idatzi beharreko zenbakia 2 edo 4 digitu izango ditu, baina edozein kasutan pantailaren erdia idaztea eskatzen da.

Programak bi datu eskatuko dizkio erabiltzailearei. Batetik, idatzi behar den zenbakia; eta bestetik, idatzi beharreko zenbaki horrek zenbat digitu dituen (2 edo 4). Adibidez, hauek izan daitezke lau zifrako zenbaki bat ematean aterako litzatekeen emaitza eta kokapenaren eskema:
          1         2         3         4         5         6         7         8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
ZENBAKIA
6295

Eta hauek izango lirateke programa beraren emaitza zenbakia bi zifratakoa izetean:
          1         2         3         4         5         6         7         8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
ZENBAKIA
81

Jakin ezazu ere, testu-pantaila batean gehienez 80 zutabe daudela, hots, pantailaren zabalera 80 karakterekoa dela.

2. astea | kartesiar-polar

ZER DAKIDAN:
Erakarpen grabitatorioa programa egin ondoren, badakit testu bat pantailan idazten. Badakit ere balioak aldagaietan gordetzen eta era desberdineko konstanteak definitzen.



ZER IKASIKO DUDAN:
sqrt() funtzio estandarra, sqr() funtzio estandarra eta arctan() funtzio estandarra ikasiko ditut.




ESKATZEN DEN PROGRAMA

Zenbaki errealekin lan eginez, puntu baten koordenatu kartesiarrak ezagutzen dira eta dagozkien koordenatu polarrak lortu behar dira.

Ariketa:
XY planoan dagoen rP puntu baten koordenatu kartesiarretan teklatutik irakurri. rP puntuari dagozkion koordenatu polarrak lortu.
rP puntuaren koordenatu polarraren angelua gradu-minutu-segundotan pantailaratu.


Eskatzen den irteera, adibidez:

   P puntuaren X koordenatua eman: 4.01
   P puntuaren Y koordenatua eman: 2.99

   OP Distantzia = 5.00202 unitate
   Alfa angelua =  0.64070 radian

   Koordenatuak: (4.01, 2.99) = [5.00202 | 0.64070]
_


2. astea | segundoen kopuruak

Datu-motaFormatua Balio kopurua 2N  Balioen heina edo barrutia
ShortInt
8 bit (+ eta -)
256
-128..127
Byte
8 bit (+)
256
0..255
SmallInt
16 bit (+ eta -)
65536
-32768..32767
Integer
Integer
16 bit (+ eta -)
 32 bit (+ eta -)
65536
4294967296
-32768..32767
-2147483648..2147483647
Word
16 bit (+)
65536
0..65535
LongInt
32 bit (+ eta -)
4294967296
 -2147483648..2147483647 

Goiko taula aintzakotzat harturik ondoko bi ariketak egin:


Ariketa_1:

INTEGER datu-motak 2 byte har ditzan, zure programan {$MODE TP} konpilazio-direktiba idatzi eta ondoko hau egin:
iSegundo kopuru handi bat teklatuz irakurri, non iSegundo aldagaia INTEGER datu-motakoa den. Irakurritako denbora pantailaratu orduak-minutuak-segundoak bezala (hiru balioetatik bat edo beste zero balitz, ez da pantailaratu beharko).
{-----------------------------------------------------------------
      Behartu INTEGER datu-motak 2 byte hartzera.
 ------------------------------------------------------------------}
program SegundoenKopurua_INTEGER;
{$MODE TP}

var
   iSegundo: integer;



Ariketa_2:

liSegundo kopuru erraldoi bat teklatuz irakurri, non liSegundo aldagaia LONGINT datu-motakoa den. Irakurritako denbora pantailaratu egunak-orduak-minutuak-segundoak bezala (hiru balioetatik bat edo beste zero balitz, ez da pantailaratu beharko).
{-----------------------------------------------------------------
      INTEGER datu-motak 2 byte edo 4 byte hartuko ditu.
      LONGINT datu-motak beti 4 byte hartuko ditu memorian.
 ------------------------------------------------------------------}
program SegundoenKopurua_LONGINT;

var
   liSegundo: longint;

2. astea | kopuru handiegiak

Ariketa honetan interesatzen zaigu Integer datu-motak 2 byte har ditzala memorian. Horretarako, konpilazio agindu hau erabiliko dugu: {$MODE TP}

Teklatutik zenbaki osoa sartu (iZbk aldagaian gorde) eta zenbakiari dagozkion hurrengo bost zenbakien karratuak eta kuboak kalkulatu eta pantailaratu (karratuak eta kuboak kalkulatzean iKarratu eta iKubo aldagaietan gorde).

Pantailaratzean honako taula honen moduan agertuko da:
ZENBAKIA          KARRATUA          KUBOA
----------------------------------------------------------

Oharra: Programaren exekuzioan zenbaki osoen gainezkatzeak dakartzan erroreak ikus daitezke. Adibidez 29 edo 179 zenbakietan, lehena kuboa kalkulatzean eta bigarrena karratuarekin.

29

179


2. astea | triangelu berezi baten azalera

Zenbaki errealekin lan eginez, triangelu baten azalera kalkulatu ondoren emaitza pantailaratu.

Ariketa:

A, B eta C puntuak teklatutik irakurri. A, B eta C puntuek osatzen duten triangeluaren azalera lortu.
A eta B puntuak OX ardatzean daude (fAy eta fBy koordenatuek zero balio dute).
A eta B puntuei dagozkien x koordenatuak positiboak dira eta desberdinak euren artean, hots, A eta B ez direlako puntu bera fAx eta fBx koordenatuak desberdinak izango dira elkarrekiko.

C puntua edozein tokitan egon daiteke OX ardatzean izan ezik. Triangeluaren azalera positiboa izango da fCy koordenatua positiboa izatean, eta azalera negatiboa izango da fCy koordenatua negatiboa izatean. Triangeluaren azalera kalkulatzeko garrantzirik du fCx koordenatuak?



2024(e)ko urtarrilaren 24(a), asteazkena

Lengoaia ikasteko lehen urratsak






LENGOAIAREN FUNTSEZKO ELEMENTUAK

Dakigunez programa bat instrukzioen (edo sententzien) multzo bat da. Instrukzio bat funtsezko elementuetan bana daiteke. Instrukzio bat elementu desberdinaz osaturik dago, esanahi berezia duten elementu horiei token esaten zaie literatura anglosaxoian, eta gainerako hizkuntzen hiztunok hitz hori inportatu egin dugu. Bi token arteko bereizketa egiteko, zenbaitetan, token biren artean banatzaileren bat jarri behar da, banatzailerik erabiliena zuriunea da (baina tabuladorea eta orga-itzulera onargarriak dira ere).
  • Programa bat  →  Instrukzio multzoa
  • Instrukzio bat  →  Funtsezko elementuen multzoa (token batzuen multzoa)
Beraz, programa bat instrukzioen multzoa bada, eta instrukzio bat zenbait token bilduma dela onarturik, oso sinplistak izanik, programa bat hainbat token multzoa bezala ikus daiteke.

Hona hemen, Pascal programazio-lengoaian emandako instrukzio pare bat. Zertarako balio duten jakin gabe, instrukzio biren itxura azter dezagun token desberdinak identifikatuz:
rLuzera := 2*PI*(rDiametroa/2) ;
rAzalera := Sqr((rDiametroa/2))*PI ;

Lehen instrukzioak 12 token ditu, hauexek dira banan-banan zerrendaturik:
rLuzera:=2*PI*(rDiametroa/2);
123456789101112

Bigarren instrukzioak 13 token ditu, hauexek dira banan-banan zerrendaturik:
rAzalera:=Sqr((rDiametroa/2))*PI;
12345678910111213

Token desberdinen sailkapena egitean, lau motatakoak ager daitezkeela jakin behar da:
  1. Hitz erreserbatuak. Adibidez: aurreko bi instrukzioetan hitz erreserbaturik ez dago
  2. Ikur bereziak edo sinboloak. Adibidez: :=, (, ), * eta ;
  3. Identifikadoreak. Adibidez: rLuzera, rAzalera, rDiametroa, Sqr eta PI
  4. Konstanteak. Adibidez: 2


1. Hitz erreserbatuak

Hitz erreserbatuak, Pascal programazio-lengoaiak aurredefiniturik dituen elementuak dira. Hitz erreserbatuek ingelesetik hartutako terminoak dira eta konpiladoreak esanahia zehatz eta berezia ezagutzen die. Hitz erreserbatuak programazio-lengoaiaren primitiboak liratekeenez programak idazteko ezinbestekoak dira.

Hitz erreserbatuak, banatzaile gabeko karaktere-kateak dira. Konpiladoreak ez du maiuskula eta minuskula artean bereizketa egiten baina ohitura da hitz erreserbatuak maiuskuletan idaztea. Hitz erreserbatuen aplikazioak lau dira:
  1. Blokeak definitzeko: BEGIN, END, FUNCTION, PROCEDURE, PROGRAM, ... 
  2. Operazioak egiteko: DIV, MOD, AND, OR, NOT eta XOR
  3. Datu-egiturak definitzeko: INTEGER, REAL, FILE, ARRAY, STRING, RECORD, ... 
  4. Kontrol-egiturak definitzeko: IF, CASE, FOR, WHILE, REPEAT, ... 


2. Ikur bereziak eta sinboloak

Ondoren agertzen diren karaktereak ikur bereziak dira Pascal programazio-lengoaiarako, eta hitz erreserbatuen antzera aurredefinituriko zereginak dituzte. Hona hemen karaktere bakarra daukaten sinboloak:
  +  Batuketa
-Kenketa edo minus zeinua
*Biderketa
/Zatiketa erreala
=Berdintasuna
<Txikiago baino
>Handiago baino
[Array datu-motaren dimentsioaren mugatzailea
]Array datu-motaren dimentsioaren mugatzailea
.Erregistroetan eremuen arteko banatzailea
,Identifikadoreen arteko banatzailea
(Prozedura eta funtzioetan parametro zerrendaren mugatzailea
)Prozedura eta funtzioetan parametro zerrendaren mugatzailea
:Identifikadore eta datu-moten arteko banatzailea
;Instrukzioa amaitzeko marka
'Karaktere-katearen mugatzailea
{Iruzkinaren mugatzailea edo konpiladorearen direktiba
}Iruzkinaren mugatzailea edo konpiladorearen direktiba
^Erakuslea     (EZ)
@Eragigai baten helbidea     (EZ)
$Jarraian doazen karaktereak kode hamaiseitarran daude     (EZ)
#Jarraian doazen karaktereak ASCII kodean daude     (EZ)

Badira zenbait sinbolo bi karakterez adierazten direnak, ondokoak:
<>Desberdin
  <=  Txikiago edo berdin
>=Handiago edo berdin
:=Esleipena
(*Iruzkinaren mugatzailea edo konpiladorearen direktiba, { bezalakoa
*)Iruzkinaren mugatzailea edo konpiladorearen direktiba, } bezalakoa
..Balioen heina
(.Array datu-motaren dimentsioaren mugatzailea, [ bezalakoa     (EZ)
.)Array datu-motaren dimentsioaren mugatzailea, ] bezalakoa     (EZ)



3. Identifikadoreak

Lengoaiaren elementuak izendatzeko erabiltzen diren etiketak dira identifikadoreak. Identifikadoreak edozein luzerako karaktere-kateak dira, baina lehenengo hirurogeita hiruak esanguratsuak dira. Derrigorrez letra batez edo _ karakterez hasiko dira. Identifikadoreetan maiuskulak eta minuskulak ez dira bereizten.

Identifikadoreek izendatzen dituzten elementuak hauek dira: aldagaiak, konstanteak, datu-motak, programak, prozedurak, funtzioak, unitateak eta erregistroen eremuak.

Identifikadoreak bi eratakoak izan daitezke: Identifikadore estandarrak eta Erabiltzailearen identifikadoreak.


3.1 Identifkadore estandarrak

Pascal programazio-lengoaiak identifikadore batzuk ezagutzen ditu, aurredefiniturik daudelako. Horiei identifikadore estandar esaten zaie eta edozein programatan erabil daitezke:
  Konstanteak  MAXINT, PI, MAXLONGINT, TRUE, ...
Datu-motakInteger, Real, Boolean, Byte, Char, ...
ProzedurakReadLn, WriteLn, Assign, Delete, ...
FuntzioakCos, Abs, Eof, Pi, Length, ...
UnitateakCrt, Graph, SysUtils, System, ...


3.2 Erabiltzailearen identifkadoreak

Identifikadore estandarrak ez bezala, erabiltzailearen identifikadoreak programadore batek programa jakin baterako asmatu eta definitu duen etiketa da. Identifikadoreak finkatzeko arauak berriro gogoratuz:
  1. Hitz erreserbatuak ezin dira identifikadore bezala erabili
  2. Identifikadorearen luzera edozein izan daiteke
  3. Karaktere esanguratsuak lehenengo 63 karaktereak dira
  4. Maiuskulak = Minuskulak
  5. Lehenengo karakterea letra bat edo _ azpimarra karakterea izango da
  6. Bigarren eta hurrengo karaktereak ondoko hauek izan daitezke:
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9

Ikus ditzagun programa batetik hartutako identifikadoreak, batzuk baliagarriak dira beste batzuk berriz programa konpilatzerakoan ez dira onartuko.
Onargarriak:
  • iAdina
  • byAdina
  • Deitura_1
  • BaturaLortu
  • Batura_Lortu
Onartezinak:
  • Begin                        (hitz erreserbatua delako)
  • 1_Deitura               (zenbakiz hasten delako)
  • Batura Lortu        (zuriunea banatzaileak 2 token eragiten dituelako)
  • Batura-Lortu        (- karakterea token bat delako)



4. Konstanteak

Programa batean aldatzen ez diren balioak konstanteak deitzen dira. Konstanteak programetan bi modutan ager daitezke, balioak zuzenki ager daitezke edo konstanteari lotu zaion identifikadore baten bitartez. Hurrengo adibideetan konstanteak ematen dira:
  • 109 zenbakizko konstante bat (zenbaki osoa)
  • -4.082 zenbakizko konstante bat (zenbaki erreala)
  • 7E-2 zenbakizko konstante bat (zenbaki erreala)
  • 'M' karaktere konstante bat
  • 'kaixo!' karaktere-kate konstante bat
  • iMINIMOA zenbaki osoa dirudien konstantea (konstante horren definiziora joan bere balioa eta izaera ikusteko)
  • rGRABITAZIOUNIBERTSALA zenbaki erreala dirudien konstantea (konstante horren definiziora joan bere balioa eta izaera ikusteko)

Programa baten konstante guztien definizioak CONST izeneko bloke bakar batean egin daitezke. Adibidez:
    CONST
          iMINIMOA = -16 ;
          rGRABITAZIOUNIBERTSALA = 6.674E-11 ;



5. Aldagaiak

Identifikadoreak aipatzean, aldagaien identifikadoreak erabili dira. Baina, zer da aldagai bat programazio-lengoaietan?

Programa baten exekuzioan datu batzuk ez dira aldatzen baina beste batzuek balio ezberdinak har ditzakete. Alda daitezkeen datuak aldagaien bitartez adierazten dira, eta funtsean aldagai batek memoriaren zati zehatz bat erabiltzea ahalbideratzen du.

Programa baten aldagaien deklarazioa (edo erazagupena) VAR izeneko blokeetan egiten dira. Adibidez:
    VAR
          iKontagailua : Integer ;
          cErantzuna : Char ;
          boAurkitua, boBukaturik : Boolean ;
          rEmaitza, rErroreMaximoa : Real ;

Aldagaia deklaratzeko, aldagaiaren identifikadorea eta aldagaiaren datu-mota zehaztu beharko dira. Identifikadorearen eta datu-motaren bitartez ordenagailuaren memoria zati bat erreserbatzen da, eta memoriaren zati horretan datu bat gorde ahalko da, eta datu horrekin berari dagozkion operazioak egin ahal izango dira.

Aldagai batean balio jakin bat gordetzeko instrukziorik errazena esleipena da. Adibidez, iKontagailia izeneko zenbakizko aldagaian 0 bat gordetzeko, honelaxe egingo litzateke:
    BEGIN
          iKontagailua := 0 ;



6. Esleipena

Esleipen sententzia oinarrizko agindua da, honen bitartez aldagai batek duen balioa espresio baten emaitzagatik ordezkatzen da. Esleipen batean beraz, alde bi izango dira: 1) ezkerraldean balio berria hartuko duen aldagaia, eta, 2) eskuinaldean espresioa (espresioaren datu-mota helburuko aldagaiarekiko koherentea izango da). Zati bien artean := sinboloa agertuko da.

Demagun agindu hau dugula rEmaitza:=rDatua; eta aldagaien tokiak trukatzen
ditugula
rDatua:=rEmaitza; agindua lortuz. Agindu biak sintaktikoki ondo daude, baina
argi dago agindu bakoitzaren ondorioa desberdina dela programan

Esleipen agindua exekutatzean eskuinetik ezkerrera egiten da, hasteko eskuinean dagoen espresioa ebaluatzen da, eta bere emaitza ezkerraldean dagoen aldagaiak erreferentziatzen duen memoriko txokoan gordetzen da (memoriko posizio horietan aurretik zegoena galduz). Horra hor zenbait esleipen:
    BEGIN
          iKontagailua := 6 ;                             { 1. esleipena }
          sIzena := 'Eguzkine' ;                          { 2. esleipena }
          cLetra := 'W' ;                                 { 3. esleipena }
          iKopurua := iKontagailua ;                      { 4. esleipena }
          iKontagailua := iKontagailua + 1 ;              { 5. esleipena }
          rSalneurria := rKostua + rKostua * BEZ /100 ;   { 6. esleipena }
          rX := iKopurua ;                                { 7. esleipena }
          rY := sin(rX) ;                                 { 8. esleipena }

1., 2. eta 3. esleipenen adibideetan eskuineko adierazpenak konstanteak dira. Konstante bat bere baliora ebaluatzen denez, 6 konstantearen ebaluzio-emaitza 6 izango da eta horixe gordetzen da iKontagailua identifikadoreak markatzen duen memoriako gelasketan. Modu beretsuan, 'Eguzkine' konstantearen ebaluzio-emaitza Eguzkine izango da eta horixe gordetzen da sIzena identifikadoreak markatzen duen memoriako gelasketan. Berdin berdin gertatzen da 'W' konstantearekin, bere ebaluzio-emaitza W izanik cLetra identifikadoreari dagokion memoriako gelaskan biltegitzen baita.

4. esleipenaren adibidean espresioa aldagai bat da, eta aldagai bat duen baliora ebaluatzen da, horregatik eta iKontagailua aldagaiak 6 balio duenez iKopurua aldagaiak ere 6 balioko du 4. esleipen hori exekutatzean.

5. eta 6. esleipenen adibideetan eskuineko espresioak adierazpen aritmetikoak dira, horiek ebaluatu ondoren euren emaitza ezkerreko aldagaiek erreferentziatzen dituzten gelasketan gordeko dira. Goazen esandako honetaz sakontzera, 5. adibidean agertzen den moldea askotan agertzen denez astiro azter dezagun: 1. esleipena kontutan izanik iKontagailua aldagaiak 6 balio du, eta iKontagailua+1 espresioaren emaitza 7 izango da, zazpiko hori gordetzeko iKontagailua aldagaiak adierazten duen posizioan egiten denez, azkenean honek izango duen balioa 7 izango da eta iKontagailua aldagaiaren inkrementua litzateke.

7. esleipenaren adibidean, eskuineko iKopurua aldagaiak kopuru oso bat gordetzen du (6 balioa) eta kopuru hori rX aldagaian biltegitzen da; rXi aldagaia zenbaki errealak gordetzeko gai denez, bere benetako edukia 6.0 izango da (erne! duck-rabbitrabbit-duck).

8. esleipenaren adibidean Pascal programazio-lengoaiak aurredefiniturik duen sin() funtzio estandarra agertzen da, rX aldagaia berak gordetzen duen baliora ebaluatu ondoren sin() funtzio trigonometrikoak rX balioari dagokion sinua itzultzen du, emaitza hori zenbakizko balio bat da eta rY aldagaiak markatzen duen memoriko posizioetan gorderik geratuko da.





7. Iruzkinak

Programa baten sententziak egiten dutena hobeto ulertzeko oharrak edo iruzkinak tartekatzen dira. Iruzkinak testuak izango dira eta konpiladoreak aintzat har ez ditzan testuaren hasieran giltza karakterea { jartzen da eta amaieran bere simetrikoa }.

Gorago dagoen 2. Ikur bereziak eta sinboloak izeneko atalean esandakoa gogoratuz, giltzen ordez (* eta *) karaktere bikoteak erabil daitezke.

Programa editatzen (idazten) ari garenean lerro oso bat iruzkin bezala markatzeko, nahikoa da / karakterea birritan idaztea lerroaren hasieran.

Adibideak:
    (* Iruzkin baten adibidea *)
    { Beste iruzkin baten adibidea }
    { Iruzkin habiatuak { bat bestearen barnean } ez dira onartzen }
    (* Iruzkin habiatuak (* bat bestearen barnean *) ez dira onartzen *)
    { Iruzkinak habiatzeko (* bat bestearen barnean *) sinboloak konbinatu }
    (* Iruzkinak habiatzeko { bat bestearen barnean } sinboloak konbinatu *)
    // Beste iruzkin bat, lerro batean bi barretatik eskuinera dagoena
 

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 blog honetako Konpiladorearen ingurunea artikulura eta hiru aukera izango dituzue programa hartzeko. Bestela joan eGela zerbitzuko BALIABIDEAK atalera eta bertatik eskuratu:
  • Aurreko adibideak begiratu gabe ondoko hau egin: Blogean argitaratutako 1. astea | 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