2018(e)ko otsailaren 1(a), osteguna

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, bien bitartean programa izendatzeko identifikadore bat aukeratuko dugu (adibidean hautatu den identifikadorea LaukizuzenarenAzalera da. Goiburukoaren zatia kontsidera dezakegu {$MODE TP} da, izatez konpilazio-agindua da eta horren bitartez eskatzen zaio konpiladoreari bere lana nola burutu behar duen.

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.

Aldagaien deklarazioa eta gero programa dator, azpiprogramekin kontrajarriz programari "programa nagusia" esango diogu. Programa nagusiaren aginduak lerroka idazten dira eta aginduaren bukaera adierazteko ';' karakterea idatzi behar da. Programa nagusiaren aginduek sekuentzia hau jarraitzen 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:



Aurreko programa errepikatu baina triangelu baten azalera kalkulatzeko. Ondoko hamar esleipenetatik zein (edo zeintzu) dira egokiak azaleraren kalkulua burutzeko? 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;

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 ) ;
1 2 3 4 5 6 7 8 9 10 11 12

Bigarren instrukzioak 13 token ditu, hauexek dira banan-banan zerrendaturik:
rAzalera := Sqr ( ( rDiametroa / 2 ) ) * PI ;
1 2 3 4 5 6 7 8 9 10 11 12 13

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: 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
* Biderkaketa
/ 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
^ Erakuslea
@ Eragigai baten helbidea
{ Iruzkinaren mugatzailea edo konpiladorearen direktiba
} Iruzkinaren mugatzailea edo konpiladorearen direktiba
$ Jarraian doazen karaktereak kode hamaiseitarran daude
# Jarraian doazen karaktereak ASCII kodean daude

Badira zenbait sinbolo bi karakterez adierazten direnak, ondokoak:
  <=  Txikiado 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
.) Array datu-motaren dimentsioaren mugatzailea, ] bezalakoa



3. Identifikadoreak

Lengoaiaren elementuak izendatzeko erabiltzen diren etiketak dira identifikadoreak. Identifikadoreak edozein luzerako karaktere-kateak dira, baina lehenengo hirurogeitahiruak 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.

Identifkadoreak bi eratokoak izan daitezke: Identifikadore estandarrak eta Erabiltzailearen identifikadoreak.


3.1 Identifkadore estandarrak

Pascal programazio-lengoaiak identifikadore batzuk ezagutzen ditu, aurredefiniturtik daudelako. Horiei identifikadore estandarrak esaten zaie eta edozein programatan erabil daitezke:
  Konstanteak  MAXINT, PI, MAXLONGINT, TRUE, ...
