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

INTEGER datu-mota


ZENBAKIAREN KONTZEPTUA

Zenbakia kontzeptua funtsezkoa da gizarteko komunikazio eta harremanetarako. Hizkera orokor arruntean, zenbakiek etengabeko presentzia dute, objektuak zenbatzeko eta objektuak neurtzeko ohitura baitugu, eta bai zenbatzean zein neurtzean zenbakiak erabili behar baititugu.

Zenbatu eta neurtu aditzak nahasirik erabil daitezke hizkera orokorrean, baina teknikan eta zientzian bereizi behar ditugu bakoitzak ekintza desberdina adierazten duelako. Nahiz eta ekintza bietan zenbakiak erabili gauza bat da zenbatu eta beste gauza bat da neurtu.

ADITZA ERAGIKETA EMAITZA OBJEKTUAK
Zenbatu
Zenbaketa
Kopurua
Zenbakagarriak (diskretuak)
Neurtu
Neurketa
Neurria
Zenbakaitzak (jarraituak)



Zenbatu

Zehatz hitz eginda, zenbatu aditzak mota bereko zenbat objektu dauden kontatzea adierazten du. Beraz, zenbatu aditzaren esanahia kontaketarekin loturik dago eta dagokion eragiketa zenbaketa deitzen da. Zenbaketa eragiketaren emaitza kopurua da, hots, zenbat objektu dauden esatea.

Zer esanik ez, zenbatu ahal izateko, objektuek edo magnitudeek diskretuak izan behar dute, zenbakagarriak alegia, eta zenbaketaren emaitza zenbaki osoa izango da.

Pascal programazio-lengoaian zenbaki osoak adierazteko ondoko datu-motak erabiliko ditugu:
  • LongInt
  • Integer
  • Byte


Neurtu

Bestalde, neurtu aditzak honako ekintza adierazten du: objektu edo magnitude fisiko jakin baten neurrian, unitatea zenbat aldiz sartzen den kalkulatzea. Beraz, neurtu aditzaren esanahia konparaketa batekin loturik dago eta dagokion eragiketa neurketa deitzen da. Neurketa eragiketaren emaitza neurria da, hots, magnitude fisikoa zein tamainatakoa den esatea.

Neurtu ahal izateko, magnitude fisikoek jarraituak izan behar dute, zenbakaitzak edo ez-zenbakagarriak alegia, eta neurketaren emaitza zenbaki ez-osoa izango da (edo bestela esanik zenbaki erreal).

Pascal programazio-lengoaian zenbaki ez-osoak adierazteko ondoko datu-mota erabiliko dugu:
  • Real


ZENBAKIEN OINARRIZKO TEOREMA

Gaur egun munduan erabiltzen diren zenbakitze-sistemak posizionalak dira, aspaldiko garaietan ez posizionala zen zenbakitze-sistemarik bazegoen baina guztiz ahazturik geratu ziren (irakurri Zisterraren zenbakitze-sistema Erdi Aroan artikulua).

Magnitude fisikoak matematikoki adierazteko Zenbakien Sistemak erabiltzen ditugu. Zenbakien Sistemak pluralean esan dugu, Zenbakien Sistema desberdinak daudelako b oinarriaren arabera. Zenbakien Sistema desberdinak izan arren, denek betetzen dute Zenbakien Oinarrizko Teorema, hots, Polinomioaren Adierazpidea:
b oinarriko sistema batean K kopuru bat polinomio baten bitartez adieraz daiteke, non polinomioaren potentzien oinarriak beti b den, eta polinomioaren koefizienteak Zenbakien Sistemaren ikurrak izango diren.

b oinarria duen Zenbakien Sistemaren ai ikurrek ondokoa betetzen dute:   0 ≤  ai < b
Beraz, K kopuruaren errepresentazioa b oinarrian hau litzateke:  K = an an-1 ... a2 a1 a0 , a-1 a-2 ... a-p

K kopuruaren errepresentazio aurrekoa izanik, bere balioa eskuratzeko polinomioa aplika dezagun:

Adibideak:


Zenbakien Sistema desberdinak

Magnitude fisikoak matematikoki adierazteko Zenbakien Sistemak erabiltzen ditugu. Zenbakien Sistemak pluralean diogu bat baino gehiago izan daitezkeelako. Hona hemen lau adibide:



Bit-en taldekatzeak

Magnitude fisikoak matematikoki adierazterakoan aukeratutako Zenbakien Sistemaren oinarria txikia bada, digitu kopuru handia behar izaten da. Sistema bitarrean adibidez, magnitudeak errepresentatzean digitu segida luzeak ateratzen dira.

Ordenagailua eta gainerako makina digitaletan bitak multzoka prozesatzen dira, ondoko taulak bit-en taldekatzeak erakusten ditu:

Ikus daitekeenez, 8 bit erabiltzean 28=256 konbinazio ateratzen dira, eta horrek mugatzen du onargarriak diren balioak (txikiena 0 eta handiena 255).


Hamartarretik bitarrera

Zenbaki osoen datu-motak aurkeztu aurretik, ikus dezagun nola igaro kopuru bat hamartarretik bitarrera. Esate baterako, nola adierazten da 33 kopura kode bitarrean?

Hamartar-bitar bihurketa dela eta, nahiz eta "sakontzeko" kontu bat izan, ikusi 1. astea | Hamartarretik bitarrera artikulua eta bertan eskaintzen diren programak exekutatuz emaitzak interpretatu. Bide batez, iturburu-programen kodeak aztertu jakinik programazioaren elementu batzuk ez ditugula oraindik ulertuko.

ZENBAKI OSOEN DATU-MOTAK

Zenbaki osoen datu-mota desberdinak aurredefiniturik daude, baina guk hiru hauekin lan egingo dugu: Byte, Integer eta Longint. Hiru datu-mota horiek berdintsuak dira, batek beti balio positiboekin lan egiten du eta beste biek balio negatiboak zein positiboak onartzen dituzte. Edozein datu-motaren ezaugarri garrantzitsua byte kopurua da, Integer datu motak 2 edo 4 byte hartuko ditu plataformaren arabera.


Zenbaki osoen heinak

Gorago aipatu den datu-mota bakoitza zenbaki osoen multzo bat dela onar daiteke, eta ondoko taulan datu-mota bakoitzeko multzoaren behemuga eta goimuga biltzen dira:

Esan bezala, gure ariketa gehienetan Integer, Longint eta Byte datu-motak erabiliko ditugu eta goimugak gogoratu behar izatea ekidin asmoz, Pascal programazio-lengoaiak aurredefiniturik ditu MAXINT eta MAXLONGINT konstanteak.

Datu-mota Formatua  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 

Datu-mota osoa dela eta, ikertu BYTE, SHORTINT, INTEGER, LONGINT eta WORD arteko desberditasunak programa hauen kodea aztertuz eta exekutatuz. Argi dago, irakasgaiaren hasiera honetan, kode horien zati batzuk ez direla ulertuko baina beste batzuk bai, (garrantzitsuena: programen exekuzioetatik ateratzen diren emaitzak analizatzea). Bost ariketen iturburu-programak hauek dira eta laborategian ikusiko ditugu:

Integer datu-motak hartzen dituen bit kopurua 16 dela esan dugu, hau da 2 byte. Baina egia da Integer datu-motaren  bit kopurua ordenadorearen hardwarearen araberakoa dela. Hori dela eta, ordenadore batzuetan Integer datu-motak 2 byte hartzen ditu, eta beste batzuetan 4 byte hartuko ditu.

Gure programaren hasieran {$MODE TP} konpilazio-agindua idazten badugu, ziurtatuko dugu Integer datu-motak 2 byte hartuko dituela. Aurreko hau frogatzeko, ondoko bi programak aztertu eta exekutatu:


Zenbaki osoen eragile aritmetikoak

