5
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.

Programozási nyelvek (ADA)

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programozási nyelvek (ADA)

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.

Page 2: Programozási nyelvek (ADA)

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

Page 3: Programozási nyelvek (ADA)

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.

Page 4: Programozási nyelvek (ADA)

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

Page 5: Programozási nyelvek (ADA)

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.