Datu-motak Integer, Real, Boolean, Byte, Char, ...
Prozedurak ReadLn, WriteLn, Assign, Delete, ...
Funtzioak Cos, Abs, Eof, Pi, Length, ...
Unitateak Crt, 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 ondokoak 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 (kontantearen definizioara joan bere balioa eta izaera ikusteko)
  • rGRABITAZIOUNIBERTSALA zenbaki erreala dirudien konstantea (kontantearen definizioara 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 ordenadorearen 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 ezkerraldean balio berria hartuko duen aldagaia, eskuinaldean espresioa (espresioaren datu-mota helburuko aldagaiarekiko koherentea izango da). Zati bien artean := sinboloa agertuko da.

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 := 0 ;                             { 1. esleipena }
          iKopurua := iKontagailua ;                      { 2. esleipena }
          iKontagailua := Kontagailua + 1 ;               { 3. esleipena }
          rSalneurria := rKostua + rKostua * BEZ /100 ;   { 4. esleipena }
          sIzena := 'Eguzkine' ;                          { 5. esleipena }
          rY := sin(rX) ;                                 { 6. esleipena }

1. eta 5. esleipenen adibideetan eskuineko adierazpenak konstanteak dira, konstante bat bere baliora ebaluatzen denez 0 konstantearen ebaluzio-emaitza 0 izango da eta horixe gordetzen da iKontagailua identifikadoreak markatzen duen memoriako gelasketan. Modu beretsuan, 'EguzkiƱe' konstantearen ebaluzio-emaitza 'EguzkiƱe' izango da eta horixe gordetzen da sIzena identifikadoreak markatzen duen memoriako gelasketan.

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

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

6. 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, zein zenbakizko balio bat den eta rY aldagaiak markatzen duen memoriko posizioetan gordetzen den.

Informazioaren kodifikazioa

Blog-artikulu honetan bildutakoa ez da hitzez hitz ikasi behar. Blog-artikulu honetan jasotakoa sakontzeko ikas-materiala delako zeharka aipatuko dugu une aproposa heltzean.












2017(e)ko ekainaren 28(a), asteazkena

REAL datu-mota


ZENBAKIAREN KONTZEPTUA

Zenbakia kontzeptua funtsezkoa da gizarteko komunikazio eta harremanetarako. Hizkera orokor arruntean, zenbakiek etengabeko presentzia dute, objektuak zenbatzeko eta neurtzeko ohitura baitugu, eta zenbatzean eta 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 baitu. Nahiz eta ekintza bietan zenbakiak erabili gauza bat da zenbatu eta beste gauza bat da neurtu.



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

ZENBAKETAREN OINARRIZKO TEOREMA

Zenbaketaren Oinarrizko Teorema gogoratuz, badakigu magnitude fisiko bat sistema bitarrean adieraz daitekeela. Zenbaki osoentzat Polinomioaren Adierazpidea erabiltzen bada, gauza bera egiten da ere zenbaki errealentzat.

Zenbaki errealak errepresentatzeko bi idazkera edo adierazpide erabiltzen dira:
  1. Koma Finkoko Adierazpidea: dezimalen kopurua aldez aurretik finkaturik dago
  2. Koma Higikorreko Adierazpidea: zati dezimala aldakorra da
Aipaturiko bi adierazpide horiek estuki loturik daude. Izan ere, Koma Higikorreko Adierazpidea eraikitzean  Koma Finkoko Adierazpidea oinarritzat hartzen da.


Koma Finkoko Adierazpidea


Ikusten denez, kopuru hamartar guztiak ezin dira kode bitarrean errepresentatu.


Koma Finkokoa: Adibide bat


Esan bezala, makina digitalek ezin dituzte errepresentatu kopuru erreal guztiak. Hurrenez hurren dauden bi errepresentazio bitarren artean "zuloa" geratzen da, sistema informatikoak zenbat eta bit gehiago eduki zulo horiek txikiagoak izango dira. Edozein kasutan ere, makina digital batek bereizmen jakin batekin jokatzen du. 


Koma Higikorreko Adierazpidea

Formatu exponentzial normalduan idazten dira zenbaki errealak. Zenbaki erreal bakoitzeko hiru kontzeptu gordetzen dira: zeinua, berretzailea eta mantisa.

ZENBAKI ERREALEN DATU-MOTAK

Lau dira aurredefiniturik dauden datu-mota errealak: Real, Single, Double eta Extended.


Zenbaki errealen heinak

Gorago aipatu den datu-mota bakoitzak, bit kopuru desberdinak hartzen dituzte memorian. Horren arabera, ondoko taulan datu-mota bakoitzearen behemuga eta goimuga erakusten dira:

Gure ariketa guztietan Real datu-mota erabiliko dugu, beste hirurak ez ditugu beharko.



Zenbaki errealen eragileak (aritmetikoak eta erlaziozkoak)

Datu-mota errealek ezagutzen dituzten operazioak aritmetikoak eta erlaziozkoak dira. Lehenengoek, adierazpen aritmetikoak, formula matematikoak idazteko balio dute, eta erlaziozko eragileak berriz, adierazpen logikoak sortzeko erabiltzen dira. Ondoko tauletan biltzen dira operadore horiek:

Eragile horiek dituzten lehentasun arauak zenbaki osoek dituztenak berberak dira.


Eragile aritmetiko eta eragigaien arteko bateragarritasuna

Dagoenekoz zenbaki osoak eta zenbaki frakzionatuak adierazteko datu-motak ikasi ditugu, eta datu-motarekin batera memoriko biltegitze sistema bat eta onargarriak diren eragiketak definiturik daude. Orain arteko espresio aritmetikoetan zenbaki osoak eta zenbaki errealak erabili ditugu baina talde bakoitza bere aldetik eta nahastu gabe.

Adierazpen aritmetiko batek, ikusi dugunez, balio bakar batera ebaluatzen da. Adierazpen aritmetikoaren eragigaietan datu-mota ezberdinak agertzen direnean, espresioak hartzen duen balio bakar hori adierazpen aritmetikoaren emaitza izango da, eta honen datu-mota ere bakarra izango da. Baina, zein emaitzaren datu-mota eragigaiak datu-mota desberdinekoak badira? Adibidez, iEgunak zenbaki osoa izanik, eta rAbiadura zenbaki erreala izanik, zer datu-motakoa izango da haien arteko biderkadura?
      Emaitza := iEgunak * rAbiadura    { Emaitza REAL ala INTEGER? }
         ?          21        1.5
         ?          20        1.5

Argi dago Emaitza aldagaiak 31.5 balioa jaso behar duela kasu batean, eta 30.0 balioa bestean. Horregatik Emaitza aldagaia Real datu-motakoa izan beharko da derrigorrez.

Eragigaien konpatibilitatea edo bateragarritasuna lege batez gidatzen da: bi eragigai arteko operazio batean, eragigai bat datu-mota batekoa izanik eta beste eragigaia beste datu-mota batekoa izanik, emaitzari dagokion datu-mota eragigaien bi datu-motetatik garaiena izango da. Esate baterako, Real datu-mota Integer datu-mota baino "handiagoa" da.

Lege horren ondorio bezala, ondokoa baiezta daiteke: bi eragigai arteko operazio bat egitean, eragigai biak datu-mota berekoak direnean, emaitzaren datu-mota eragigaiena izango da; baldin eta operazioak berak kontrakorik behartzen ez badu. Esate baterako, eragigai biak osoak izan arren / zatiketaren emaitzari dagokion datu-mota beti erreala izango da.

Eragile aritmetikoak eta euren eragigaien arteko konpatibilitatea taula honetan laburbiltzen dira:
ZENBAKI ERREALEN IRTEERAKO FORMATUA

Datu-mota errealeko aldagai baten edukia pantailan idatzi nahi denean Write eta WriteLn prozedura estandarrak erabiliko dira. Zenbaki erreala pantailaratzekoan ez bada kontrakorik agintzen zenbaki idazkera zientifikoan agertuko da.

Zenbaki errealen idazkera zientifikoa mantenduz, dezimal gutxiago erakutsi nahi baditugu, formatua zehaztu beharko da, horretarako :n gehitu beharko dugu (non, n kopuru osoa den). Zenbaki errealak idazkera zientifikoan erakustea ekidin nahi badugu, formatua zehaztu beharko da, horretarako :n:m gehitu beharko dugu (non, n eta m kopuru osoak diren).

Esate baterako, demagun rZbk aldagaian 123.456789 gorde dela eta bi instrukzio hauek idatzi direla:
  WriteLn('rZbk|', rZbk) ;    { positibo baten idazkera zientifikoa }
  WriteLn('rZbk|', -rZbk) ;   { negatibo baten idazkera zientifikoa }
Bi pantailaraketak honako hauek izango dira, hurrenez hurren:
  rZbk| 1.234567890000000E+002
  rZbk|-1.234567890000000E+002
       12312345678901234512345

Aurreko rZbk aldagaiaren edukia mantenduz, demagun intrukzioak hauek direla non :n formatua erabili den:
  WriteLn('rZbk|', rZbk:15) ;  { 15eko eremu batean idazkera zientifikoa }
  WriteLn('rZbk|', rZbk:10) ;  { 10eko eremu batean idazkera zientifikoa }
  WriteLn('rZbk|', rZbk:5) ;   {  5eko eremu batean idazkera zientifikoa }
  WriteLn('rZbk|', rZbk:1) ;   {  1eko eremu batean idazkera zientifikoa }
Bigarren adibiderako pantailaraketak honako hauek izango dira, hurrenez hurren:
  rZbk| 1.2345679E+002
  rZbk| 1.23E+002 
  rZbk| 1.2E+002
  rZbk| 1.2E+002
       123123456712345
       123456789012345

Aurreko rZbk aldagaiaren edukia mantenduz, demagun intrukzioak hauek direla non :n:m formatua erabili den:
  WriteLn('rZbk|', rZbk:17:4) ;  { 17ko eremu batean 4 dezimalekin idatzi }
  WriteLn('rZbk|', rZbk:11:4) ;  { 11ko eremu batean 4 dezimalekin idatzi }
  WriteLn('rZbk|', rZbk:0:4) ;   {  0ko eremu batean 4 dezimalekin idatzi }
Hirugarren adibiderako pantailaraketak honako hauek izango dira, hurrenez hurren:
  rZbk|         123.4568
  rZbk|   123.4568 
  rZbk|123.4568
       12345678901234567

ZENBAKI ERREAL BATEN ATALAK ETA ZENBAKI ERREALETIK KOPURU OSORA

Zenbaki erreal batek bi atal izango ditu: alde osoa eta alde dezimala. Zenbaki erreal baten atal biak eskuratzeko Int eta Frac funtzio estandarrak aplikatuko dira (bi funtzio horien emaitza zenbaki erreala izango da). Int eta Frac funtzioen azalpena 20. astea | zenbaki erreal baten atalak artikuluan ikus daiteke.

Zenbaki erreal baten baliotik kopuru oso bat lor dezakegu, baina bihurketa egiterakoan erabaki behar da zenbaki errealaren alde dezimala moztuko dugun, ala emaitza osoa lortzeko zenbaki erreala biribilduz egingo den. Zenbaki errealetik kopuru osora igarotzeko Trunc eta Round funtzio estandarrak aplikatuko dira (bi funtzio horien emaitza zenbaki osoa izango da). Trunc eta Round funtzioen azalpena 20. astea | zenbaki errealetik kopuru osora artikuluan ikus daiteke.
PARAMETRO IZATEAN JOKAMOLDEA

Datu-mota erreala 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 errealen zenbait programa:
INTEGER REAL BOOLEAN CHAR STRING ARRAY RECORD FILE

INTEGER datu-mota


ZENBAKIAREN KONTZEPTUA

Zenbakia kontzeptua funtsezkoa da gizarteko komunikazio eta harremanetarako. Hizkera orokor arruntean, zenbakiek etengabeko presentzia dute, objektuak zenbatzeko eta neurtzeko ohitura baitugu, eta zenbatzean eta 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 baitu. Nahiz eta ekintza bietan zenbakiak erabili gauza bat da zenbatu eta beste gauza bat da neurtu.



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


ZENBAKETAREN OINARRIZKO TEOREMA

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

b oinarriko duen Zenbaketa 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 balio eskuratzeko polinomioa aplikatu:

Adibideak:


Zenbaketa Sistema desberdinak

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



Bit-en taldekatzeak

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

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

ZENBAKI OSOEN DATU-MOTAK

Bost dira aurredefiniturik dauden datu-mota osoak: Shortint, Integer, Longint, Byte eta Word.


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:

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.



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, ondoko hauek konbinatzen eragile aritmetikoei esker: konstanteak, aldagaiak eta funtzioen emaitzak.

Esate baterako, ondoko adibidean ematen den adierazpen aritmetikoan agertzen diren tokenak 12 dira (hiru aldagaien identifikadoreak, konstante bi, funtzio baten identifikadorea eta horiek konbinatzen dituzten hiru eragile aritmetiko eta parentesi sinboloak):
               PI*Sqr(rDiametroa/2) + rZabalera*rAltuera

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 biderkaketa familia osatzen dute, ukatzaile berezeiagoa da eta isolaturik bezala kontsideratuko dugu. Adierazpen aritmetikoak konplexuak eta luzeak izan daitekeela kontutan izan dezagun, horrelakoetan biderkaketa 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 identifikadorerari dagokion balioaren ukapena egiten da 1 lortuz. Gero biderkaketak egingo dira, ukapenaren bitarteko emaitza hori eta B identifikadorerari 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, biderkaketak 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.

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) ;    { 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) ;  { 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 esleipena 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 estandarrak 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