Datu-mota osoek ezagutzen dituzten operazioak hamabi dira (sei operadore aritmetiko eta erlaziozko beste sei operadore).

Operadore aritmetikoak, aurreratu denez, sei dira eta adierazpen aritmetikoak sortzeko ezinbestekoak dira. Adierazpen aritmetiko batean, eragile aritmetikoei esker, ondoko hauek konbinatzen dira: konstanteak, aldagaiak eta funtzioen emaitzak.

Esate baterako, ondoko adibidean ematen den adierazpen aritmetikoan agertzen diren tokenak 9 dira (hiru aldagaien identifikadoreak, konstante bat, funtzio baten identifikadorea, eta, aurreko horiek konbinatzen dituzten hiru eragile aritmetiko eta parentesi sinboloak):
               Abs(iZabalera - iAltuera) + 2*iDiametroa
Hurrengo taulan zenbaki osoekin erabil daitezkeen sei eragile aritmetikoak biltzen dira:

Sei eragile horien artean hierarkia bat dago, lehenengo biak batuketaren familiakoak dira eta azken hirurak biderketa familia osatzen dute, ukatzaile bereziagoa da eta isolaturik bezala kontsideratuko dugu.

Azpimarratzekoa da zenbaki osoen zatiketa operazioari zatiketa osoa esaten zaiola eta bere emaitza zenbaki oso bat dela (dezimalik gabekoa, noski). Zenbaki osoen arteko zatidura zenbaki osoa delako, zentzua du zatiketa osoaren hondarra kalkulatzeak.

Irudiaren antzekoa den DIV_MOD.pas programa ikusi

Adierazpen aritmetikoak konplexuak eta luzeak izan daitekeela kontutan izan dezagun, horrelakoetan biderketa familiako eragileak lehentasuna daukate batuketa familiako eragileen aurrean eta ukatzailea guztien aurretik dago. Horregatik ondoko adierazpen aritmetikoan eragiketak zenbakien ordenez burutuko dira:

Dagoen ukatzailea aplikatuko da aurrena, beraz A identifikadoreari dagokion balioaren ukapena egiten da 1 lortuz. Gero biderketak egingo dira, ukapenaren bitarteko emaitza hori eta B identifikadoreari dagokion balioen arteko 2 biderkadura lortzen da. Ondoren, C eta D arteko zatiketa osoa kalkulatzen da 3 lortuz, 3 eta honi E-k balio duena biderkatzen zaio 4 kalkulatzeko. Amaitzeko batuketak osatuko dira, 2 gehi 4 alde batetik eta 5 ken F bestetik eginez.

Adibidean ikus daitekeenez familia bereko eragiketak ezkerretik eskuinerantz burutzen dira, eta azkenean adierazpen aritmetiko batek emaitza bakar bat eskainiko du (eragigai guztiak zenbaki osoak direnez eta eragileak zenbaki osoen operadoreak direnez, emaitza ere zenbaki osoa izango da).

Familien arteko lehentasuna aldatzeko parentesiak erabiltzen dira. Hona hemen eragileen lehentasun arauak:
  1. Lehenik parentesi arteko azpiadierazpenak ebaluatzen dira. Parentesiek beste parentesi kabiatuak barneratzen badituzte, sakonago dauden azpiadierazpenak lehenik ebaluatuz kanporantz abiatuko gara
  2. Eragilearen ordena, dakigunez, familiaren arabera ordenatzen da (ukapena aurrena, biderketak ondoren, eta, batuketak amaitzeko)
  3. Lehentasun bereko eragileak aurkitzean, ezkerrean daudenak ebaluatzen dira lehenago eta ondoren eskuinean daudenak ebaluatuko dira


Zenbaki osoen erlaziozko eragileak

Esan bezala, datu-mota osoek ezagutzen dituzten operazioak hamabi dira (sei operadore aritmetiko eta erlaziozko beste sei operadore).

