Adatbázis- és szoftverfejlesztés elmélet

Hasonló dokumentumok
Programozási nyelvek (ADA)

Programozás alapjai. 5. előadás

Az algoritmusok alapelemei

Java II. I A Java programozási nyelv alapelemei

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Algoritmizálás és adatmodellezés tanítása 1. előadás

A C# programozási nyelv alapjai

Kifejezések. Kozsik Tamás. December 11, 2016

Java II. I A Java programozási nyelv alapelemei

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Kifejezések. Kozsik Tamás. December 11, 2016

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Juhász István Programozás 1

Készítette: Nagy Tibor István

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

3 A C programozási nyelv szintaktikai egységei

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Adatbázis és szoftverfejlesztés elmélet

Középiskolai programozás oktatás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Nézzük tovább a lexikai egységeket!

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Struktúra nélküli adatszerkezetek

Programozási nyelvek Java

I. A FELADATMEGOLDÁS LÉPÉSEI ÉS MÓDSZEREI

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

Mindenki abból a három tantárgyból tesz szigorlatot, amelyet hallgatott.

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

Programozási nyelvek (ADA)

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Készítette: Nagy Tibor István

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

B I T M A N B I v: T M A N

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

MAGAS SZINTŐ PROGRAMOZÁSI NYELVEK 1

Bevezetés a C++ programozási nyelvbe

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Programozás alapjai. 10. előadás

Vezérlési szerkezetek

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Adatszerkezetek I. 1. előadás

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Kifejezések. A programozás alapjai előadás. Operátorok. Kifejezések. Operátorok precedenciája. Operátorok precedenciája

Fordítóprogramok. Aszalós László szeptember 7.

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Programozás alapjai. 2. előadás

A C programozási nyelv III. Pointerek és tömbök.

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Programozás alapjai (ANSI C)

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Algoritmusok. Dr. Iványi Péter

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

1. Jelölje meg az összes igaz állítást a következők közül!

A C programozási nyelv III. Pointerek és tömbök.

1. gyakorlat

Imperatív és procedurális programozás a Javában

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással

GYAKORLATIAS JAVA MINTA

Szoftvertervezés és -fejlesztés I.

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Adatszerkezetek és algoritmusok

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

OOP #14 (referencia-elv)

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

C++ programozási nyelv

Aritmetikai kifejezések lengyelformára hozása

Programozás 1. Dr. Iványi Péter

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

Python tanfolyam Python bevezető I. rész

Programozás alapjai. 7. előadás

Programozás I gyakorlat

Pénzügyi algoritmusok

Rekurzió. Dr. Iványi Péter

Adatszerkezetek 1. Dr. Iványi Péter

B I T M A N B I v: T M A N

Programozás II. 2. Dr. Iványi Péter

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Globális operátor overloading

Programozási technológia I 1. gyakorlat. A Java nyelvi alapjai, a NetBeans környezet

Algoritmizálás és adatmodellezés tanítása 4. előadás

Mintavételes szabályozás mikrovezérlő segítségével

Alprogramok, paraméterátadás

Oktatási segédlet 2014

Bevezetés a programozásba

Átírás:

Adatbázis- és szoftverfejlesztés elmélet Informatikai rendszergazda 10. évfolyam Készítette: Nagy Zsolt Készült: 2015

Tartalom Bevezető... 4 Futtatható program elkészítése.... 5 IDE... 5 Adattípusok jellemzői... 6 Csoportosításuk:... 7 Nevesített konstans... 7 Deklaráció... 7 Változó... 8 Elemi adattípusok... 9 Egész... 9 Valós... 10 Karakter... 10 Felsorolt, logikai, intervallum... 11 Összetett, strukturált adattípusok... 11 Karakterlánc, string, sztring... 11 Megvalósítások különböző programozási nyelvekben... 12 Karakterlánc műveletek... 13 Tömb... 14 Tömb indexelése... 14 Egydimenziós tömb... 14 Kétdimenziós tömb... 15 Többdimenziós tömb... 15 Rekord adattípus... 15 Pascal nyelvi megvalósítás... 16 C nyelvi megvalósítás... 16 Osztály fogalma... 17 Objektum, példány fogalma... 17 String osztály... 17 Utasítások... 18 Kifejezések jellemzői... 19 Operátorok... 21 Aritmetikai, logikai kifejezések... 21 Szekvencia... 21 Elágazások... 22

