2024(e)ko urtarrilaren 26(a), ostirala

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.

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

Zenbakien 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 errealen adierazpidea hasi aurretik, ikus dezagun eskematikoki nola igaro kopuru bat hamartarretik bitarrera. Zenbaki errealaren alde osoa eta alde frakzionatua desberdindu behar dira, bati zatiketa osoak aplikatuz eta bestetik hondarraren dobleak lortuz. Esate baterako, ikusi 42.375 zenbakia nola adierazten den kode bitarrean:

Zenbaki errealak errepresentatzeko bi idazkera edo adierazpide erabiltzen dira:
  1. Koma Finkoko Adierazpidea: dezimalen kopurua aldez aurretik finkaturik dago.
  2. Koma Higikorreko Adierazpidea: zati dezimalaren bit kopurua 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. Goiko adibidean 0.16h kopuru hamartarra 0.0010b eta 0.0011b artekoa da, baina lau bitekin ezin da zehatz-mehatz adierazi. Goiko adibideko 0.16h kopuru hamartarrari gehien hurbiltzen zaien adierazpide bitarrak hauek dira:
  • 0.16h datuari hurbilketa bitar bat: 0.0010b ⇒ 0.125h
  • 0.16hri beste hurbilketa bitar bat: 0.0011b ⇒ 0.1875h


Koma Finkoa: Adibide bat


Arkitektura berezia eta mugatua duen ordenadore honek doitasun batekin lan egingo du, ondorioz irudi honetan erakusten diren zenbaki errealak errepresenta ditzake:

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

Aurredefiniturik dauden datu-mota errealak sei dira: Real, Single, Double, Extended, Comp eta Currency.


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 bostak 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, horretarako 23 karaktereko eremu bat erabiltzen da honela banaturik:
  •   3 posizio (zeinua, unitatea eta puntua)
  • 15 posizio (hamabost zifra)
  •   5 posizio (E, zeinua, hiru zifra)
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:
                11111111112222
12345678901234567890123
rZbk| 1.234567890000000E+002
rZbk|-1.234567890000000E+002
12312345678901234512345

Aurreko rZbk aldagaiaren edukia mantenduz, demagun instrukzioak 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 }
  WriteLn('rZbk|', rZbk:30) ;  { 30eko eremu batean idazkera zientifikoa } 
Bigarren adibiderako pantailaraketak honako hauek izango dira, hurrenez hurren:
                111111
123456789012345
123123456712345
rZbk| 1.2345679E+002 [15eko eremuan]
 123123456712345
 rZbk| 1.23E+002 [10eko eremuan]
rZbk| 1.2E+002 [ 5eko eremuan]
rZbk| 1.2E+002 [ 1eko eremuan]
rZbk| 1.234567890000000E+002 [30eko eremuan]
123456712312345678901234512345
123456789012345678901234567890
111111111122222222223

Aurreko rZbk aldagaiaren edukia mantenduz, demagun instrukzioak 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   [17ko eremuan 4 dezimal]
rZbk| 123.4568 [11ko eremuan 4 dezimal]
rZbk|123.4568 [ 0ko eremuan 4 dezimal]
12345678901234567
11111111

KOPURU OSOTIK ZENBAKI ERREALERA

Datu-mota osoa den aldagai baten edukia zenbaki erreala bihurtzeko ez da aparteko ezer egin behar. Adibidez, demagun iKopura aldagaiak 73 balioa gordetzen duela, balio hori zuzen-zuzean esleitu ahal diogu rEmaitza aldagai erreal bati:
  Write('iKopurua aldagaian kopuru osoa gorde: ') ;
ReadLn(iKopurua) ; { adibidez, 73 balio osoa teklatuaz irakurri }
rEmaitza := iKopurua ; { 73.0 balioa gordetzen da rEmaitza aldagaian }
Erreala den aldagaiari esleipena egitean, 73 kopuru osoaren 73.0 bihurketa automatikoki egiten da.
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 2. 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 2. 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

 

iruzkinik ez:

Argitaratu iruzkina

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.