Zenbaki osoekin adierazpen aritmetikoak sortzeaz gain, adierazpen boolearrak ere sor daitezke. Adierazpen boolear baten emaitzak bi balioen artean bat izango du (horregatik adierazpen boolearrei adierazpen logiko esaten zaie), Pascal programazio-lengoaian adierazpen boolear batek FALSE ala TRUE balioak har ditzake. Erlaziozko eragileak aritmetikoen ostean ebaluatzen dira.

Hurrengo taulan osoekin erabil daitezkeen erlaziozko sei eragileak biltzen dira:

Lehentasunari dagokiola, lehenik eragile aritmetikoak ebazten dira, eta ondoren erlaziozko eragileak ebatziko dira. Adibidez, hurrengo adierazpen boolearrean iAltuera+1 > 2*iErradioa lehenik diametroa kalkulatzen da, ondoren altuerari unitate bat gehitzen zaio eta azkenik konparaketa burutzen da.

ZENBAKI OSOEN IRTEERAKO FORMATUA

Datu-mota osoko aldagai baten edukia pantailan idatzi nahi denean Write eta WriteLn prozedura estandarrak erabiliko dira. Zenbaki osoa pantailaratzekoan ez bada ezer adierazten ezkerretara justifikatzen da. Zenbakia eskubira justifikatu nahi bada :n gehitu beharko diogu, non n kopuru oso bat den.

Esate baterako, demagun iAdina aldagaian 19 gorde dela eta bi instrukzio hauek idatzi direla:
  WriteLn('Urteak: ', iAdina) ;    { jarraian idatzi, ezkerrera justifikaturik }
  WriteLn('Urteak:', iAdina:4) ;   { 4ko eremu batean eskuinera justifikaturik }
Pantailaraketak honako hauek izango dira, hurrenez hurren:
  Urteak: 19
  Urteak:  19
         1234

Adibidez, demagun iKopurua aldagaian 21075 gorde dela eta bi instrukzio hauek idatzi direla:
  WriteLn('Zenbat: ', iKopurua) ;  { jarraian idatzi, ezkerrera justifikaturik }
  WriteLn('Zenbat:', iKopurua:4) ; { 4ko eremu batean eskuinera justifikaturik }
Bigarren adibiderako pantailaraketak honako hauek izango dira, hurrenez hurren:
  Zenbat: 21075
  Zenbat:21075
         1234

ZENBAKI OSOA TEKLATUAREN BITARTEZ IRAKURRI

Zenbaki bati balioa emateko esleipen instrukzioa ikasi dugu; hala ere, askotan interesatuko zaigu programaren exekuzioan aldagai bati balio ematea teklatua erabiliz. Horretarako, datu-mota osoko aldagai baten edukia memorian gordetzeko ReadLn prozedura estandarra erabiliko dugu.

Esate baterako, demagun iAdina aldagaian 18 gorde nahi dugula. Hori lortzeko modurik arruntena ondoko hau da. Non lehen instrukzioa informatiboa den, eta aldagaiaren edukia benetan berrizten duena bigarren instrukzioa den:
  Write('Zure adina eman: ') ;    { programak zer balio itxaroten duen jakiteko }
  ReadLn(iAdina) ;                { gorde iAdina aldagaian teklatutik jasotakoa }
  ...
  iAdina := iAdina + 1 ;          { iAdina aldagaiaren balioa inkrementatu }
  WriteLn('Urteak: ', iAdina) ;   { iAdina aldagaiaren edukia pantailaratu }
Programak aurrera darrai eta iAdina aldagaiaren edukia alda daiteke, adibidez 18tik 19ra pasatuz. Instrukzio horiek exekutatzerakoan honako hau ikusiko da pantailan:
  Zure adina eman: 18
  Urteak: 19
PARAMETRO IZATEAN JOKAMOLDEA

Datu-mota osoa sinplea izanik, azpiprograma batean honela agertuko da jokamoldearen arabera:
  • Irteerakoa denean VAR marka izango du aurrean
  • Sarrerakoa denean ez du inolako markarik izango
ADIBIDEAK