Egyágú szelekció... 22 Kétágú szelekció... 23 Többágú szelekció... 23 Független feltételek... 23 Ciklusok, iteráció... 23 Számláló ciklus... 23 Előfeltételes ciklus... 23 Végfeltételes ciklus... 23 Alprogramok... 24 Eljárás... 24 Függvény... 24

Bevezető Programok végrehajtása: A processzornak saját nyelve van, csak azt beszéli! Ez a gépi kód (gépi utasítás) Utasításkészlet. A magas szintű nyelven megírt programot forrásprogramnak, forrásszövegnek nevezzük. Minden magas szintű nyelv egyben formális nyelv, amely meghatározott nyelvtan szerint használható. A program forrásszövegére vonatkozó formai, nyelvtani szabályok összességét szintaktikai szabályoknak hívjuk. A tartalmi, értelmezési, jelentésbeli szabályok alkotják a szemantikai szabályokat. Egy magas szintű programozási nyelvet szintaktikai és szemantikai szabályainak együttese határoz meg.

Futtatható program elkészítése. Egy magas szintű programozási nyelven megírt forrásszövegből elő kell állítani a processzor számára érthető gépi kódú programot. Erre két technika létezik: fordítóprogramos interpreteres A fordítóprogramos megoldás folyamata Forrásszöveg Fordítás + Fordítóprogram Tárgykód Egyéb tárgykód Kapcsolatszerkesztő + Kapcsolat szerkesztés Betöltés a memóriába Futtatható program Folyamat, Process + + Betöltő Futtató rendszer IDE Az implementációk manapság egy integrált fejlesztői környezetben (Integrated Development Environment IDE) érhetők el. Részei: editor (szövegszerkesztő a forrásszöveg készítéséhez) compiler (fordító), interpreter (értelmező) linker (kapcsolatszerkesztő) debuger (nyomkövető, hibakereső) a szemantikai hibák feltárásában segít.

Adattípusok jellemzői Az adatok csoportosításának, kategorizálásának alapja az, hogy az azonos tulajdonságok kiemelésével kategóriákat, típusokat hozzunk létre. Egy kis ismétlés: Program = algoritmus + adatok Egy program végrehajtása során a következő történik: Bemeneti adatok Feldolgozás Kimeneti adatok Vagyis a programok adatokat dolgoznak fel. Ezek az adatok a felhasználásuk sokféleségéből adódóan nagyon változatosak lehetnek. Vannak olyanok, amelyekkel számolni akarunk, és olyanok is, amelyekkel nem. Pl.: szöveg, szám, de az előbbi kategóriák is bővíthetők (pár karakteres, vagy több Gbyteos szövegek). Éppen ezért nem mindegy, hogy milyen adat csoportokat akarunk kezelni. Az adattípus segítségével adatokat tudunk kategorizálni, csoportosítani. Az adattípus maga egy absztrakt programozási eszköz, amely mindig más, konkrét programozási eszköz egy komponenseként jelenik meg. Az adattípusnak van neve, ami egy azonosító. Egy adattípust három dolog határoz meg: tartomány: Azon értékek halmaza, amelyeket az adott típusú konkrét programozási eszköz felvehet értékként. (15, 16, 17, 18, stb.) műveletek: Azon operációk, amelyeket a tartomány értékein végre tudunk hajtani. (+, -, *, /, stb.) reprezentáció: Belső ábrázolási mód. Az egyes típusok tartományába tartozó értékek tárban való megjelenését határozza meg. Tehát azt, hogy az egyes elemek hány bájtra és milyen bitkombinációra képződnek le. (például hány byte-on tároljuk, csak pozitív számok, vagy lehetnek negatív értékei is)

