LENGOAIAREN FUNTSEZKO ELEMENTUAK Dakigunez programa bat sententzien multzo bat da, eta sententziak funtsezko elementuetan bana daitezke. Programa bateko sententzietan berezko esanahia duten elementu horiei literatura anglosaxoian token esaten zaie eta gainerako hizkuntzen hiztunok hitz hori inportatu egin dugu. Token arteko bereizketa egiteko, zenbaitetan, token bi artean banatzaileren bat jarri behar da, banatzailerik erabiliena zuriunea da baina tabuladorea eta orga-itzulera onargarriak dira ere. Programa bat sententzien multzoa bada eta sententzia bat zenbait token bilduma dela onarturik, oso sinplistak izanik, programa bat hainbat token multzoa bezala ikus daiteke. Hona hemen Turbo Pascal lengoaian emandako sententzia bat. Zertarako balio duen jakin gabe, bere itxura azter dezagun token ezberdinak identifikatuz: Luzera := (Diametroa DIV 2) * PI ; Sententzian agertzen diren tokenak 10 dira, banan-banan zerrendaturik hauek dira:
Token sailkapena egitean, lau motatakoak ager daitezkeela jakin behar da:
Sententzian derrigorrezkoak diren banatzaileak bi dira: Diametroa eta DIV artean dagoen zuriunea batetik, eta bestetik DIV eta 2 artean dagoena. Hala ere, eta irakurgarritasuna zaintzearren beste zuriune batzuk tartekatu dira. |
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:
Hona hemen konstanteen erabilpena programa1 batean:
Programa honek, pantailaraketa bat eskatzen duen, agindu bakarra du. Programa exekutatzean ondokoa agertuko da pantailan:
Baina konstanteen balioak zuzenki erabili beharrean, askotan identifikadore batez izendatzen dira horretarako ondoko programa azal dezagun:
Aurreko programarekin alderatuz bigarren honek kontzeptu berri bi gehitzen dizkio lehenengoari. Batetik WriteLn bakar batek gauza bat baino gehiago pantailara dezakeela baldin eta parentesi barnean parametroak jarri eta komaz banatzen badira. Eta bestetik, nahiz eta WriteLn prozedurak dituen lau parametroak konstanteak izan modu ezberdinean erabili dira, ADINA eta ABIZEN_1 konstanteak explizitoki identifikadore banaz definitu dira (ondorioz, memorian 37 eta ‘Salazar‘ balioak gorde dira). Bigarren programaren pantailaraketa hau litzateke:
Konstanteak definitzeko blokea CONST hitz erreserbatuaren bitartez markatzen da eta programaren hasieran jartzen da. Bloke horren bidez KonstanteakPantailaratzen izeneko programan 37 eta ‘Salazar‘ balioak memorian gordetzen dira. Geroago, programan balioak erabili behar direnean bakoitzari dagokion identifikadoreaz erreferentzia egitea aski da. Kontutan izan, ohituraz konstanteen identifikadoreak maiuskuletan jartzen direla. |
ALDAGAIAK 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. Aldagaiak definitzeko ondoko lerroak idazten dira, VAR bloke batean aldagaien identifikadoreak eta aldagaien datu-motak agertuko dira:
Ikus daitekeenez aldagaien identifikadoreak aukeratzerakoan, programadoreak maiuskulak eta minuskulak erabil ditzake. Adibidean dauden Integer, Char, Boolean eta Real identifikadore estandarrak datu-motak dira. Hona hemen aldagai bat darabilen gure lehenengo programa:
VAR blokearen bitartez aldagaia definitu ondoren, programan hasierako balio bat ematen zaio eta balio hori alda daiteke programa exekutatzen den bitartean. Aldagai baten nozioa ez da ahaztu behar: aldagai oro datuak gordetzeko “kutxa” bat da, eta askotan kontzeptu bi nahastu egiten dira; batetik aldagaiaren identifikadorea eta bestetik aldagaiak memorian gordetzen duen datua; hau da, adibidearen lehenengo aldagaiari dagokion izena Kontagailua da eta hasieran gordetzen duen balioa 0 izan daiteke, baina programaren amaieran (aldagaieren identifikadorea berdina izanik) memoriko toki horretan kokaturik dagoen balioa 7 da. Balioak emateko := esleipen operazioa erabiltzen da.
Datuaren balioa memorian pilatzen dena da, hots, aldagaiaren edukia, eta esan den bezala programaren ibileran memoriko gelaska horietan gorde daitekeena balio ezberdinak izan daitezke. Aldagaiaren identifikadoreak berriz, memoriko helbidearen ideia ematen digu eta datua memorian gordetzeko (zein memoriatik eskuratzeko) lana betetzen du, dakigunez memoriko gelaska baten helbidea aldaezina da. Horrelakoxea da programaren exekuzioa:
WriteLn prozedurak bi parametro ditu konstante bat lehena eta aldagai bat bigarrena, konstanteak idatzirik dauden bezala agertzen dira baina aldagaia pantailaratzerakoan aldagaiaren balioa erakutsi behar du WriteLn prozedurak. Aldagaia bera da, lehenengo zein bigarren WriteLn prozeduratan daudenak (helbide bera memorian, baina ez edukiera berdina: hasieran 0 eta 7 amaieran). |
INTEGER DATU-MOTA: ZENBAKI OSOAK Bost dira aurredefiniturik dauden datu-mota osoak: Shortint, Integer, Longint, Byte eta Word. 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, Turbo Pascal lengoaiak aurredefiniturik ditu MAXINT eta MAXLONGINT konstanteak. 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 konstanteak, aldagaiak eta funtzioen emaitzak eragile aritmetikoen bitartez konbinatzen dira, esate baterako ondoko adibidean ematen den adierazpen aritmetikoan agertzen diren tokenak 12 dira (aldagai biren identifikadoreak, konstante bi, funtzio baten identifikadorea eta horiek konbinatzen dituzten hiru eragile aritmetiko eta parentesi sinboloak). (Diametroa DIV 2) * PI + abs(Tentsioa) 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. Gero biderkaketak egingo dira, ukapenaren bitarteko emaitza hori eta B identifikadorerari dagokion balioen arteko biderkadura lortzen da; ondoren C eta D arteko zatiketa osoa kalkulatzen da eta honi E-k balio duena biderkatzen zaio. 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:
Jarraian, OsoenAdierazpenAritmetikoak programaren bitartez Emaitza aldagaiaren balioa kalkulatzen da. Programa hori oinarritzat harturik eta ondoko aldaketak eginez, kasu bakoitzean aterako litzatekeen emaitzaren balioa lehenik igarri eta ostean kalkulatu:
Hauxe da OsoenAdierazpenAritmetikoak programaren kodifikazioa:
Diametroa eta konstanteen balioak aintzat harturik Emaitza aldagaian gordetzen dena adierazpen aritmetikoa ebaluatuz lortzen da. Honela: bi parentesi daude eta biak maila berekoak, beraz ezkerrean dagoena ebatziko da lehenago. -(16) * R - (T MOD R + 4 * S) - Diametroa DIV 3 DIV eragileak zenbaki osoen zatiketa ematen duenez 33 zati 2 hamasei eta erdi da, baina emaitza osoa izan behar duenez 16arekin geratzen gara. Gainerako hondarra lortzeko MOD eragilea aplikatuko litzateke. Eta bigarrena gero. Bigarren parentesia ebaluatzean, biderkaketa familiako eragiketak batuketa familiakoaren aurretik burutzen dira azkenean 23 emanez: -(16) * R - (3+20) - Diametroa DIV 3 MOD eragileak zenbaki osoen zatiketaren hondarra ematen duenez 27 zati 4 sei baino gehiago da. Geratzen den hondarra 27-(4*6) = 3 litzateke. Ondoren ukapena burutuko da: -16 * R - 23 - Diametroa DIV 3 Orain biderkaketa familiako eragiketak egingo dira. Ezkerragora dagoen biderkaketa lehenik eta zatiketa osoa geroago. -64 - 23 - Diametroa DIV 3 -64 - 23 - 11 Amaitzeko, batuketa familiako eragiketak (ezkerretik eskinera ere). -87 - 11 -98 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), Turbo Pascal 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: |
REAL DATU-MOTA: ZENBAKI FRAKZIONATUAK Zenbaki frakzionatuak lantzeko Turbo Pascal lengoaiak Real izeneko datu-mota eskaintzen du. Datu-mota honetako aldagaiek 6 byte hartzen dituzte memorian, eta horietan berretzailea eta mantisa (zeinua eta modulua) gordeko dira. Real batek duen heina 2.9x10-39-tik 1.7x1038-ra doana da, eta dituen digitu esaguratsuak 11 edo 12 dira.
Zenbaki errealak idazteko Turbo Pascal lengoaiak modu bi onartzen ditu. Lehenengoan alde osoa puntua eta alde zatigarria idazten da, adibidez hamahiru eta erdi jartzeko 13.5 jarriko litzateke. Bigarren idazkeran (modu zientifikoa delakoan) hamahiru eta erdi jartzeko 1.35E+01 idatziko litzateke, non E ostean dagoena hamarreko berretzailea den eta aurrean dagoena mantisa den. Ordenadorearen memorian K kopuru frakzionatu bat adierazteko kode bitarrean egingo da. Horretarako eta Real datu-mota adibidetzat harturik, Real bati dagozkion 6 bytak (48 bit) eremuka banatzen dira: 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. Operadore aritmetikoekin, konstanteekin, aldagaiekin eta parentesiekin adierazpen aritmetikoak sortuko dira, eta Turbo Pascal lengoaiak sintaxi zehatz bat exigitzen du. Ondoko zerrendan formula matematikoak eta dagozkien Turbo Pascal token egokiaz osaturiko adierazpenak agertzen dira (lehentasun arauek eskatu ez arren, zenbaitetan eta irakurgarritasuna errazteko asmoz, soberan egon daitezkeen parentesiak jartzen 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. 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 garaiena5 izango 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. Eragile aritmetikoen eta euren eragigaien konpatibilitatea taula bezala jarririk hau litzateke:
Eragile eta eragigaien bateragarritasuna lantzeko asmoz hona hemen ariketa bat:
Datu_motenBateragarritasuna programa honetan zenbaki osoak diren aldagai bi definitu dira, WriteLn egitean adierazpen aritmetiko bat (batuketa bat) burutu eta dagokion emaitza pantailaratuko da, eragigaiek dituzten balioetarako pantailaraketa 49 izango da (zein eragigaiak bezala Integer datu-mota den). Programa hori abiapuntuz harturik ondoko aldaketak egin eta emaitzak (edo errore mezuak) interpretatu:
|
PARAMETRO IZATEAN JOKAMOLDEA Bai Integer zein Real datu-mota sinplea izanik azpiprograma batean honela agertuko da jokamoldearen arabera:
|
ADIBIDEAK Hona hemen Integer zein Real datu-motako zenbait programa:
|