Hona hemen zenbaki osoen zenbait programa:  
INTEGER REAL BOOLEAN CHAR STRING ARRAY RECORD FILE
 

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

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 hamaseitarrean 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
//Errenkada bakar baterako iruzkina
..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 Identifikadore 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 identifikadoreak

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, errenkada batean bi barretatik eskuinera dagoena
 

Programa baten egitura








Hurrengo irudian Pascal lengoaian idatzitako programa bat erakusten da. Lehenik iruzkin bat agertzen da.

Gero programari dagokion goiburukoa dago, goiburukoa PROGRAM hitz erreserbatuarekin hasten da eta ';' baten bitartez bukatzen da, bi elementuen bitartean programa izendatzeko identifikadore bat aukeratuko dugu (adibidean hautatu den identifikadorea LaukizuzenarenAzalera da.

Ondoren, azpiprogramen blokea dago (adibide honetan bloke hau indargabeturik aurkitzen da). Azpiprogramak bukatzean programa nagusiaren deklarazioen atala dator VAR hitz erreserbatuaren bitartez adierazten dena, eta deklarazioen ostean programa nagusiaren aginduak datoz.


Irudien gainean klik egin handiago ikusteko


Aldagaien deklarazioa eta gero programa dator, eta programari "programa nagusia" esango diogu azpiprogramekin kontrajarriz. Programa nagusiaren aginduak lerroka idazten dira eta aginduaren bukaera adierazteko ';' karakterea idatzi behar da. Programa nagusiaren aginduek sekuentzia hau jarraitu ohi dute:
  1. Datuak jaso, adibidean iAltuera eta iOinarria aldagaien balioak
  2. Datuak prozesatu edo datuekin kalkulu bat egin, adibidean iAzalera aldagaiari balio bat esleitu
  3. Emaitzak erakutsi
 Aurreko adibidea exekutatzean ondokoa ikus dezakegu:





Goiko programa errepikatu baina zirkulu baten azalera kalkulatzeko. Ondoko zortzi esleipenetatik zein (edo zeintzuk) dira egokiak azaleraren kalkulua burutzeko? Zure erantzuna Autoebaluazioa: Esleipen agindua ikasten (I) zereginaren bitartez bidali:
  1)           rAzalera := Π*rErradioa*rErradioa;
  2)           rAzalera := Π*rErradioa^2;
  3)           rAzalera := 3.14*rErradioa*rErradioa;
  4)           rAzalera := 3.14*rErradioa^2;
  5)           rAzalera := PI*rErradioa*rErradioa;
  6)           rAzalera := PI*rErradioa^2;
  7)           rAzalera := 3,14*rErradioa*rErradioa;
  8)           rAzalera := 3,14*rErradioa^2;

Goiko programa errepikatu baina triangelu baten azalera kalkulatzeko. Ondoko hamaika esleipenetatik zein (edo zeintzuk) dira egokiak azaleraren kalkulua burutzeko? Zure erantzuna Autoebaluazioa: Esleipen agindua ikasten (II) zereginaren bitartez bidali. Ikusi aldagai batzuk INTEGER datu-motakoak direla eta beste batzuk REAL datu-motakoak direla:
  1)           iAzalera := iAltuera*iOinarria / 2;
  2)           iAzalera := iAltuera*iOinarria/2;
  3)           rAzalera := (iAltuera*iOinarria) / 2;
  4)           iAzalera := iAltuera * (iOinarria/2);
  5)           iAzalera := iAltuera*iOinarria DIV 2;
  6)           rAzalera := iAltuera*iOinarria/2;
  7)           rAzalera := (iAltuera*iOinarria) / 2;
  8)           rAzalera := (rAltuera*rOinarria) / 2;
  9)           rAzalera := rAltuera*rOinarria DIV 2;
10)           iAzalera := rAltuera*rOinarria/2;
 

2024(e)ko urtarrilaren 21(a), igandea

