Programming | Other » Az Ada programozási nyelv

Datasheet

Year, pagecount:1995, 8 page(s)

Language:Hungarian

Downloads:115

Uploaded:October 29, 2008

Size:55 KB

Institution:
-

Comments:

Attachment:-

Download in PDF:Please log in!



Comments

No comments yet. You can be the first!

Content extract

Programozási nyelvek - előadás vázlatok Az Ada programozási nyelv I. Története Cél: Szoftver költségek csökkentése, megbízható programok előállítása 1976: Meglevő programnyelvek elemzése (FORTRAN, COBOL, PL/I, ALGOL 60, ALGOL 68, SIMULA 67, EUCLID, stb.  egyik sem megfelelő) 1979: Ada konferencia, programok írása Ada 3-4. oldal Ős: Pascal, Felhasználtak: Modula, Euclid, Mesa, ALGOL 68, SIMULA 67, Alphard, CLU, stb. Újdonság: modularitás, input-output, párhuzamosság Általános célú nyelv, ami rendszerprogramozási célokra is jó II. Jellemzői 1. Professzionális, Neumann-elvű 2. Program=több fordítási egység (modul) 3. 1 fordítási egység=több programegység (eljárás, függvény, beágyazott modul, operátor, blokk, taszk) 4. Dinamikus memóriakezelés 5. Dinamikus deklarációkiértékelés 6. Statikus hatáskör kijelölés (de a beágyazott modul csak akkor része a hatáskörnek, ha az azonosítót importálja) 7. Paraméterátadás:

érték- és címszerinti 8. Típuskompatibilitás névszerinti 9. nincs sor=utasítás megfeleltetés 10. Utasítás elválasztójel: ; 11. Erősen típusos 12. Nem látható változóra eljárásnévnév minősítéssel lehet hivatkozni III. Programszerkezet PROCEDURE név IS deklarációk BEGIN utasítások END név; 1 Programozási nyelvek - előadás vázlatok IV. Adatok megadása 1. Konstansdefiníciók típus nélküli konstans: név: CONSTANT := konstanskifejezés; típusos konstans: név: CONSTANT típus := konstanskifejezés; 2. Változó deklarációk Korlátozás: RANGE a.b – értéktartomány DIGITS n – pontosság számjegyekre DELTA tört – abszolút pontosság változó: típus korlátozás := kezdőérték; 3. Típusdefiniálás Új típus: TYPE típusnév IS típusdefiníció; Altípus: (értékhalmaz megszorítás, a műveletek maradnak, ekvivalens az eredeti típussal) SUBTYPE típusnév IS típusdefiníció megszorítás; Származtatás:

(értékhalmaz megszorítás, a műveletek maradnak, nem ekvivalens az eredeti típussal) TYPE típusnév IS NEW típusdefiníció megszorítás; A típust lehet típussal vagy változóval paraméterezni. típusnév (paraméterspecifikáció := feltételezett érték) A típushoz is tartozhat kezdőérték. típusnév IS típus := kezdőérték A típus paraméterének lehet feltételezett értéke 4. Elemi típusok INTEGER, SHORT INTEGER, LONG INTEGER, alapszám#számjegyek# - 2 és 16 közötti számrendszer NATURAL ( 0), POSITIVE ( 1) FLOAT, SHORT FLOAT, LONG FLOAT TYPE REAL IS NEW FLOAT pontosság korlátozás; BOOLEAN, CHARACTER (x, ASCII.LF), STRING ("xxx") (felsorolás) 2 Programozási nyelvek - előadás vázlatok elemeik átlapolhatók: típusnév(konstans), ha nem egyértelmű egy konstans típusa. fixpontos valós: TYPE név IS DELTA pontosság RANGE a.b; 5. Műveletek elemi típusokkal típusFIRST, típusLAST, típusPOS, típusVAL, típusSUCC, típusPRED,

IMAGE: típus  STRING, VALUE: STRING típus logikai: AND,OR,XOR,NOT,<,<=,>,>=,=,/=,EOLN,AND THEN, OR ELSE egész: +,–,*,-???,REM,MOD,ABS,SQR,relációk,integer(valós),ODD(szám) valós: +,–,*,/,ABS,SQR,SQRT,SIN,COS,ARCTAN,EXP,relációk,float(egész) kifejezés [NOT] IN típus megszorítás 6. Tömb ARRAY (indextartomány) OF elemtípus Indextartomány: típus RANGE a.b típus RANGE <> – paraméteres típus, változó definiáláskor kell megadni indexelés: A[I], A[I.J] index tetszőleges véges típus lehet Relációk: lexikografikusan, Logikai műveletek logikai vektorokra (AND, OR, XOR, NOT) konkatenáció: & tFIRST(n) tLAST(n) tLENGTH(n) tRANGE(n) – az n. index legkisebb értéke – az n. index legnagyobb értéke – az n. index értékei száma – az n. index értékhalmaza Konstansok: ((11,12,13),(21,22,23)), (1.10=>0,11|12|13=>-1,others=>1) 7. Rekord TYPE név (paraméter) IS RECORD mezőnevek: típus; . mezőnevek: típus END

