1. Mi a programegyseg, milyen reszei vannak? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A programegyseg egy reszfeladatot megoldo, tehat funkcionalisan osszefuggo programresz. Ezek epitik fel a forditasi egysegeket. A programegysegek alapvetoen ket reszre bonthatok fel: a specifikacios reszre es a torzsre. A specifikacios reszirja le az egysegnek a mas egysegekbol elerheto "kapcsolodasi pontjait" (a mas egysegek fele lathato reszt), a torzs tartalmazza az egyseg funkciojat megvalosito programot (implementacio). A torzs szinten ket reszbol all: deklaracios reszbol es utasitassorozatbol. A deklaracios resz az azonositok deklaracioit, valamint objektumok es programegysegek definicioit tartalmazza. Az utasitassorozat tartalmazza azokat az utasitasokat, amelyek vegrehajtasa nyoman a programegyseg kifejti hatasat. Az ADA programegysegei: - alprogramok - csomagok - taszkok - vedett egysegek - sablon egysegek 2. Hogyan tortenhet egy valtozohoz a szukseges memoriaterulet hozzarendelese? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A valtozohoz ketfelekeppen rendelodhet memoria: statikusan es dinamikusan. Statikus: A valtozohoz a memoriaterulet hozzarendelese automatikusan, a a definicio (deklaracio) kiertekelesekor tortenik. Ezek felszabaditasa is automatikus. Dinamikus: A memoria allokalasa a program futasa kozben tortenik. Ezek felszabaditasa (az altalanos gyakorlattal szemben) az ADA-ban szinten automatikus (bar ez felulbiralhato az Unchecked_Deallocation csomag segitsegevel), a dinamikusan allokalt objektumok addig maradnak fenn, amig a tipus definiciojat tartalmazo programegyseg vagy blokk aktiv. 3. Mi egy deklaracio hataskore, mi a lathatosagi kore (kozvetlen, kiterjesztett)? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A programszovegnek azt a szakaszat, amelyen belul az adott deklaracio ervenyben van, a deklaracio hataskorenek nevezzuk. Azt a szakaszt, ahol a deklaralt azonositoval az adott deklaraciora hivatkozni lehet, a deklaracio lathatosagi korenek nevezzuk. (A lathatosagi kor resze a hataskornek = Deklaracio csak hataskoren belul lehet lathato.) Deklaracio kozvetlen hataskore: A deklaracio helyetol altalaban az ot kozvetlenul tartalmazo deklaracios kornyezet vegeig tart. (Masodlagos azonositok hataskore az oket bevezeto deklaracioban szereplo elsodleges azonosito hataskorevel egyezik meg.) Deklaracio hataskore: Mindig tartalmazza a kozvetlen hataskort. Olyan deklaraciok eseten, amelyek kozvetlenul egy kulso deklaracio lathato reszeben jelennek meg, vagy egy kulso deklaracio nyilvanos gyermekei, a hataskor (rekurziven) kiterjed a kulso deklaracio hataskorenek vegeig. Direkt lathatosag: Deklaraciokat direkt modon lathatonak nevezunk, ha egyetlen azonositoval vagy muveleti jellel hivatkozhatunk ra. Kiterjesztett lathatosag: Tulajdonkeppen a direkt lathatosaghoz tartozik. Arra utal, ha egy azonosito deklaraciojat a kozvetlen hataskoren tul is kiterjesztettuk egy 'use' utasitassal. Lathatosag: Egy deklaracio lathato, ha direkt modon lathato, vagy szelekcios kifejezessel hivatkozhatunk ra. pl ada.universe.reboot_universe(now) 4. Jellemezze az alprogramokat! (eljaras, fuggveny) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Az alprogramok olyan programegysegek, amelyek vegrehajtasat meghivasukkal lehet kezdemenyezni. Arra hasznalhatok, hogy kulonbozo szamitasokat elkulonitsunk egymastol: egy alprogram egy jol korulhatarolhato szamitasi feladatot old meg. Egy ilyen szamitas lehet peldaul egy nagyobb szamitasi feladat egy reszfeladatanak megoldasa, egy tipus muveletenek megvalositasa, de akar egy gyakran felhasznalt konyvtari egyseg is. Az ADA-ban ketfele alprogramot kulonboztetunk meg: eljarasokat es fuggvenyeket. Az eljaras altalaban az allapotteren vagy a program kornyezeten elvegzendo transzformaciokat adnak meg. A fuggvenyek valamilyen erteket allitanak elo, de transzformaciot nem vegeznek, sem a program valtozoinak ertekere, sem a program kornyezetere nincsenek semmilyen hatassal (elvileg, gyakorlatilag a programozo felelossege ezt a "szabalyt" betartani). 5. Mi a kulonbseg a cim szerinti, a nev szerinti, az ertek szerinti es az eredmeny szerinti parameteratadas kozott? Hogy viszonylik ez az Ada in, in out, out lehetosegeihez? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A cim szerinti parameteratadas eseteben az aktualis parameter vagy egy valtozo vagy egy valtozo komponenset meghatarozo kifejezes lehet, pl. x(i). Az aktualis parameter kiertekelese a hozzarendelt memoriaterulet meghatarozasat jelenti. Az aktualis parameter kiertekelesere az alprogram vegrehajtasanak megkezdese elott kerul sor, es a formalis parameterhez az aktualis parameter memoriaterulete rendelodik hozza. A formalis parameter az alprogram vegrehajtasa soran minden pillanatban azonos az aktualis parameterrel. Az ertek szerinti parameteratadas eseten az aktualis parameter egy kifejezes, a formalis parameter pedig az alprogram egy lokalis valtozoja, aminek definialt kezdoerteke, es ez eppen az aktualis parameter erteke. Az aktualis parameter kiertekelesere egyszer, az alprogram vegrehajtasanak megkezdese elott kerul sor. Az alprogram vegrehajtasa kozben sem az aktualis parameter ertekenek esetleges megvaltozasa nincs hatassal a formalis parameter ertekere, sem pedig forditva. Az eredmeny szerinti parameteratadas az alprogram befejezesenek pillanataig megegyezik az ertek szerinti parameteratadassal, az eredmeny szerinti parameteratadas annyival tobb, hogy az alprogram vegrehajtasanak befejezesekor az aktualis parameter felveszi a formalis parameter pillanatnyi erteket. A nev szerinti parameteratadas eseten az aktualis parameter lehet valtozo, de lehet tetszoleges kifejezes is. Az aktualis parameter kiertekelese az elso esetben a hozzarendelt memoriaterulet cimenek meghatarozasat, a masodikban a kifejezes ertekenek kiszamitasat jelenti. A formalis parameter az alprogram vegrehajtasa soran minden pillanatban azonos ezzel a valtozoval, illetve kifejezessel. Az aktualis parameter kiertekelese mindig ujra megtortenik valahanyszor a formalis parameterre hivatkozas tortenik. Tehat ha az aktualis parameter peldaul x(i) vagy k+j alaku kifejezes, akkor az i,j,k valtozok ertekenek (a hivott alprogrambol valo) megvaltozasaval azonnal megvaltozik a formalis parameter erteke is. Egy in modu parameter masolat szerinti atadasa az ertek szerinti parameteratadasnak felel meg. A cim szerinti parameteratadas az Ada-ban hivatkozas szerintinek nevezettre hasonlit, de a parameterek modja es az ezekbol adodo megszoritasok megkulonboztetik oket. Az eredmeny szerinti parameteratadas az in out (es reszben az out) modu parameterek masolat szerinti atadasaval egyenerteku. A nev szerinti parameteratadasnak nincs megfeleloje az Ada-ban. 6. Mondjon peldakat a globalis valtozok hasznalatabol szarmazo veszelyekre! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A globalis valtozok hasznalata rontja a program olvashatosagat es erthetoseget, hasznalatuknal elofordulhat, hogy tobb eljaras valtoztatja az erteket, ami futasi hibakhoz vezethet, kulonosen igaz ez taszkokra, ahol elofordulhat hogy egy idopillanatban ket utasitas egyszerre probalja irni az erteket, vagy az egyik eppen modositja, amikor a masik kiolvasna. 7. Mi a programozasi nyelv szintaxisa, ill. szemantikaja? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A nyelv szintaxisanak nevezzuk azoknak a szabalyoknak az osszesseget, amelyek az adott nyelven irhato osszes lehetseges, formailag helyes programot definialjak. Az adott nyelv programjainak jelenteset leiro (tehat azt, hogy a program vegrehajtasanak mi lesz a hatasa) szabalyok osszesseget a nyelv szemantikajanak nevezzuk. 8. Mi a kulonbseg a statikus es a dinamikus definicio ill. deklaracio-kiertekeles kozott? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A deklaracios resz definicioinak kiertekelese tortenhet forditasi- (pl. Pascal), vagy futasi idoben (pl. ADA). Az elso esetben statikus-, a masodikban dinamikus definicio kiertekelesrol beszelunk (ez utobbi esetben lehetoseg van arra, hogy a tipusok definicioi ne csak statikus kifejezesektol, hanem valtozoktol is fuggjenek). 9. Mi egy valtozo elettartama? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A valtozo elettartama a valtozohoz szukseges memoriaterulet lefoglalasa (allokalasa) es felszabaditasa kozotti ido. 10. Mi a blokkstruktura, mit jelent a "globalis" ill. "lokalis" azonosito kifejezes? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A blokkstruktura a programegysegek egymasba agyazasaval eloallo hierarchikus struktura. Blokkstrukturaban egy programegyseg deklaracioinak hataskore kiterjed az osszes tartalmazott programegysegre. Egy programegysegben a tartalmazo programegysegek altal deklaralt azonositokat (a tartalmazott programegyseg szemszogebol) globalis azonositoknak, a programegysegben deklaralt azonositokat magaban a programegysegben lokalis azonositoknak nevezzuk. Blokkstruktura eseten egy programegysegben valamely globalis azonosito ujradeklaralhato, ekkor azt mondjuk, hogy ez a lokalis deklaracio eltakarja a globalis deklaraciot. 11. Mikor nevezunk egy programozasi nyelvet erosen tipusosnak? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Egy nyelvet erosen tipusosnak nevezunk, ha minden ertek, objektum, formalis parameter es fuggveny tipusa forditasi idoben egyertelmuen meghatarozhato. 12. Mi a kulonbseg a programegyseg es a forditasi egyseg kozott? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A nyelvnek azt az egyseget, amit a forditoprogram egyszeri lefuttatasaval, a program tobbi reszetol elkulonulten lefordithatunk, forditasi egysegnek (vagy modulnak) nevezzuk. A forditasi egyseg osszetett nyelvtani egysegek, un. programegysegek halmaza. A programegyseg egy reszfeladatot megoldo, tehat funkcionalisan osszefuggo programresz. 13. Mi a kulonbseg az Adaban az altipus es a szarmaztatott tipus kozott? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Egy tipus altipusa a tipus ertekhalmazanak reszhalmazat jeloli, a reszhalmazt korlatozasokkal adjuk meg, nincs lehetosegunk azonban a muveletek korlatozasara, az altipusra alkalmazhato a tipus osszes muvelete. A szarmaztatassal egy letezo tipusbol uj tipust hozhatunk letre, amelyet az ereditol a fordito szintaktikailag megkulonboztet, a szarmaztatott tipus atveszi az eredeti tipus strukturajat, ertekhalmazat, muveleteit es kezdeti ertekeit, de a ket tipus nem ekvivalens. ==========BIGZOLEE ESANY================= 14.Milyen nyelvi eszkozt ismer absztrakt adattipusok megvalositasara az Adaban? Irja le a felepiteset! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Az Ada95 lehetoseget ad arra hogy tipusspecifikaciokat deklaraljunk analekul, hogy megadnank a konkret reprezentaciot. Ehhez jelolt tipusokat es primitiv muveketeiket abstract0nak deklaralhatjuk. pl: type a is abstract tagged null record; vagy procedure f(Apar:A) is abstract; Az absztrakt muveletek egyik legfontosabb jellemzoje, hogy nincs torzs reszuk, azaz az implementacio hianyzik. Konkret tipus szarmaztatasanal az absztrakt muveleteknek kotelezo torzset megadni. Az absztrakt tipusbol lehet szarmaztatni ujabb absztrakt tipusokat is. Egy absztrakt tipusnak onmaganak nem lehet objektuma. Amikor minden primitiv muveletet helyettesitunk valodi(implementalt) muvelettel, akkor a tipust mar nem kotelezo absztraktkent deklaralni, igy objektuma is lehet. Felepitese pl: package BV_Rendszer_Alap is type Esemeny is abstract tagged null record; procedure kezel(A:in out Esemeny) is abstract; ... end BV_Rendszer_Alap; with BV_Rendszer_Alap,Calendar; package Normal_Biztonsagvedelmi_Rendszer is type ... type ASZ_Esemeny is new BV_Rendszer_Alap.Esemeny with record ... end record; ... ------------------------------------------------------------------------ 15. Milyen lehetoseget jelent a generic az Adaban? (Pl. Mi lehet generic, milyen parameterei lehetnek, mit jelent az, ha kezdeti erteket adok a generic parameternek - pl. eljaras parameternek - , milyen muveletek megengedettek a generic torzseben, mi a peldanyositas? Aktualis parameterek megadasanak lehetosegei?) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A generic csomagok fuggvenye, eljarasok altalanositasa tobb az adott egyseg altal felhasznalt tipusra alprogramra. Generic lehet fuggveny,eljaras(?ezt nem tudom?),csomag.(ha lehet meg valami akkor tudassatok velem is) A g-ek formalis prarameterei lehetnek:obj-ok,tipusok,alprogramok,csomagok. Parameter obj-ok lehetnek kifejezesek,valtozok(in modu f. prametereknel) es valtozok(in out modnal). A paramerte tipusok lehetnek: -atlagos formalis pram. tipus: type Elem is private; -alprogram with function "<"(a,b:Elem) return Boolean; -korlatozott atlatszatlan tipusok:ekkor nem alkalmazhato a kapott tipusra az ertekadas es az egyenloseg vizsgalat pontosabban csak akkor nem,ha nem kaptunk ilyen parameter fuggvenyeket a tipussal eggyutt a sablonban. type t is limited private; -diszkriminansal rendelkezo tipusok:(egy korlatozott vagy korl. nelkuli tipushoz tartozhat egy vagy tobb diszkriminans type T(D1:Integer;D2:Boolean) is limited private; -definit es indef. tipusok: Definit:amik obj-k letrehozasara is alkalmasak indef amik nem. Indef:feltetelezett ertekkel nem redelekezo diszkriminans tipusok, megsz. nelkuli indexhataru tombok,es az osztalyszintu tipusok -jelolt tipusok: type T is tagged private; A szerkezet tartalmazhat meg limited kulcsszot valamint meghatarozott es ismeretlen diszkriminanst. -osztalyszintu tipusok: -szarmaztatott tipusok: -kiterjesztett tipusok: -Skalar tipusok:ilyen esetekben a formalis parameter egy az adott tipus osztalyba tartozo tipus lehet.A sablono belul hasznalhatok a tipushoz tartozo elore definialt attributumok,muveltek. -diszkret tipus:ide tartoznak a felsorolasi es egesz tipusok a sablonban hasznalhato a 'first 'last 'image 'value valemint a "<" es a "<=" muveletek generic type T is (<>); -elojeles egesz:ok megfeleltethetok fomalis diszkret parameternek de ha fomalis elojeles parameternek feleltetjuk meg akkor hasznalhatjuk az egesz tipusokra vonatkozo muveleteket is pl"+" ,"mod" type T is range <>; -modulo tipus:ok az egesz tipusok reszet alkotjak.Az elojelesektol fugetelenul kell kezelni oket.Az elojes egesz tipusok nem feleltethetok meg modulo tipusnak mert a modulon ertelmezettek a logikai muveltek amit a sablonon belul hasznalhatunk is.Masresz a modulo tipus nem feleltetheto meg elojeles egesz tipusoknak mert a tulcsordulas maskepp van kezelve.Ezert van szukseg erre a formalis parameterre. type T is mod <>; -lebego pontos tipus:float es root_float-bol szarmazo tipusok type T is digits <>; -kozonseges fixpontos tipus:A programozo altal def. kozonseges fixpontos tipusokat soroljuk ide. type T is delta <>; -decimalis fixpontos tipusok:ezek a fixpontos tipusok reszet alkotjak a kozonseges fixpontosok mellett.A ket osztaly tagjai nem feletethetok meg egymasnak.Ennek oka,hogy a decimalis fixpontos tipusokra a fordito spec. reprezentacciot alkalmaz(csomagolt 10-es) type T is delta <> digits <>; -tomb tipusok:ha egy sablonon belul ki szeretnenk hasznalni,hogy a formalis prameter tomb akkor: type V is array(Index) of elem; megszoritott tomb ekkor csak olyan hosszu tombokre fog mukodni a peldanyositott generic amilyennel peldanyositottunk. type W is array(Index range <>,Index) of elem; az elso dimenzioban megszoritatlan a tomb a masodikban megszoritott. ekkor a sablonon belul hasznalhato a tomb tipusosztaly attributumai. az aktualis parameter tipusanak meg kell egyeznie a formalissal dimenzio szamban dimenziok indextipusaban megszoritottsagban(vagy mindketto megszoritott -aliased komponens tipus type V is array(Integer range <>) of aliased Integer; -mutato tipus: type P is access T; -alprogramra mutato tipus type P is access procedure(X:in out Integer); a mutato tipusok modosito kulcsszavai: constant: fomalis <=> aktualis all : fomalis => aktualis generic type PC is access constant T; type PA is access all T; -parameter alprogramok: ------------------------------------------------------------------------ 16. Hasonlitsa ossze a type V is private; sorok jelenteset a kovetkezo ket programreszletben! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ a. generic type V is private; .... package VV is.... ..... end VV; Ebben az esetben egy altagos formalis parameter tipust adtunk meg. Itt az atlatszatlan tipus azt jelenti,hogy a sablonon belul nincs a reprezentacciorol semmifele informaccionk.A sablonban csak olyan muveleteket hasznalhatunk a tipusertekeken amelyek a sablon formalis parameterlistajaban felsorolasra kerultek. b. package W is..... type V is private; ...... (!) end W; Atlatszatlan tipus definialasa egy csomagspecifikaccio lathato reszeben.Itt a tipus reprezentaccioja el van rejtve a kulvilag elol.A tipusertekek modositasara csak a lathato muveleteken keresztul van lehetoseg. ------------------------------------------------------------------------ 17. Mit tud az Ada .... tipusarol? (Pl. rekord tipusrol - mi a diszkriminans, mit jelent az, hogy kezdeti erteket adok neki, stb. -, tomb tipusrol - mi a korlatozas nelkuli tomb tipus, hol lehet hasznalni, stb., stb.) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ada tipusa?(ada tipusa vagy tipusai?) Az ada erosen tipusos nyelv ami azt jelenti,hogy az ertekadas bal es jobb oldalan csak ugyanolyan tipusu valtozok szerepelhetnek. Az ada tipusainak felosztasa: -ELEMI: -SKALAR: -FELSOROLASI: -KARAKTER -LOGIKAI -EGYEB FELSOROLASI -EGESZ: -ELOJELES EGESZ -MODULO TIPUSOK -MUTATO -OBJ-RA MUTATO -ALPROG-RA MUTATO -OSSZETETT -TOMB -STRING -mas TOMBOK -jeloletlen REKORD (minden nem tomb osszetett tipusnak lehetnek parameterei -jelolt REKORD(diszkret tipusu diszkrinimnans) -TASZK (diszkret es mutato tipusu diszkriminans megengedett) -VEDETT A rekord tipus:olyan ossszetett tipus amelynek komponensei mar deklaralt tipusokhoz taroznak.Direktszorzat es unio megvalositast tesz lehetove. A komponensek neveinek kulonbozonek kell lenni.A komponensekre a nevukkel a szelektorokkal hivatkozunk.Lehet kezdoerteket adni a kom.k-nak. ertek adasok: -pozicio szerinti forma: d:=(1776,julisu,3); -nev szerint forma: kozombos felsorolasi sorrend d:=(nap => 3,ev => 1776,ho => julius); A diszkriminans:a nem tomb osszetett tipusnak lehetnek parametereik ezek a diszkriminansok.Diszkriminans lehet diszkret es mutato a fent leirt tipusoknal az ami ()-ben utana van.A diszk.-nek lehet kezdeti erteket adni es hasonloan a hatarozatlan indexu tombhoz nem alkalmas kezdeti ertek nelkuli d rekord kozvetlenul obijektumok definialasara. A tomb tipus:osszetett obj. aminek komp-i ugyanazon altipushoz tartoznak. Indextipusa tetsz. diszkret tipus lehet.Egy tomb tip. korl.(*) ha a komp-i korlatozott tipusuak. A korlatozas nelk. tomb tipus:(gondolom index korl. nelk. de ha nem akkor az (*) elentettje).Megszoritas nelk.indexhatarok hasznalataval azonos tipusunak tekinthetjuk mindazon tomboket amelyek azonos tipusu elemeket tartalmaznak es indexeik ugyanolyan tipusuak bar az indexhatarok kul. type Vektor is array(Integer range <>) of Integer; type Matrix is array(Integer range <>,Integer range <>) of Float; ------------------------------------------------------------------------ 18. Mikor hasznalunk limited private tipust? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Limited(-> korlatozott) -et korlatozott atlatszatlan tipus definialasakor hasznaljuk,akkor ha nem akarjuk,hogy ertelmezve legyen a tipusra az = /= vizsgalat ekkor csak a csomagban def. muveleteket lehet hasznalni. A korlatozott tipushoz tartozo parameterek atadasa mindig cim szerinti, a parametereknek nem lehet kezdeti erteke. A tipus akkor korlatozott,ha korlatozottkent definialt tipus,vagy indexvedett tipus korlatozott komponenst tartalmazo osszetett tipus leszarmazottja. Ha jelolt tipus akarmelyik komponense korlatozott akkor az egesznek is korl.-nak kell lennie. Pelda package type Verem is limited private; ..... private type verem is record elemek:tomb; mut:integer end record; end package ------------------------------------------------------------------------ 19. Mik az attributumok altalaban, sorolja fel a .... tipus attributumait es jelentesuket! (Pl. tomb tipus, vagy diszkret tipusok, stb.) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Az egyes tipusok rendelkeznek un. attr.-kal tipusmuveletekkel amelyeket az osztaly minden tipusara vegrehajthatunk. A S skalar tipusokra letezo attr-k: 'First also korl ; 'Last ; 'Range ; 'Base S megszoritas nelk alaptipusa; 'Min ; 'Max a prameternek kapott ket S'Base beli kozul a megfelelot adja; 'Succ ; 'Pred ; 'Wide_Image ;'Image ; 'Wide_Width ; A D diszkret tipusok attr-i: 'Pos ; 'Val ; A tomb tipus attr-i: 'First(i) az i-edik indexintervallum also hatara alapban i=0 'Last(i) az i-edik indexintervallum felso hatara alapban i=0 'Range 'Length ------------------------------------------------------------------------ 20. Milyen predefinit kiveteleket ismer az Adaban? Mutasson rovid peldakat ezek elofordulasara/hasznalatara, mi a kivaltodas feltetele.(125,126,127,140) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A Standard csomagban def. kiveteleket elore def. kiveteleknek nevezzuk. A kivaltodas feltetele az lehet az hogy egy utasitas vegrehajtasa kozben vagy egy kifejezes kiertekelese kozben egya a nyelv altal definialt ellenorzes elbukik.Az elore ddef. kiv. kivaltosuk okai a kovetkezok. Constraint_Error:indexhiba,diszkr megsertese,null ert. mutato alt. mutatott elemre a hivatkozas kov. be. i:natural:=100; loop i:=i-1; end loop Program_Error:olyan alprogram hivatkozaskor taszk hivaskor ami meg nincs kierteklve.Vagy ha a fuggv. lefutott de nem volt return.Vagy ha a selektiv varakozas minden aga zart es nem volt else utasitas. Storage_Error:nincs eleg mem Tasking_Error:taszkok kozti kommunkikaccio alatt Numeric_Error: exception renames Constraint_Error; ------------------------------------------------------------------------ ===========SCAMEL=============== 21. Milyen nyelvi elemekkel tamogatja az Ada83 a parhuzamos programozast? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Taszkokkal, melyek parhuzamosan futo programegysegek. A foprogram is egy taszk. A taszkok egymas kozt kommunikalhatnak a belepesi pontok segitsegevel, melyek a fuggvenyhivashoz hasonloak. Minden belepesi pontnak van egy varakozasi sora, melybe barmely taszk belephet, a taszk sorban kiszolgalja a belepesre varokat. A taszkok a vegrehajtando utasitassorozat vegeztevel befejezik mukodesuket. 22. Milyen muveletek megengedettek az Adaban egy task objektumra? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Limited tipus, ezert csak az attributumok hasznalhatoak, semmilyen egyeb muvelet (ertekadas, egyenlosegvizsgalat, stb.) nem megengedett. 23. Milyen nyelvi elemekkel tamogatja az Ada a hibakezelest? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Kivetelkezelessel. Van nehany elore definialt kivetel, de a programozo keszithet maganak is. Definialasa: kivetel: Exception; Kivaltasa: raise kivetel; 24. Hogyan tortenik a kivetelek lekezelese, mi a kulonbseg a deklaracios reszben es az utasitasok vegrehajtasa kozben fellepo kivetelek kozott? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ha egy utasitassorozatban kivetel lep fel, akkor eloszor a blokkhoz tartozo kivetelkezelo reszt keressuk meg. Ha ilyen nincs, akkor a blokk (vagy eljaras) abnormalis modon veget er, es a vezerles az ot hivo eljarashoz vagy az ot dinamikusan tartalmazo blokkhoz kerul, es itt is kivaltodik az exception. Ha ilyen modon eljutottunk a foprogramig, es ott sem kezeljuk le a kivetelt, a program veget er. Ha van kivetelkezelo ag a blokkhoz, akkor a kivaltodott exceptionhoz tartozo agat keresunk benne. Ha nincs, akkor ugyanaz tortenik, mintha nem is lenne kivetelkezelo ag, ha van, akkor az ott felsorolt utasitasok hajtodnak vegre, a kivetel elnyelodik, de a blokk vegrehajtasa ugyanugy befejezodik. Ha a hiba a deklaracios reszben lep fel, akkor a vezerles rogton a hivo blokkba adodik vissza =========BALAGE============= 25. Mikor tortenik az Adaban a taskok aktivizalasa? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ () A taszk eliditasa az objektumot definialo programegyseg torzse deklaracios reszenek feldolgozasa utan, a torzs elso utasitasanak vegrehajtasa elott tortenik. () Ha a deklaracio egy csomag specifikacios reszeben van, akkor az elinditas a torzs deklaracios reszenek kiertekelese utan es a csomag torzsenek vegrehajtasa elott tortenik. () Az a taszk objektum, amit allokatorral hoztunk letre az allokator kiertekelesekor kerul elinditasra. 26. Mikor tortenik az Adaban a taskok terminalasa? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Egy taszk terminal, ha () komplett allapotban van es az osszes tole fuggo taszk mar terminalt. () vegrehajtasa egy 'terminate' utasitashoz ert es a task olyan programegysegtol fugg, amely mar komlett es a szulotol fuggo osszes leszarmazott terminalt mar, komplett vagy szinten egy 'terminate' utasitasnal varakozik. () 'abort' kovetkezteben abnormalis allapotba jutott, komplette valt es torlodott a varakozasi sorbol. 27. Mit jelent az Adaban a randevu? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A taszkoknak lehetnek belepsi pontjaik, melyek hasonlitanak az eljarashivasokra. Egz taszk kapcsolatba tud lepni egy masik taszkkal azaltal, hogy meghivja azt. A taszkokszinkronizalasara es adatcserejere a belepesi pont hivasok es az 'accept' utasitas szolgalnak. Az 'entry' deklaracio hasonlo az alprogram deklaraciojahoz. Tartalmazhat parametert ugyanugy, mint az alprogramok, kiveve 'access' tipusu parametere nem lehet. A belepesi pont specifikacioja szabja meg a kommunikacio iranyat, es az ataditt parameterke tipusat. Ha egy taszk meghivja egy masik taszk belepesi pontjat es az valaszol, randevu jon letre. A taszkok varnak egymasra: amikor az egyik taszk hivast intez egy masik taszkhoz es az meg a vegrehajtasaban nem ert el megfelelo 'accept'-ig, a hivo taszk mukodese felfuggesztodik; ha egy taszk vegrehajtasa soran egy 'accept' utasitashoz er es nincs megfelelo belepesi pontra hivas, a taszk felfuggesztodik. Ha a hivas pillanataban a hivott taszk egy 'accept' utasitasnal jar, akkor hivo taszk felfuggesztodik, amig az 'accept' utasitas torzse a hivott taszkban vegrehajtodik. Igy jon letre a randevu. Az 'accept' torzsenek lefutasa utan mindket taszk parhuzamosan fut tovabb. A hivasok egy varakozasi sorba kerulnek. Minden belepesi ponthoz sajat varakozasi sor tartozik. A hivasok vegrehajtasa beerkezesi sorrendben tortennek. 28. Mit tud a szelektiv varakoztatasrol az Adaban? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Egy taszk egyszerre tobb belepesi pontra torteno hivast is tud figyelni. Ez a 'select' , 'or' es 'end select' utasitasokkal valosithato meg. pl.: ... loop select accept valami do ... end valami; or accept masvalami do ... end masvalami; or -- ez a ket sor terminate; -- nem feltetlenul kell end select ; end loop; ... A kulonbozo alternativakat az 'or' valasztja el egymastol. Amikor a taszk a select utasitashoz er, megvarja, hogy valamelyik belepesi pontja meghivasra keruljon. Amikor a taszk egy 'select'-hez er, csak egyeten 'accept' agat hajt vegre. Ha a kulonbozo belepesi pontokhoz tartozo varakozasi sorok nem uresek, akkor az, hogy melyik 'accept' hajtodik vegre nem determinisztikus. A kulonbozo alternativakat a 'when feltetel =>' szerkezettel feltetelesse tehetjuk. Egy ag nyitott, ha nincs feltetel vagy a feltetel igaz. Kulonben az ag zart. A zart ag nem valaszthato ki. A vegtelen ciklusok elkerulese vegett hasznalhatjuk a 'terminate' alternativat is. Ekkor a taszk ha mar minden varakozasi sora ures terminal. Lehet alkalmazni a 'delay t' parancsot is, amely felfuggeszti a taszkot t masodpercre. Segitsegevel a taszk vegre tud hajtani egy bizonyos programreszt ha t idon belul nem erkezik hivas. 29. Mit tud a szelektiv hivasrol az Adaban, milyen fajtai vannak? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ha nem akarunk tetszolegesen sokaig varni egy randevu letrejottere a hivo taszkban, akkor alkalmazzuk a szelektiv hivast. Ket formaja van: () felteteles Ebben az esetben a 'select' utasitasnak van egy hivast tartalmazo aga es egy else aga. A hivast tartalmazo ag csak akkor tortenik meg, ha a randevu azonnal letre tud jonni. Egyebkent az else ag hajtodik vegre. () idohoz kotott Ekkor a 'select'-nek ket alternativaja van: egy hivas es egy 'delay t'. Ekkor a hivas csak akkor hajtodik vegre, ha a randevu t idon belul letre tud jonni, egyebkent a delay ag hajtodik vegre. ===========PADRE=================== 30. Mit tud a szemaforokrol? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parhuzamos rendszerekben szukseg lehet annak megvalositasara, hogy egy objektumhoz egyszerre csak egy task ferhessen hoza. Ezt a kolcsonos kizarast szemaforral is meg lehet valositani. Az osztott objektum hasznalata elott meg kell hivni a P muveletet, az osztott objektum hasznalatanak befejezesevel pedig a V muveletet. Igy minden task, ami hasznalni akarja meg kell hogy varjon egy accept P;-t, ami csak akkor kovetkezhet be, ha a V elotte meg lett hivva. Nem tul biztonsagos, mert ha kifelejtjuk a V muvelet meghivasat valahol, akkor utana senki sem tudja hasznalni az objektumot, stb. task type Szemafor is entry P; entry V; end; task body Szemafor is begin loop accept P; accept V; end loop; end; Forras: 324-326. oldal 31. Mikor lehet az Adaban tobb, azonos nevu alprogramot hasznalni? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Egy alprogramot nem csak a neve azonosit, hanem a paramterlistaja es a visszateresi erteke is (ha van). Ket alprogram definialasahoz hasznalhato ugyanaz az alprogramnev, de az alprogram specifikaciojanak el kell ternie valamiben. Ez lehet a parameterek szama, tipusa, a visszateresi ertek tipusa, vagy az, hogy az egyik eljaras, a masik fuggveny. NEM ELEG HA: csak egy parameter neveben, modjaban, altipusaban, vagy feltetelezett ertekeben van kulonbseg! Forras: 117-118. oldal 32. Miert hivjak az Ada83-at objektum alapu nyelvnek? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ada83-ban ha egy tipusbol szarmaztatott tipus orokli a szulo tipus muveleteit, es definalhatunk hozzajuk ujakat. Ezert hivjuk objektum alapunak a nyelvet. De nincs dinamikus kotes, csak a szarmaztatas. 33. Miert mondjak, hogy az Ada95 objektum-orientalt nyelv? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Az Ada95-ben a jelolt (tagged) tipusok segitsegevel uj komponensekkel is bovithetjuk az objektumot. Minden objektum rendelkezik egy cimkevel (tag), ami megadja az o tipusat. Pontosabban ez egy mutato a statikusan allokalt es szerkesztesi idoben inicalizalt tipusleirora. Ezen kivul az Ada95-ben megvalositottak a dinamikus kotest is, ami Ada83-ban meg nem volt meg. 34. Mikor tortenik az Adaban a dinamikus objektumok felszabaditasa, ‚s mi az oka ennek a dontesnek? Mutasson rovid programpeldat. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A dinamikus objektumok akkor szabadulnak fel, amikor a tipus definiciojat tartalmazo programegyseg, vagy blokk mar nem aktiv. Tehat pl. egy alprogramban vagy declare-rel bevezetett blokkban definialt mutatotipus altal mutatott objektumok megszunnek az alprogram ill. blokk vegen. Prgpl: ld. 82. oldal A dontes oka az lehet, hogy amikor mar biztosan nincs szuksegunk egy mutatora, akkor az Ada azt automatikus szabaditsa fel. 35. Mi a polimorfizmus es a dinamikus kotes kapcsolata? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Egy jelolt tipus egy primitiv muveletet meghivhatjuk egy osztalyszintu parameterrel is, a vegrehajtando muveletet ekkor az objektum cimkejenek megfelelo aktualis tipussal idoben valasztja ki. A futas ideju kivalasztasban csak a primitiv muveletek vesznek reszt, hiszen csak ezek oroklodnek. A dinamikus kotes az a muvelet, amikor futasi idoben dinamikusan kerul kivalasztasra az adott tipus, es ez alapjan az ehhez tartozo muvelet (ha pl. egy muveletet definialtunk egy osztalyban, es egy leszarmazottban felulirtuk azt). 36. Mit jelent az oroklodes? ~~~~~~~~~~~~~~~~~~~~~~~~ Az oroklodes az Ada83-bol ismert tipusszarmaztatas fogalmara epul. Itt ha egy tipusbol szarmaztatott tipus orokli a szulo tipus muveleteit, es definalhatunk hozzajuk ujakat. Ada95-ben mar ujabb komponensekkel is bovithetjuk a tipust a jelolt (tagged) tipusok segitsegevel. 37. Globalis valtozok vedelme parhuzamos processzek eseten hogyan valosithato meg? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Legcelszerubb vedett objektumokkal megvalositani. Ehhez pedig irni kell egy olvaso fuggvenyt, es egy iro eljarast. A vedett tipus egyszerre tobb olvasast is engedelyez. Irast azonban csak egyet, es akkor olvasas sem tortenhet. Igy a valtozo (amelyet a vedett objektum private reszebe celszeru rakni) megfelelo vedelmet kap. 38. Hogyan lehet az Ada95-ben fuggvenyekre mutato pointert definialni, hogy kell ezt hasznalni? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Szintaxisa: type TPFunc is access function(parameterlista) return tipus; vagy type TPFunc is access function return tipus; Egy megfeleloen deklaralt eljarasra allithatunk mutatot az eljaras 'Access attributumaval, ami az eljaras kodjanak kezdocimet adja meg. A kovetkezo ertekadas csak akkor hajthato vegre, ha a fuggvenyre mutato tipus ugyanabban a blokkban volt deklaralva, mint maga a fuggveny: ... PFunc : TPFunc; ... PFunc := F'Access; ... Pelda: 88-89. oldal Eljarasok eseten a szintaxis: type TPProc is access procedure(parameterlista); vagy type TPProc is access procedure; Az operatorokra csak akkor hivatkozhatunk (pl. "+"'Access) ha atlapoltuk oket. 39. Hogyan lehet az Ada95-ben az oroklodest es a dinamikus kotest megvalositani? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Az Ada95-ben osztalyszintu tipusokkal lehet megvalositani egy jelolt T tipus eseten a tipus es az osszes belole szarmaztatott tipus polimorfikus kezeleset. Ha dinamikusan kotest akarunk alkalmazni, az adott eljaras hivasaban az objektumot implicit modon at kell konvertalni T'Class tipusuva. Peldaul ha T egy jelolt tipus egy Kiir(vmi: T) primitiv muvelettel, T1 T egy leszarmazottja, ami feluldefinialja a Kiir muveletet Kiir(vmi: T1), akkor ha T-nek van egy Szoveg(vmi: T) muvelete, ami meghivja a Kiir muveletet. Tovabba van egy a: T1 tipusu objektumunk, akkor a Szoveg(a) muveletben a T-ben definialt Kiir hajtodik vegre (statikus kotes), ezzel szemben ha igy hivjuk meg az eljarast: Szoveg(T'Class(a)), akkor a Szoveg a T1 tipus feluldefinialt Kiir muveletet fogja meghivni (ez a dinamikus kotes). 40. Mi a 'T'Class' jelentese? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ha T egy jelolt tipus, a T'Class-t egy un. osztalyszintu tipusnak nevezzuk, mely ertekhalmaza a T tipusbol, mint gyokerbol indulo szarmazastatasi fan talalhato minden specifikus tipus tipusertekhalmazanak unioja. Az osztalyszintu tipusok segitsegevel valosithato meg a dinamikus kotes az Ada95-ben. 41. Mi a szerepe az Ada95-ben a Controlled tipusoknak? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A Controlled illetve Limited_Controlled osztalyokbol kiterjesztessel oldhato meg konstruktoros, destruktoros, illetve Controlled eseten egy Adjust nevu, az ertekadas utan automatikusan meghivodo eljarast tartalmazo osztaly keszitese. A konstruktor, Initialize, az objektum letrehozasa utan, a destruktor, Finalize, felszabaditas elott hivodik meg. A ket tipus az Ada.Finalization csomagjaban van definialva, a tipusok absztraktak, jeloltek, atlatszatlanok, illetve a Limited_Controlled korlatozott is. 42. Mutasson peldat arra, hogy miert jo a generic uj parametere, a generic package peldanya! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Az Ada95-ben uj megoldaskent szerepel, hogy generic package-nek lehet parameternek adni egy masik generic package egy peldanyat. Ez azert hasznos, mert igy nem kell minden tipust, illetve eljarast kulon megnevezni, ahhoz hogy az uj generic package-unkben hasznalhassuk oket. Peldaul ha a kepernyore akarunk formazottan irni szamokat, nem kell a generic-nek kulon parameterben megadni az Integer tipust, es az egy Integer_IO peldanyositasbol jovo muveleteket, hanem eleg az Integer tipust es a fenti Integer_IO peldanyt atadni. 43. Mi a kulonbseg a public es a private gyerek package kozott? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A titkos gyermek csak a leszarmazotti fan belul lathato, az azon kivuli programreszek elol elrejti az implementacios reszleteket, igy titkos gyermekeken keresztul kulso egysegek nem ferhetnek hozza rejtett informaciokhoz sem. Ha P, P.C1, P.C2 csomagok, es P.C2 titkos gyermeke P-nek, akkor P.C1 semmilyen modon nem erheti el P.C2-t, with utasitasban sem szerepelhet. 44. Mi a protected tipus jelentosege? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Segitsegukkel alkalmazhatjuk a kolcsonos kizarast szamunkra fontos eroforrasokra, meghozza egyszerubben es hatekonyabban, mint ahogy azt taszkokkal meg tudnank csinalni. A vedett objektumnak lehetnek adattagjai; eljarasai es belepesi pontjai, amire a kolcsonos kizaras teljesul, tovabba fuggvenyei, amik konkurrensen vegrehajthatok. Azonban nincsen kizarva nyelvileg az, hogy a fuggveny adattagot modositson, ez azonban a vedett tipus hasznalhatosagat veszelyezteti.