Az adott programozási nyelvre jellemző: beépített, standard típusok programozó által definiált egyszerű, skalár összetett, strukturált Csoportosításuk: Egyszerű, skalár típusok: Olyan értékek, amelyek egy konkrét adatot jelentenek. Nem bonthatók fel kisebb egységekre. Pl.: Karakterek: a, b, +, 2, %, stb. Számok: 2, 3, 54, 6, -2, stb. Összetett, strukturált típusok: Itt több értéket kezelünk együtt. Az értékeket fel tudjuk bontani kisebb, önmagában is kezelhető (értelmezhető) részekre. Pl.: Dátum: év, hónap, nap Beépített típusok: amelyek egy programozási nyelv részei. A programozó felhasználhatja őket saját programozási eszközei létrehozásához. Programozó által létrehozott (definiált) típus: amelyet a programozó saját maga hozhat létre, megadva az értékek körét, az elvégezhető műveleteket és a megjelenését bitről-bitre. Nevesített konstans Olyan programozási eszköz, amelynek három komponense van: név, típus, érték. A nevesített konstanst deklarálni kell. A név egy azonosító, amely a programban mindig az értéket hivatkozza. A típus az értéknek megfelelően rendelődik hozzá. Deklaráció Minden névvel rendelkező saját programozási eszközt deklarálni kell. Ez deklarációs utasítással történik, amely információi a fordítóprogramnak szolnak. A fordítóprogram a deklaráció alapján rendeli hozzá a saját programozási eszközhöz a használat módjára vonatkozó információkat. Deklarációk fajtái: explicit: A programozó végzi explicit deklarációs utasítás segítségével. implicit: A programozó végzi. Betűkhöz rendel attribútumokat egy külön deklarációs utasításban. automatikus: A fordítóprogram rendel attribútumokat azokhoz a változókhoz, amelyekhez nincsenek explicit és implicit módon attribútumok rendelve.

Változó Olyan programozási eszköz, amelynek négy komponense van: név, attribútumok, cím, érték. A név egy azonosító. A program szövegében a változó mindig a nevével jelenik meg, az viszont a szövegkörnyezettől függően bármelyik komponenst jelentheti. Az attribútumok olyan jellemzők, amelyek a változó futás közbeni viselkedését határozzák meg. Az eljárás-orientált nyelvekben a legfőbb attribútum a típus, amely a változó által felvehető értékek körét határolja be. Változóhoz attribútumok deklaráció segítségével rendelhetők. A címkomponens a tárnak azt a részét határozza meg, ahol a változó értéke elhelyezkedik. A futási idő azon részét, amikor egy változó rendelkezik címkomponenssel, a változó élettartamának nevezzük. A programszöveg azon részét, amelyben egy név az általunk elérni kívánt programozási eszközt hivatkozza, a név hatáskörének, vagy láthatóságának nevezzük. A mechanizmust hatáskörkezelésnek. Tehát egy név hatásköre az a programszöveg egység, amelyben felhasználási módja, jellemzői, jelentése ugyanazok. Hatáskör: globális, osztályszintű lokális Láthatóság: publikus, védett, protected, private csomag szintű Java package (csomag) A változóhoz cím rendelhető az alábbi módokon: Statikus tárkiosztás: A címkomponens a futás előtt eldől. A betöltő helyezi el a változót egy általa meghatározott címre. A cím, futás alatt nem változik. Dinamikus tárkiosztás: A cím hozzárendelését a futtató rendszer végzi. A változó akkor kap címkomponenst, amikor aktiválódik az a programegység, amelynek ő lokális változója, és a címkomponens megszűnik, ha az adott programegység befejezi a működését. A címkomponens a futás során változhat, sőt vannak olyan időintervallumok, amikor a változónak nincs címkomponense.

