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:
- Hitz erreserbatuak. Adibidez: aurreko bi instrukzioetan hitz erreserbaturik ez dago
- Ikur bereziak edo sinboloak. Adibidez: :=, (, ), * eta ;
- Identifikadoreak. Adibidez: rLuzera, rAzalera, rDiametroa, Sqr eta PI
- 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:
- Blokeak definitzeko: BEGIN, END, FUNCTION, PROCEDURE, PROGRAM, ...
- Operazioak egiteko: DIV, MOD, AND, OR, NOT eta XOR
- Datu-egiturak definitzeko: INTEGER, REAL, FILE, ARRAY, STRING, RECORD, ...
- 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 hamaiseitarran 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 .. 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 Identifkadore 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-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:
- Hitz erreserbatuak ezin dira identifikadore bezala erabili
- Identifikadorearen luzera edozein izan daiteke
- Karaktere esanguratsuak lehenengo 63 karaktereak dira
- Maiuskulak = Minuskulak
- Lehenengo karakterea letra bat edo _ azpimarra karakterea izango da
- 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-rabbit ≠ rabbit-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, lerro batean bi barretatik eskuinera dagoena
iruzkinik ez:
Argitaratu iruzkina