PROGRAMOZÁSI NYELVEK - ADA. GYAKORLAT JEGYZET

Hasonló dokumentumok
Programozási nyelvek (ADA)

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

5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

4. előadás Az Ada típusai és típuskonstrukciós eszközei, II. Rekordok és átlátszatlan típusok. A csomagok. Adatabsztrakció, egységbe zárás.

FUNKCIONÁLIS PROGRAMOZÁS ELŐADÁS JEGYZET

FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET

A C# programozási nyelv alapjai

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

Alprogramok, paraméterátadás

Programozás C és C++ -ban

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

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

Informatika terméktervezőknek

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

Algoritmizálás + kódolás C++ nyelven és Pascalban

3. előadás Típusrendszerek. Az Ada típusai és típuskonstrukciós eszközei, I.

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

Apple Swift kurzus 3. gyakorlat

Occam 1. Készítette: Szabó Éva

BASH script programozás II. Vezérlési szerkezetek

8. előadás Dinamikus memóriakezelés. Mutatók. Láncolt adatszerkezetek.

Programozási nyelvek I. (Az Ada) Kozsik Tamás

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

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

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

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

1. Alapok. #!/bin/bash

Java II. I A Java programozási nyelv alapelemei

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

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Programozási nyelvek Java

Szoftvertervezés és -fejlesztés I.

Java II. I A Java programozási nyelv alapelemei

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

Programozási nyelvek (ADA)

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

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

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)

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

Java programozási nyelv

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Delphi programozás IV.

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

A C programozási nyelv II. Utasítások. A függvény.

Haladó DBMS ismeretek 1

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

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

S z á m í t ó g é p e s a l a p i s m e r e t e k

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Összefoglaló. <variable_name> [IN OUT IN OUT] <data_type> [:=<default_value>] ... <label_name>: <statements>... GOTO <label_name>;...

Gregorics Tibor Tanácsok modularizált programok készítéséhez 1

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

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

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

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

7. előadás Paraméterátadás. Paraméterek az Adában. Túlterhelés. Felüldefiniálás. Kifejezések.

és az instanceof operátor

Python tanfolyam Python bevezető I. rész

ködös határ (félreértés, hiba)

Webprogramozás szakkör

Komputeralgebra Rendszerek

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

INFORMATIKA javítókulcs 2016

Készítette: Nagy Tibor István

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

C programozás. 1 óra Bevezetés

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Szkriptnyelvek. 1. UNIX shell

2. előadás Programegység, fordítási egység, könyvtári egység, beágyazás, blokkszerkezet, alprogramok, csomagok

A JavaScript főbb tulajdonságai

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Web-technológia PHP-vel

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

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

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

Pénzügyi algoritmusok

JAVA PROGRAMOZÁS 2.ELŐADÁS

Programozás módszertan

OOP: Java 8.Gy: Abstract osztályok, interfészek

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

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

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

6. előadás Hatókör, láthatóság, élettartam. Változók leképzése a memóriára. Blokkszerkezetes nyelvek. Kivételkezelés.

Programozási nyelvek II.: JAVA, 4. gyakorlat

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Budapesti Műszaki és Gazdaságtudományi Egyetem VHDL. Horváth Péter, Nagy Gergely. Elektronikus Eszközök Tanszéke (BME) október 3.

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Operációs Rendszerek II. labor. 2. alkalom

Eljárások, függvények

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Átírás:

PROGRAMOZÁSI NYELVEK - ADA. GYAKORLAT JEGYZET Szerkesztette: Balogh Tamás 2013. október 31. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! - Ne add el! - Így add tovább! 3.0 Unported Licenc feltételeinek megfelelően szabadon felhasználható. 1