Programozó által vezérelt tárkiosztás: A változóhoz a programozó rendel címkomponenst futási időben. o abszolút cím rendelése a változóhoz o relatív cím rendelése o speciális: A programozó csak azt adja meg, hogy mely időpillanattól kezdve legyen az adott változónak címkomponense, az elhelyezést a futtató rendszer végzi. A programozó nem ismeri az abszolút címet. A változó értékkomponense mindig a címen elhelyezett bitkombinációként jelenik meg. A bitkombináció felépítését a típus által meghatározott reprezentáció dönti el. A változó értékkomponenst kaphat: értékadó utasítással: Java-ban változónév = kifejezés; Az értékadó utasítás bal oldalán a változó neve általában a címkomponenst, kifejezésben az értékkomponenst jelenti. Típus egyenértékűséget valló nyelvekben a kifejezés típusának azonosnak kell lennie a változó típusával, típuskényszerítést valló nyelveknél pedig mindig a kifejezés típusa konvertálódik a változó típusára. input perifériáról kezdőérték adás: o explicit kezdőérték adás, a programozó végzi o automatikus kezdőérték adás Futás közben történik az értékadás. Ez után a változó korábbi értéke már nem hozzáférhető. Csak egy bitkombináció lehet egy időben egy helyen. Mindig adjunk kezdőértéket a változóknak. A lexikális elemzés ismeri fel a nevesített konstanst és a változót. Elemi adattípusok Olyan értékek, amelyek egy konkrét adatok jelentenek. Nem bonthatók fel kisebb egységekre. Egész 1, 2, 56, 5666, stb. Sorszámozott adattípusok. Lehetnek: Előjel nélküli: Negatív számokat nem tárolhatunk velük. o 1 byte-on tárolhatóak, amelyek értékkészlete: 0-255 o 2 byte-os: 0-2 16

o 4 byte-os: 0-2 32 o Stb. Előjeles: Lehetnek negatív számok is. Az első bit az előjelnek van fenntartva. o 1 byte-os: -128, -127,, 0,, 126, 127 (-2 7-2 7-1) o 2 byte-os: o Stb. Valós Törtszámok: Tizedes tört: pl. 234,5 Lebegőpontos alak: 2,345*10 2 exponens * alap mantissza Karakter A programozási nyelv által használt karakter kódtáblából egy karaktert jelölnek ki. (számok, abc karakterei, vezérlő karakterek, egyéb) Karakter kódtábla: Minden programozási nyelv mögött van egy olyan táblázat, amelyben felsorolják a használható karaktereket. Ebben a karakterekhez egy sorszám van rendelve. Pl. a Pascal az ASCII kódtáblát használja, a Java az UNICODE-ot.

ASCII kódtábla Felsorolt, logikai, intervallum Felsorolt: Értékek sorozata, amely mögött sorszámozás van. Pl.: HÉTFŐ, KEDD, stb. a hét napjai. Logikai: A logikai igen-nem, igaz-hamis eltárolására alkalmas. Intervallum: Valamely sorszámozott típus egy résztartománya. Pl.: 3, 4, 5, 6 az egész számok tartományából. Összetett, strukturált adattípusok Az értékeket fel tudjuk bontani kisebb, önmagában is kezelhető (értelmezhető) részekre. Karakterlánc, string, sztring Olyan adattípus, amely karakterek sorozatait tartalmazza. Ezzel az adattípussal rendelkező programozási eszközök (pl. változók) karakterek sorozatát szöveget tartalmazhatnak. (Pl.: alma, körte, narancs, stb.) A formális string tetszés szerinti (de véges) hosszúságú, a megvalósított nyelvekben ez a hossz gyakran mesterségesen maximalizált. Általánosságban, két fajtája létezik a string adattípusnak:

fix hosszúságú stringek, amikor függetlenül attól, hogy a string elemeinek száma elérie a maximumot, mindig ugyanakkora memóriaterületet foglalnak le a tárolásához, változó hosszúságú stringek, ahol a string hossza nem fix, és csak az aktuális hossza szerinti helyet foglal el memóriában. A legtöbb string megvalósítás nagyon hasonlít egy változó hosszúságú tömb megvalósításához, ahol az elemek tárolása karakter kódok segítségével történik. A fő különbség az, hogy a string esetében logikailag csak bizonyos kódolású karakterek tárolása megengedett. Tulajdonképen ez történik, ha UTF-8 kódolást használnak, ekkor egy karakter egy és négy byte közötti helyet foglal el. Ebben az esetben például a string hossza különbözik a tömb hosszától. Hossz: A sztring hossza megállapítható úgy, hogy a karakterek végén egy speciális jelet adunk meg. Például a NULL karaktert a C-szerű nyelvekben. Illetve direkt megadjuk a karakterek számát. Például Pascalban a karakterlánc elején egy Byte tárolja a karakter hosszát. Ezért nem lehet 255 karakternél nagyobb. Megvalósítások különböző programozási nyelvekben Pascal nyelv Deklaráció / értékadás: var nev: string[4]; begin nev := alma ; Képe a memóriában:

C nyelv: Deklaráció / értékadás: char *nev; *nev = ALMA; Képe a memóriában: Java nyelv: Deklaráció / értékadás: String str = Hello; Képe a memóriában: Karakterlánc műveletek Műveletek: hossz megállapítása: Vagy eltároljuk az aktuális hosszat, vagy számolunk a \0 karakterig. o Pascal nyelv: nev[0], illetve length(nev) hivatkozás megadja a karakterlánc aktuális hosszát. o C nyelv: strlen(nev) megszámolja a karaktereket a \0 jelig. o Java nyelv: str.length() metódus visszaadja a szöveg hosszát. összefűzés (konkatenáció): két vagy több karakterlánc egymás után fűzése. karakter, részlánc beszúrása, törlése, cseréje: A beszúrás karaktert vagy részláncot adott pozíciótól kezdve beilleszt úgy, hogy a hátralévő karaktereket feljebb tolja. A törlés adott karaktert vagy karakterláncot távolít el úgy, hogy a fentebb lévő

karaktereket, ha vannak, rámásolja. A csere eljárás adott indextől kezdve, adott indexig lecserél karaktereket egy megadott részláncra. karakter, részlánc keresése: Adott karaktert vagy részláncot keresünk a sztring elejétől, vagy megadott indextől kezdve. A visszaadott érték a megtalált szöveg első karakterének helye. Tömb Azonos típusú elemeket tartalmaz. (Ebben az értelemben majdnem olyan, mint a karakterlánc, de az elemek nem csak karakterek lehetnek.) Az egyes elemek lehetnek: számok, karakterek, karakterláncok, logikai értékek, teljes tömbök, rekordok és objektumok is. Az elemek sorszámozva vannak, és elérésük ezekkel a sorszámokkal történik. Ezeket a sorszámokat indexeknek nevezzük. Pl.: Fővárosok (Budapest, Prága, London, Pozsony, stb.). Tömb indexelése Az egydimenziós tömb minden egyes eleméhez egy egyértelmű indexérték tartozik, amely meghatározza az elem tömbön belüli helyét. Az index típusának sorszámozhatónak kell lennie. Az indextartomány két határérték közötti, és az indexek egyesével növekszenek. Indexelések például: A matematikában az index általában egész típusú, és az alsó határ 1. A Javában az index egész típusú, és az alsó határ minden esetben 0. Lásd: AngsterErzsébet_Java1.pdf jegyzete 384. oldaltól Egydimenziós tömb Lásd: AngsterErzsébet_Java1.pdf jegyzete 384. oldaltól

Kétdimenziós tömb Lásd: AngsterErzsébet_Java1.pdf jegyzete 384. oldaltól Többdimenziós tömb Lásd: AngsterErzsébet_Java1.pdf jegyzete 384. oldaltól Rekord adattípus Olyan adatszerkezet, amely több különböző típusú elemből állhat, és ezeket az adatokat valamilyen okból egy egységként akarjuk használni. Hasonló a tömbhöz, abban a tekintetben, hogy több részből áll. Viszont a rekord megengedi, hogy az egyes részek különböző típusúak

legyenek. A típust a programozó hozza létre, amelyhez nevet rendel, ezért deklarálni szükséges. Ilyen például egy emberhez tartozó néhány adat. Pl.: Személy(Név, Születési év, Nem, Súly, Fizetés) Pascal nyelvi megvalósítás RECORD mezőazonosító, [mezőazonosító ] : típus [; mezőazonosító[, mezőazonosító ]: típus ] END Rekord típus és változó definíciója és deklarációja Type TSzemely = Record nev: String[40]; szul_ev: Integer; nem: Boolean; suly: Real; fizetes: Integer; End; Var szemely: TSzemely; C nyelvi megvalósítás Szintakszis Példa: struct [structure tag] { member definition; member definition;... member definition; } [one or more structure variables]; struct szemely{ char * nev; int szulev; char nem; float suly; int fizetes; } //változó deklaráció struct szemely szemelyek[5];

