2023(e)ko urtarrilaren 25(a), asteazkena

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



 

iruzkinik ez:

Argitaratu iruzkina