Előszó A jegyzet nem teljes és nem hibátlan. Az esetlegesen előforduló hibákért, és kimaradt részekért felelőséget nem vállalok. A jegyzet megtanulása nem biztos, hogy elég a sikeres vizsgához. Az előadás sorszáma a hetek sorszámával egyezik meg. A szünetek, ünnepnapok miatt elmaradt órákat is számítom. 1. Gyakorlat Alap adattípusok - Integer: Type Integer is 1..128 - Boolean: Type Boolean is {TRUE, FALSE) - Float - Character Megszorított típus Örökli a szülő típus típusműveleteit, struktúráját. Type <név> Is New <szülőtípus> [Range n..m]; Altípusok Positive: Subtype Positive is Integer Range 1..Integer Last; Típuskonverzió Az ADA azt figyeli, hogy ugyanolyan típusú-e. Ezért erősen típusos. Nincs implicit típuskonverzió. Integerből származik a Positive és a Natural is. Kasztolással megoldható. Attribútumok A diszkrét típusok attribútumai: - T First típusértékhalmaz alsó határa - T Last típusértékhalmaz felső hazára - T Range típusértékhalmaz egész intervalluma - T Min(a,b) a,b közül a kisebb - T Max(a,b) a,b közül a nagyobb - T succ(a) az a érték rákövetkezője - T Pred(a) az a érték megelőzője - T Image(a) az a-t stringgél konvertálja - T Value(s) az s stringből T típusú értéket konvertál - T (Width(a) a T Image által visszaadott string maximális hossza Fordítás gnatmake nev.adb - paranccsal fordítunk. Linker által generált file a nev.ali. A linkelés befejeztével kapjuk meg a futtatható állományt. 2

Változó deklarálás p : Positive = 12; Egyéb Commentezés a -- paranccsal történik. ADA-ban nem lehet logikai kifejezés helyére számot adni. Műveletek és precedenciájuk - **; abs; not - *; /; mod; rem - +; - (egyoperandusú) - +; - (kétoperendusú) - =; /=; <=; <; >; >=; in; not in - and; or; yor; and then; or else Vezérlési szerkezetek Logikai kifejezések összekötése Legyen a és b két logikai kifejezés. Ekkor a-t és b-t összeköthetjük: - and: Ha a és b igaz, akkor igaz, különben hamis. Mindkét operandus kiértékelődik. - or: Ha a és/vagy b igaz, akkor igaz, különben hamis. Mindkét operandus kiértékelődik. - and then Ha a hamis, akkor hamis, ha a igaz, akkor b-től függ. - or elseha a igaz, akkor igaz, ha a hamis, akkor b-től függ. Elágazás If felt é tel Then Elsif felt é tel2 Then Else End if; Switch Case felt é tel is When érték => When érték => When Other => End Case ; Fentről lefelé vizsgálja az egyezőséget. A teljes típusérték halmazt le kell fedni. Megendegett a jellel egybe vonni a lehetőségeket: When a b d => 3

For Ciklus For I in 1.. 10 Loop End Loop ; Megadhatjuk a teljes típusérték halmazt: Positive First.. Positive Last ami megegyezik a következővel: Positive Range Reverse kulcsszóval hátulról előre járhatjuk be. While Ciklus While felt é tel Loop End Loop ; Végtelen Ciklus Loop End Loop ; Hátultesztelős Ciklus Loop Exit When felt é tel ; End Loop ; 2. Gyakorlat Az ADA procedurális programozási nyelv. A függvény és az eljárás fogalma élesen elválik. Alprogramok Egy alprogram lehet eljárás(procedure), vagy függvény(function). Eljárás megváltoztatja az állapotteret, míg a függvény csak számolást végez. A 2012-es ADA-ban bevezették, hogy a függvények is módoshíthassák az állapotteret. function f( i : in out Integer ) Return Integer Begom i := i + 1; -- megv á ltozik az i értéke, de a return 10 - el tér vissza return 10; End f; i : Integer = 0; i := f(i); Eljárás procedure <név >() -- egy elj árás deklar ációja. is -- Begin -- 4

End <név> Függvény Function <név >() return T --T az a típus, amelynek tí pus érték halmaz á nak valamely elem é vel térünk vissza is -- Begin -- return ( T valamely eleme ). End <név> Egy függvény nem állhat önmagában a kódban. Értékadás jobb oldalán, vagy valamilyen kiértékelés részeként(akár egy if-ben). Nem változtatja meg az állapotteret. Formális paraméter a függvény definiciójában lévő paraméter, aktuális paraméter pedig az, amivel meghívjuk a függvényt. Paraméter átadás értékadásnak felel meg. 5

ADA-ban többféle paraméter átadás van: - in: csak olvasni lehet. - out: amíg nem írtuk, nem olvashatjuk - in out: Megköveteljük, hogy legyen valamilyen értéke, értékadás bármely oldalán helyezkedhet. Procedure P( i: in out Integer ) is.. Begin.. End P Függvénynek csak IN típusú paramétereik lehetnek. Ha nem mondjuk meg explicit, hogy egy paraméter milyen, akkor az mindig IN típusú. Paraméterlista elemeit ;-vel választjuk el egymástól. (Procedure P(i: in Integer; c: out Character )). Paraméter címzés, vagy mi:s Deklaráció "Név pramaéterlista(??) visszatérési érték típusa" a deklaráció általánosan minden nyelven. Pl.: int f(int i, bool e). Ez ADA-ban a következőképp néz ki: Function F(i: integer; b: boolean)return Integer. Szignatúra Név, paraméterek típusa, és azok sorrendje. Túlterhelés Adott név esetén a paraméterek típusának vagy sorrendjének megcserélésével túlterhelhető a függvény. Visszatérési értékre is túlterhelhető Operátor túlterhelés function " +" ( a: Kutya ; B: Days ) Return Boolean is := "+"(k,d); := k + d; Operátort meghívhatunk függvényként, vagy operátorként is. Funcion F(i: integer, b: boolean)return Integer --.. Funcion F(i: integer, p: positive)return Integer --.. F(12, 12) kikövetkezteti, hogy a 2. félét kell meghívni. De pl. ha egyiknél Integer, másiknál Positive, akkor ütközik. 6

3. Gyakorlat Tömbök Nevesített tömbtípusok méretét a típusdefiníciókor kell megadni (Ilyenkor beszélünk definit tömb típusról), deklarációnál nem. Ezeket értékül adhatjuk egymásnak, viszont nevesítetlen tömböknél a definiáláskor adjuk meg a méretüket, de a típusuk nem egyezik meg, így nem lehet értékül adni. Indefinit tömb típusról beszélünk, ha a típusdefinicónál nem adjuk meg a konkrét tömb méretét, csak egy maximum intervallumot. A konkrét érték a deklarációkor kerül megadásra. Procedure.. T: array (1..10) of Integer ; --záró jelben a tömb tartom á nya. T1, T2: array (1..10) of Integer ; --Nem lesz egyf éle típus, ahhoz lé tre kell hozni egy tömb tí pust.: type Tomb is array (1..10) of Integer ; T3, T4: Tomb ; --Így már egyeznek a tí pusok. Ezeket lehet értékül adni egym á snak. type Tomb2 is array ( Integer range < >) of Integer ; T5: Tomb2 (1..5) ; Begin T3 := T4; End ; ADA-ban nincs [] operátor a tömbökre. Több dimenziós tömböket is lehet létrehozni: type Matrix is arras (1..3, 1..5)of Natural; Procedure.. T: array (1..10) of Integer ; Begin ; for I in T Range loop -- T First..T Last --Több dimenzi ós tömb eset én: T First (1) -- Az els ő dimenzi ó beli elem értéke Ha a tömb 1. elemére akarunk hivatkozni, akkor ezt a T(T First) parancsal tehetjük meg. A T First az intervallum elejét adja meg. Stringek A string egy karakterből álló tömb. type String is array(integer range<>)of Character; Attribútumok - name FIRST(n): a tömb n. dimenziójának 1. eleme. - name LAST(n): a tömb n. dimenziójának utolsó eleme. - name RANGE(n): a tömb n. dimenziójának az index intervalluma. - name LENGTH(n): a tömb n. dimenziójának elemeinek száma. Természetesen 1 dimenziójú tömb esetén a (n) elhagyható. 7

4. Gyakorlat Record A record egy inhomogén összetett adatszerkezet. Egész rekordot lehet értékül adni, vagy akár tagonként is. type Complex is record Re: Integer ; Im: Integer ; end record ; c1: Complex ; c1.re := 5; c1.im := 3; -- egyszerre is lehet értéket adni : c1 := (5,3) ; Limited record Egylépésbeli értékadást a rekorda le lehet tíltani: type Rac is limited record. Ekkor r1 := r2 nem működik, és az egyenlőségvizsgálat sem megengedett. Diszkriminánsos record Lehetőség van "paramétert is adni a recordnak. A diszkrimináns csak diszkrét típus lehet, az értékét pedig deklarációkor kell megadni. type name ( parameterlist := defaultvalues ) Is record member : type ; end record ; Variáns record type Status (H; Ö; E; Egy ); type Ember ( a: Status ) is record name : String (1..100) ; Age : Poistive ; case a is when H => Hname : String (..) ; when Ö = > H: Integer ; end case end record ; e: Ember ( Egy ); e. H := 5; -- NEM LEHET!!! hisz nincs neki. H adattagja. 5. Gyakorlat Csomag Logikailag összetartozó alprogramok, típusdefiníciók, változok stb. halmaza. Az ADA csomagja nem az OOP támogatása, hanem lehetőség a program kisebb, önnáló részekre bontására. Önálló fordtási egység, amely két részből áll: 1. specifikációs rész (.ads) 8

2. törzsrész (.adb) Specifikációs rész Itt megadjuk a csomagban használni kívánt alprogramokat, típusokat. Az itt definiáltat publikusak lesznek a csomag használója felé. package Name is -- definici ók list ája end Name ; Törzsrész Itt kerülnek implementációra a specifikációs részben deklarált alprogramok. package body Name is procedure procedurename1 is begin --.. end procedurename ; -- end Name ; A felhasználás során a with Name; use Name; kulcsszavakat illesztjük be a programba. Private - Átlátszatlan rész Célja olyan adatszerkezet létrehozása amit a felhasználó csak használ, a felépítéséről nem tud semmit, tartalmát csak az általunk megadott fügvényekkel éri el. package Name is -- definici ók list ája private --átlá tszatlan rész end Name ; Ha átlátszatlan csomaggal dolgozunk, meg kell adni a típusdefiníciók között: Type PrivateName is private;. Ennek a típusnak a kifejtését a csomagunk privát részében kell megadni. Az összes olyan típust, alprogramot, amit nem akarunk publikussá tenni itt helyezhetjük el. 6. Gyakorlat Sablon Célja egy olyan általános adatszerkezet leírása, mely lehetőséget biztosít több típus használatára. Sablon lehet eljárás, függvény, csomag is, de nem önálló fördítási egység. Használat előtt példányosítani kell. generic -- sablonparam é terek pacakage Name -- end Name ; generic -- sablonparam é terek procedure Name ( parameters ); Sablonparaméter lehet: - változó, 9

- típus, - alprogram. Típusok esetében meg kell határozni, hogy az egyes típusoknak milyen speciális tulajdonságait szeretnénk kihasználni. Forrás - ELTE IK programtervezői informatikus szak 2013 őszi féléves Programozási nyelvek - ADA gyakorlat alapján írt órai jegyzetem. 10