Osztály fogalma Objektum, példány fogalma String osztály

Utasítások Az eljárás-orientált nyelveken megírt programok olyan egységei, amelyek egyrészt az algoritmusok egyes lépéseit adják, másrészt a fordítóprogram ezek segítségével generálja a tárgyprogramot. Az utasítások olyan programozási eszközök, amelyek az algoritmusok megvalósítására alkalmasak egy adott programozási nyelven. deklarációs végrehajtható utasítások A deklarációs utasítások mögött nem áll tárgykód. Ezen utasítások teljes mértékben a fordítóprogramnak szólnak, attól kérnek valamilyen szolgáltatást, üzemmódot állítanak be, illetve olyan információt szolgáltatnak, melyeket a fordítóprogram felhasznál a tárgykód generálására. Befolyásolják a tárgykódot, de maguk nem kerülnek lefordításra. A programozó a névvel rendelkező saját programozási eszközeit tudja deklarálni. A végrehajtható utasításokból generálja a fordítóprogram a tárgykódot. Általában a magas szintű nyelvek végrehajtható utasításaiból több - néha sok gépi kódú utasítás áll elő. Végrehajtható utasítások: értékadó utasítás a változó értékkomponensét állítja be üres utasítás ahol a szintaktika megköveteli vezérlés átadó: ugró GOTO címke eljáráshívás vezérlési szerkezetek: elágaztató: kétirányú többirányú esetszétválasztás ciklusszervező: feltételes: kezdőfeltételes végfeltételes előírt lépésszámú felsorolásos végtelen

összetett I/O utasítások egyéb utasítások Értékadó utasítás: Olyan utasítás, amellyel a váltózó értékkomponensét lehet beállítani. Pascalban: változónév := kifejezés; Java-ban: változó = kifejezés; Az értékadó utasítás bal oldalán a változó neve általában a címkomponenst, kifejezésben az értékkomponenst jelenti. Kifejezések jellemzői Szintaktikai eszközök, amelynek van értéke és típusa. Arra valók, hogy a program egy adott pontján ott már ismert értékekből az adott operátoroknak megfelelően új értéket határozzon meg. Mivel nincs neve, így nem kell deklarálni. Formálisan a következő összetevőkből áll: operandusok (értékek): literál, nevesített konstans, változó, függvényhívás operátorok: Műveleti jelek. Az értékkel végrehajtandó műveleteket határozzák meg. kerek zárójelek: A műveletek végrehajtási sorrendjét befolyásolják. A legegyszerűbb kifejezés egyetlen operandusból áll. Minden nyelv definiálja a saját operátor készletét. Operátor túlterhelés. Attól függően, hogy egy operátornak hány operandusa lehet, beszélhetünk: egyoperandusú (unáris) kétoperandusú (bináris) háromoperandusú (ternáris) Kétoperandusú operátorok esetén az operandusok és operátorok sorrendje lehet: prefix (* 3 5) infix (3 * 5) posztfix (3 5 *)

