View
9
Download
0
Category
Preview:
Citation preview
Programozási nyelvek (ADA) Kozsik Tamás előadása alapján
Készítette: Nagy Krisztián
1. előadás
Hasznos weboldal
http://kto.web.elte.hu
Program felépítése
Programegységek (program unit) eljárások (procedure)
meghívjuk
függvények (function)
Csomag (package, C++-ban pl. osztályok) egységbezárás
Sablon (generic, C++-ban: template) típussal való paraméterezés
Task (thread, process) párhuzamosan végrehajtható számítás
Védett egységek (protected unit) folyamatok közötti kommunikáció
A programegységek két féle konstrukciót alkothatnak:
1. Mellérendelt konstrukció P.E. + P.E.
2. Alá-fölé rendelt konstrukció (beágyazás)
P.E.
P.E.
Fordítási egység (compilation unit)
Legkisebb része a programegységnek, amit a fordítónak oda lehet adni.
A programszöveg azon része, amelyet a fordítóprogram egy egységnek kezel. (Az a rész, amit
a fordító egy végrehajtásával le lehet fordítani.) Az Adában fordítási egységet lehet készíteni
alprogramdefinícióból, csomag specifikációból, csomagtörzsből, sablon specifikációból,
sablon törzsből, valamint alegységből. Például: egy alprogram definíciója, előtte az
alprogram által használt könyvtári egységek listája (egy vagy több with utasításban
megadva), valamint egy vagy több use utasítás alkothat egy fordítási egységet. Vegyük észre,
hogy az Ada csomagok specifikációja és törzse külön fordítási egységként készíthető el. A C
és C++ nyelvben a fordítási egység egy darab c, illetve cpp forrásfájlból az előfordító
végrehajtásával keletkező forráskód.
A gyakorlatokon a GNAT GNU Compiler-t használjuk, a gnatmake (fileok) utasítással tudjuk
lefordítani a programunkat.
Az ADA-ban az alábbi forrásfájlok találhatóak: .ads .adb
A forrásfájlok fordítási egységeket tartalmaznak
A fordítási egységet pedig képzeljük el úgy, mint programegységek halmaza.
Példa: hello.adb
with Text_IO; procedure Hello is begin Text_IO.Put("Hello"); end Hello;
A with kulcsszó utáni csomag és a procedure Hello egy jó példa a mellérendelt konstrukcióra.
Főprogram: C++ programozási nyelvben megszoktuk, hogy a main függvényvény a
főprogram. ADA programozási nyelvben viszont a főprogram is egy alprogram. Egy olyan
programegység, mely egy paraméter nélküli eljárás. (procedure). (A forrásfájlt, amiben a
főprogram található, a főprogram nevével látjuk el)
Csomag: Olyan programegység, amely sok programegységet foglal magába. Ezen
programegységek logikai összefüggésben állnak.
Egy csomag tartalmazhat például alprogramokat, csomagokat, taskokat, változókat
Ada.Text_IO – Szöveges input/outputot fogja össze. A szabványos könyvtár része
Szerkezete: Csomag. Általánosságban eljárásokat és függvényeket tartalmaz.
Például a Put_Line()-t, mely a soremeléssel való kiíratásért felel.
Ez jó példa az alá-felé rendelt kostrukcióra:
Ada.Text_IO
Put_Line
A … . … hierarchikus felépítést tesz lehetővé
(Ada.Text_IO.Put_Line(”Valami”);)
(Az Ada és a Text_IO közötti . egy picit másabb kapcsolatot jelent. Az Ada egy package és az
Ada.Text_IO egy child package Logikai összetartozás, fizikai szeparáció)
(Elhangzott kérdés: Főprogram paraméter nélküli eljárás, akkor argumentumos beolvasás
hogy néz ki? Külön függvény van rá )
Programegység részei
1. Specifikáció (specification) – Hogyan kell használni a programegységet?
2. Törzs (body) – Belső utasítások leírása (rejtett más programegységek felé)
procedure Hello is begin Text_IO.Put("Hello"); end Hello;
Forrásfájlok esetén: .ads Specifikációt tartalmaz
.adb Törzset tartalmaz
Törzs
Deklarációs rész Definiálja a programegységben használt konstansokat, változókat, típusokat, hibaeseményeket (exception) és programegységeket.
Utasítássorozat Definiálja a programegység végrehajtásának hatását.
Kivételkezelő rész (opcionális), Nem utasítás szerint.
Példa: 1. előadás dia 29. oldal – negyzet.adb with Ada.Integer_Text_IO; procedure Négyzet is N: Integer; begin Ada.Integer_Text_IO.Get( N ); Ada.Integer_Text_IO.Put( N*N ); end Négyzet; Az is – begin közé kerül a deklaráció (itt van a deklarációs rész), míg a begin – end közé kerül az utasítássorozat. Ada.Integer_Text_IO – Szintén egy szabvány könyvtár. Számok szöveges alapú input/output műveleteit tartalmazza. Az ADA-ban az értékadás := (C++-ban = ), míg az összehasonlítás az = (C++-ban ==)
Beépített típusok Integer, Natural, Positive, Boolean, Character, Float, String Az ADA egy szigorúan, statikusan típusos nyelv. Minden adatot úgy használunk, ahogy kitaláltuk.
Kifejezés, utasítás kérdésköre Kifejezés: Olyan része a programszövegnek, amely értéket fog azonosítani. – Kiértékelés Utasítás: Végrehajtás Különbségek a C++ és az ADA között: C++-ban: x = 1 kifejezés értéke 1. „mellékhatása:” x 1 (x-be belekerül az 1) x = 1; utasítás, ami kiértékeli a kifejezést Tiszta nyelvekben mellékhatások nélküli kifejezésekkel dolgozunk. nem kifejezés ADA x:=1; utasítás x 1 kifejezés kifejezés
Utasítások: - Értékadás - Vezérlési szerkezetek:
o Strukturált programok vezérlési szerkezetei: Szekvencia Elágazás Ciklus
o Egyebek: GOTO break/continue exit
Kifejezések: Lexikális alapvető egységek:
- Változók (Például: X) - Literálok (Például: 1) - Operátorok - Függvényhívás - Zárójelek
Kifejezések jelentése érték meghatározásának módja kifejezés kifejezés A op B infix bináris operátor Operandus száma alapján:
- unáris: -, not (!) - bináris: + < = - ternális: ? :
Operátor elhelyezkedése alapján:
- infix: kifejezések között található operátor (Például: = ) - prefix: kifejezés előtt található operátor (Például: -, not) - postfix: kifejezés után található operátor (Például: ++) - mixfix: vegyes (Például C++-ban: ? : , ( ))
Példa (++) C++-ban: C – változó c++ ”mellékhatása:” c c+1 értéke (kifejezés): c ++c ”mellékhatása:” c c+1 értéke (kifejezés): c+1 A fentebbiek a kifejezések szintaxisáról szólnak.
Recommended