1. ASTEA | ikasgelan egindakoa

 1. astea (2024/01/22 eta 2024/01/26) ikasgelan egin dena

  • eGela plataforman sartu gara eta bere barneko informazioa nola antolatzen den ikusi dugu
  • eGela plataforman sarturik BALIABIDEAK izeneko fitxan Dev-Pascal konpiladorea dago eta bertatik jasota etxeko ordenagailuan instalatu beharko duzu
  • eGela plataforman sarturik BALIABIDEAK izeneko fitxan fpc konpiladorea eta Geany ingurunea instalatzeko argibideak daude (bai Windows sistemetarako zein Macintosh sistemetarako)
  • Mintegian garatuko den proiektua aipatu dut. Proiektuaren zergatia, besteak beste, hemen jaso da

Hemendik aurrera asko ikasi eta zeozer behar izanez gero hemen naukazue:
P3B59 bulegoaren kokapena, irudia handiago ikusteko bere gainean klikatu

  • Praktikako blogetan argitaratuta dagoen Konpiladorearen ingurunea izeneko artikulua berrikusi dugu, azpimarratuz ingurunea egokitu behar dugula options > environment options > misc. bidea jarraituz
  • Lengoaia ikasteko lehen urratsak artikulua jarraituz ondokoak ikusi ditugu:
    • Programazio-lengoaia batek oinarrizko zenbait elementu (token) ditu
    • 1. Hitz erreserbatuak. Adibidez: begin, end, program, div, integer, real
    • 2. Ikur bereziak eta sinboloak. Adibidez: + (batuketa), := (esleipena), > (alderaketa)...
    • 3. Identifikadoreak:
      • 3.1 Identifikadoreak estandarrak. Adibidez: writeln, readln, integer, real
      • 3.2 Erabiltzaileak aukeratutako identifikadoreak. Adibidez: iAltuera, rMasa_3
    • Programa baten egitura
    • Programa bat editatzea, konpilatzea eta exekutatzea [Azp1] [Azp2] [Azp3]
    • 4. Konstanteak
    • 5. Aldagaiak
    • 6. Esleipena
    • 7. Iruzkinak
    • Datu-mota kontzeptua
  • Arbela erabiliz, INTEGER datu-mota artikulutik abiatuta ondoko kontzeptuak ikasi ditugu:
    •  ZENBAKIAREN KONTZEPTUA
      • Zenbatu
      • Neurtu
    • ZENBAKIEN OINARRIZKO TEOREMA
      • Zenbakien Sistema desberdinak
      • Bit-en taldekatzeak 
    • ZENBAKI OSOEN DATU-MOTAK 
      • Zenbaki osoen heinak (Integer datu-mota berezitxoa da)  (asteleheneann) 
      • Zenbaki osoen eragile aritmetikoak  (astelehenean) 
      • Zenbaki osoen erlaziozko eragileak  (astelehenean) 
    • ZENBAKI OSOEN IRTEERAKO FORMATUA  (asteleheneann) 
    • ZENBAKI OSOA TEKLATUAREN BITARTEZ IRAKURRI  (astelehenean) 
    • PARAMETRO IZATEAN JOKAMOLDEA  (honek aurrerago garrantzia izango du) 
    • ADIBIDEAK  (aipatzea besterik ez dugu egingo) 
 
 

Ikasteko egunak...

  • John Zaharra (mp3)


  • Mo Ghile Mear (mp3)


Ikasteko egunak...
(Doinua: Irlanda herrikoa)

Ikasteko egunak
iritsi dira, lagunak!
Kanta (de)zagun lehena
alaitzeko gure bihotzak.
Programatzen ikastea
ez da ezinezkoa,
denbora ematea
hori da bide bakarra.
Ikasteko egunak
iritsi dira, lagunak!
Kanta (de)zagun lehena
alaitzeko gure bihotzak.
Alde teorikoa
eta alde praktikoa
gehi zuen etxe-lana,
hirurak beharrezkoak!
Ikasteko egunak
iritsi dira, lagunak!
Kanta (de)zagun lehena
alaitzeko gure bihotzak.