Azt a folyamatot, amikor a kifejezés értéke és típusa meghatározódik, a kifejezés kiértékelésének nevezzük. A kiértékelés során adott sorrendben elvégezzük a műveleteket, előáll az érték, és hozzárendelődik a típus. A kifejezés értékének meghatározása futási idejű tevékenység. A fordítóprogramok általában az infix kifejezésekből posztfix kifejezéseket állítanak elő, és ezek tényleges kiértékelése történik meg. Az infix alak nem egyértelmű. Az ilyen alakot használó nyelvekben az operátorok nem azonos erősségűek. Az ilyen nyelvek operátoraikat egy precedencia táblázatban adják meg. A precedencia táblázat sorokból áll, az egy sorban megadott operátorok azonos erősségűek (prioritás), az előrébb szereplők erősebbek. Minden sorban meg van adva a kötési irány, amely megmondja, hogy az adott sorban szereplő operátorokat milyen sorrendben kell kiértékelni, ha azok egymás mellett állnak egy kifejezésben. A kötési irány lehet balróljobbra, vagy jobbról-balra. Az infix kifejezések esetén kell használni a kerek zárójeleket, amelyek a precedencia táblázat alapján következő végrehajtási sorrendet tudják felülbírálni. A típus egyenértékűséget valló nyelvek azt mondják, hogy az operátor operandusainak azonos típusúaknak kell lenniük. Ilyenkor nincs konverzió. A típuskényszerítés elvét valló nyelvek esetén különböző típusú operandusai lehetnek az operátoroknak. A műveletek viszont csak az azonos belső ábrázolású operandusok között végezhetők el, tehát különböző típusú operandusok esetén konverzió van. Ilyen esetben a nyelv definiálja, hogy egy adott operátor esetén egyrészt milyen típuskombinációk megengedettek, másrészt mi lesz a művelet eredményének a típusa. A kifejezés kiértékelésénél minden művelet elvégzése után eldől az adott részkifejezés típusa és az utoljára végrehajtott műveletnél pedig a kifejezés típusa. Konstans kifejezés: Az a kifejezés, amelynek értéke fordítási időben eldől, kiértékelését a fordító végzi. Operandusai általában literálok és nevesített konstansok lehetnek.

Operátorok A Java nyelv operátor készlete: A magyarázat megtalálható Angster Erzsébet Java 1 könyvének 229. oldalán. Aritmetikai, logikai kifejezések Angster Erzsébet Java 1 könyv 230. oldalától. Szekvencia Olyan utasítások, amelyek sorban egymás után hajtódnak végre.

Elágazások Egy feltételtől függő program elágaztatás. A szelekciós utasítás végrehajtásakor kiértékelődnek a feltételek, és ezek után az az ág hajtódik végre, amelyikhez a hozzárendelt feltétel igaz lesz. Csak egy ilyen ág lehet. Egyágú szelekció

Kétágú szelekció Többágú szelekció Független feltételek Ciklusok, iteráció Az iteráció segítségével utasítások ismétlődő végrehajtását adhatjuk meg. Azt, hogy az ismétlések száma milyen számú legyen, egy feltétel határozza meg. Azokat az utasításokat, amelyeken az ismétlést elvégezzük, az iteráció magjának nevezzük. Számláló ciklus Jellemzője, hogy az iteráció magja annyiszor hajtódik végre, amennyit előre meghatározunk. Ehhez szükség van egy kezdeti és egy végértékre. Annyiszor hajtódik végre az iteráció magja, amennyi az ebben az intervallumban lévő érték. Ebből következik, hogy az értékhalmaz csak megszámlálható típus lehet. Előfeltételes ciklus Jellemzője, hogy az ismétlési feltétel kiértékelése a ciklus törzsének végrehajtása előtt történik meg. Előfordulhat olyan eset is, hogy az iteráció törzse egyszer sem hajtódnak végre. Végfeltételes ciklus Jellemzője, hogy az ismétlési feltétel kiértékelése a törzs végrehajtása után történik meg. Ebben az iteráció fajtában minden esetben legalább egyszer végrehajtódik az iteráció törzse.

Alprogramok Eljárás Az eljárások olyan alprogramok, amelyek a főprogram bármely pontján meghívhatók, ha megadjuk az eljárás nevét és a hozzá tartozó paramétereket. Az olyan programrészletet, amely jól meghatározott adatokon műveleteket hajt végre, és ez, mint egy tevékenység jelenik meg a programban, eljárásnak nevezzük. Eljárást utasításszerűen hívunk meg! System.out.println( Üdvözöllek dicső lovag ); Függvény A függvények olyan alprogramok, amelyek a főprogram bármely pontján meghívhatók úgy, hogy egy értékadó utasítás jobb oldalán történik a függvényhívás, míg a bal oldalon egy olyan változó szerepel, melybe a függvény értéke kerül. Ha egy modul a jól meghatározott adatokon végrehajtott műveletek után egy értéket állít elő, melyet azután a programunkban minden olyan kifejezésben felhasználhatunk, melynek

típusa megegyezik a hozzárendelt elem típusával, akkor az ilyen modult függvénynek nevezzük. Függvényt kifejezésszerűen hívunk meg! c = Math.sqrt(4);