RECORD Hivatkozás: változónév.mezőnévmezőnév WITH változónév DO utasítások END Konstans: (érték,érték, .) vagy (mezőnév => érték, ) Példa: TYPE TEXT(max:POSITIVE:=100) IS 3 Programozási nyelvek - előadás vázlatok RECORD LENGTH: INTEGER RANGE 0.max :=0; VALUE: ARRAY (1.max) OF CHARACTER; END RECORD; Rekord CASE szerkezettel (unió, csak egy lehet, csak a rekord végén) TYPE név IS RECORD (variánskijelölők:típus) mezőnevek: típus; . CASE variánskijelölő OF WHEN értékek => mezőleírások; . WHEN OTHERS => mezőleírások; END CASE; END RECORD; 8. Mutató típusa: ACCESS típus konstansa: NULL amire mutat: változó.ALL, változómezőnév utasítások: változó:=NEW típus(kezdőérték) automatikusan felszabadul a hatáskörből kilépve (azaz amikor a mutató megszűnik, akkor a mutatott érték is megszűnik) V. Utasítások 0. Megjegyzés: -- karakterek a sor végéig 1. Értékadás változó := kifejezés Tömbökre

elég, hogy azonos elemszámúak és elemtípusúak precedencia: * *,/,REM,MOD előjelek,NOT +,–,& relációk AND,OR,XOR 2. Elágazás IF feltétel THEN utasítások ELSIF feltétel THEN utasítások ELSE utasítások END IF CASE kifejezés OF 4 Programozási nyelvek - előadás vázlatok érték WHENértékek => utasítások; érték.érték érték|érték . WHEN OTHERS => utasítások END CASE 3. Ciklus WHILE kifejezés LOOP utasítások END LOOP – amíg igaz FOR cv IN értékintervallum LOOP utasítások END LOOP (REVERSE) LOOP utasítások END LOOP - EXIT WHEN feltétel, EXIT Ciklusváltozó: tetszőleges diszkrét típus, ciklusra lokális, a ciklus belsejében nem módosítható, nem lehet változó komponens. 4. Blokk(futási idejű deklarációkiértékelés, lokális kivétel) DECLARE deklarációk BEGIN utasítások END; 5. Beolvasás, kiírás NINCS vannak predefinit modulok: SEQUENTIAL IO, TEXT IO, DIRECT IO, IO EXCEPTIONS, LOW LEVEL IO. 6. Eljárás

vagy függvény vagy operátor Eljárás: Függvény: PROCEDURE név (paraméterek) IS deklarációk BEGIN utasítások END név; FUNCTION név (paraméterek) RETURN típus IS deklarációk BEGIN utasítások RETURN függvényérték END név; A függvény csak elemi típusú lehet. A paraméterek között elválasztójel: – hívásnál: , – definiálásnál: ; (lehet a feltételezett érték miatt kevesebb) 5 Programozási nyelvek - előadás vázlatok A paramétermegfeleltetés lehet: – sorszám szerint, – név szerint. Formális paraméter megadás: név: {IN/OUT/IN OUT} típus := feltételezett érték (csak IN esetén) A különböző paraméterű eljárásnevek átlapolhatók. VI. Modulok PACKAGE név IS exportált objektumok definíciója END név; PACKAGE BODY név IS exportált eljárások törzse saját objektumok definíciója BEGIN kezdőértékadás saját objektumoknak END név; Kívülről nem látható típus megadása: PACKAGE név IS TYPE típus

IS (LIMITED) PRIVATE; eljárásfejek a típus kezeléséhez PRIVATE TYPE típus=definíció END; LIMITED típus esetén még értékadást és egyenlőségvizsgálatot sem enged meg a rendszer, csak a definiált műveleteket. WITH modulnév – hivatkozni lehessen rá USE modulnév – ne kelljen minősítéssel hivatkozni VII. Párhuzamosság randevúval (a hívó és a hívott csak akkor mehet tovább, ha a hívásnál találkoztak) TASK TYPE név IS eljárásfejek – ezek hívhatók másik taszkból END név; TASK BODY név IS deklarációk BEGIN LOOP utasítások END LOOP END név; 6 Taszk deklarációja: változónév : taszktípus Taszk hívása: Késleltetés: taszknév.eljárásnév(paraméterek) DELAY másodperc Taszk belseje: Ha két eljárás csak egymás után hívható: 1 ACCEPT eljárás DO utasítások END eljárásnév; 2 ACCEPT eljárás DO utasítások END eljárásnév; Ha nem hívják, tehet saját dolgokat: SELECT ACCEPT . END ELSE utasítások END

SELECT Nemdeterminisztikus sorrendű hívás esete: SELECT ACCEPT . END OR ACCEPT . END END SELECT Feltételtől függő indulás: ACCEPT előtt lehet WHEN feltétel. Ha az utolsó ág: TERMINATE, akkor befejeződik, ha a hívó taszk leáll. Egyes ágakon lehet késleltetés. Nem vár a hívottra, ha X másodpercen belül nem jelentkezik. SELECT taszkhívás OR DELAY X END SELECT A randevú megkezdéséig végrehajtandó utasítások: SELECT taszkhívás ELSE utasítások END SELECT Megszakításkezelés: mint egy taszkhívás, amit hardware-megszakítás hív meg. A specifikáció: PROCEDURE eljárás; FOR eljárásnév USE AT megszakításcím; Megszakításvektor címére hivatkozás: változó : típus; FOR változó USE AT memóriacím; VIII. Kivételkezelés BEGIN utasítások EXCEPTION WHEN kivételnév => utasítások . WHEN OTHERS => utasítások END; Kivételnevek: NUMERIC ERROR, CONSTRAINT ERROR, STORAGE ERROR, felhasználói nevek. Felhasználói kivétel

definiálása: kivételnév : EXCEPTION Kivétel előidézése: RAISE kivételnév RAISE – kivétel továbbadása IX. Típussal paraméterezett programegység (GENERIC) Ez a makrófogalom továbbfejlesztése. GENERIC paraméterek leírása (adat, eljárás, típus) eljárás vagy modul leírás Használata (példányosítás): PACKAGE név IS NEW generic név(paraméterek) USE név