Attribútum hozzárendelésrol általánosan.
| Explicit: Külön deklarációs utasítás segítségével össze kell rendelni a változó nevét egy típussal. | |
| Implicit: A rendszer a változó nevének egy jellemzoje, pl.: kezdobetuje alapján rendel típust hozzá. Egyes nyelvekben ezek a betuk rögzítettek más nyelveknél a programozó is megadhat ilyeneket. | |
| Automatikus: Futás közben rendelodik attribútum a változóhoz és ezek után az már nem változtatható meg. |
![]()
Címkomponens hozzárendelésrol általánosan.
| Statikus tárkiosztás: A változó a futás elott kap címkomponenst és ez a futás ideje alatt, nem változhat. | |
| Dinamikus tárkiosztás: A változó akkor kap címkomponenst, amikor aktivizálódik az a programegység, amelynek o lokális változója és a címkomponens megszunik, ha az adott programegység befejezi muködését. Így a futási ido alatt ugyanaz a címkomponens különbözo változókat szolgálhat ki, elofordulhat, hogy egy változónak a program különbözo futási állapotában nincs is címkomponense ill. különbözo idopontokban, más-más címkomponenssel rendelkezik. | |
| Programozó által vezérelt: | |
| Abszolút címet rendel hozzá futás közben | |
| Valamely tárban elhelyezett objektumhoz képest mondja, meg hol legyen a változó. (Relatív) | |
| Csak az idopontot adja meg, mettol meddig legyen címkomponens, a lefoglalást és felszabadítást a rendszer végzi. |
![]()
Kifejezés kiértékelésérol általánosan
:Kifejezés értékének meghatározása
Operátorok operandusok sorrendje alapján lehet:
| prefix: (+ a b) | |
| infix: (a + b) Az imperatív nyelvek általánosan használt alakja | |
| profix: (a b +) |
Az infix alak felveti azt a problémát, hogy több oprandus esetén milyen sorrendbe hajtjuk végre oket. E szerint lehet:
| Balról jobbra kötés: | |
| Jobbról balra kötés: |
Ezen túl a végrehajtási sorrend meghatározásakor általában a muveletek precedenciája is érvényesül. A muveletek precedenciáját a nyelvek rögzítik.
Példa balról jobbra kötés precedencia érvényesítéssel kiértékelésre.
Kiértékelés balról indul, az elso két muveleti jel összehasonlításával. Ha a baloldali az erosebb precedenciájú vagy azonos erosséguek, akkor a baloldali muvelet kerül végrehajtásra. Ha viszont a jobboldali volt az erosebb, akkor továbblépés következik a második, harmadik muveleti jel vizsgálatára.
Egy muvelet végrehajtása után a további vizsgálatok vagy a kifejezés elejérol indulnak, vagy az adott helyrol folytatódik.Kifejezés típusának meghatározása:
lehet:
| Típus-egyenértékuség elve alapján. Egy operátor két oldalán csak azonos típusú operandusok szerepelhetnek. A muvelet meghatározza az eredmény típusát. | |
| Típus kényszerítés elve alapján: Adott, hogy az adott operátort milyen típusú operandusok között lehet végrehajtani, ha más operandusokat adunk meg ahhoz, akkor a nyelv automatikus típuskonverziót hajt végre. |
Több operandus esetén az érték meghatározásához hasonlóan itt is lépésenként alakulnak ki a részeredmény típusok.
A különbözo nyelveknél, még problémát jelenthet, hogy milyen típusokat tekintünk egyenértékunek.
| Deklaráció egyenértékuség: ha ugyanabban a deklarációban együtt deklaráltuk oket. pl.: var a,b : integer | |
| Név egyenértékuség: Kibovíti a deklaráció-egyenértékuség fogalmát és már azt is elfogadja, ha az objektumokat ugyanazzal a típusnévvel deklaráltuk. | |
| Struktúra egyenértékuség: Ha összetett típusú objektumok esetén elegendo, ha felépítésük azonos. pl.: a: array [1..10] of real; és a b: array [0..9] of real; |
További különbségek lehetnek még a logikai muveleteket tartalmazó kifejezéseknél.
| Rövidzár-kiértékelés esetén, ha az eredmény típusa a kiértékelés bizonyos pontján már egyértelmu, akkor nem vizsgál tovább. | |
| Nincs rövidzár-kiértékelés, ekkor minden esetben végig kiértékelodik a kifejezés |
pl.: if (a>5) and 20/a>2 then … else … Ha van rövidzárvizsgálat, akkor az a=0 értéknél a hamis ág lefut, de ha nincs rövidzárkiértékelés nullával való osztás miatt, hibaüzenettel leáll a programfutás.
![]()