Programozási módszertan

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Programozási módszertan"

Átírás

1 1. fejezet Programozási módszertan elmélete 1.1. Az absztrakt adattípus egy matematikai modellje. (Univerzális algebra és absztrakt adattípus). Az adattípus egy komplex leírása, típusosztály morfizmusdiagramja. Interfész leképezések, típusöröklődések Az absztrakt adattípus definíciója 1. Definíció. Σ = (S, OP ) szignatúra, ha: S: szortok (halmaznevek) véges halmaza OP : függvényszimbólumok (műveleti jelek) véges halmaza w OP : w : s 1... s k s (s 1... s k, s S, k 0) Ha S = 1, akkor homogén szignatúra, ha S > 1, akkor heterogén szignatúra. 2. Definíció. Alg = (S A, OP A ) a Σ = (S, OP ) szignatúra feletti Σ-algebra, ha s S A S S A halmaz S A = {A s s S} véges w : s i s j... s k s l OP : w A : A si A sj... A sk A sl OP A OP A = {w A w OP } véges 1

2 Ha S A = 1, akkor homogén univerzális algebra, ha S A > 1, akkor heterogén univerzális algebra. Ha a leképezés totális függvény, akkor totális algebra, egyébként parciális algebra???. Adott Σ szinatúrához tartozó összes Σ-algebrák osztálya: Alg(Σ). 3. Definíció. Specifikáció: ha Σ = (S, OP ) egy szignatúra, E a szemantikát meghatározó specifikáció (axiómák, műveletek kiszámítási szabályainak vagy elő- és utófeltételeinek halmaza), akkor SP EC = (Σ, E) egy specifikáció. A specifikáció szokásos jelölése: specnév = sorts: S oprs: OP eqns: E 4. Definíció. Az (S A, OP A ) Σ-algebra egy absztrakt adattípus (ADT), ha: S A = {A 0,..., A n }, ahol A 0 kitüntetett alaphalmaz (TOI), a típusobjektumok halmaza, A 1,... A n pedig a kisegítő alaphalmazok, a típusobjektumok feléptítésében, jellemzésében játszanak szerepet. OP A = {f 0,..., f m } az A 0,... A n -en értelmezett parciális függvények halmaza, f 0 : A 0 konstans operáció A 0 megkonstruálható, azaz minden eleme előáll f 0,..., f m véges kompozíciójaként Ha S A = 1, akkor egyszerű ADT (homogén univerzális algebra, csak TOI van), egyébként összetett ADT (heterogén univerzális algebra). Operációk típusai: Konstruktor: OP A -ból az a minimális függvényhalmaz, amik véges kompozíciójával az egész A 0 előáll. Nem biztos, hogy egyértelmű. Jele: F C. Szelektor: F S = OP A \F C A típusosztály Az adattípus leírása lehet absztrakt vagy konkrét. Absztrakt szinten csak a műveletek jelentését adjuk meg, a megvalósítással nem törődünk. Konkrét szinten megadjuk az implementációt is. A típusosztály ennek a két megjelenési formának az egyesítése. 2

3 A specifikációmorfizmus segítségével a típusosztály leírása rövidebb lehet. 5. Definíció. Σ = (S, OP ) és Σ = (S, OP ) két szignatúra, ekkor µ : Σ Σ szignatúramorfizmus Σ és Σ között, ha: µ = (µ S, µ OP ) µ S : S S µ OP : OP OP n : s 1... s k s OP : µ OP (n) = m : µ S (s 1 )... µ S (s k ) µ S (s) OP 6. Definíció. SP EC = (Σ, E) és SP EC = (Σ, E ) két specifikáció. Ekkor µ : SP EC SP EC egy specifikációmorfizmus, ha: µ = (µ S, µ OP, µ E ) µ egy (S, OP ) (S, OP ) szignatúramorfizmus kiterjesztése termekre µ E : E E µ(e) E A specifikációmorizmus segítségével a típusosztály leírása tömörebb, illet az öröklődés kifejezésére is használhatjuk. 7. Definíció. A Típusosztály egy (P AR, EXP, IMP, BOD, e, i, eb, ib) nyolcas, ahol PAR: specifikáció. A típusosztály paraméterei, és azokkal szemben támasztott elvárások. Pl elsőbbségi sorban az egyes elemek között legyen rendezés. C++-ban template-paraméterek. EXP: export felület, kitüntetett szortú specifikáció. A típusobjektumok halmazának (TOI) és a rajtuk értelmezett műveletek definíciója, pl verem esetén a veremműveletek szintaxisa, szemantikája. C++-ban public interfész. IMP: import felület, specifikáció. Azon adattípusok specifikációja, amikkel ábrázolni szeretnénk a típusosztályt. C++-ban #include BOD: body, kitüntetett szortú specifikáció. Az EXP-ben secifikált műveletek megvalósítása az IMP-beli típusokkal. Pl push műveletre új elem felvétele a vektorba, és a veremmutató mozgatása. C++-ban memberfüggvények megvalósítása. 3

4 e : P AR EXP i : P AR IMP eb : EXP BOD kintüntetett szortú specifikációmorfizmus ib : IMP BOD utóbbi négy függvény specifikációmorfizmusok (interfészleképezések), amelyekre igaz, hogy eb e = ib i mind a négy tartalmazás, de eb ábrázolás is???kitüntetett szortú specifikáció mit jelent? Interfészleképezések fajtái Az interfészleképezések specifikációmorfizmusok, amelyek két specifikáció között hatnak. Fajtái: Üres Identitás Újraelnevezés: szort vagy operáció új nevet kap. Jelölése: sorts [oprs]: újnév = réginév Tartalmazás: bővül a szortok, operációk vagy egyenletek halmaza Ábrázolás: a class szort helyére más szortok Descartes-szorzata kerül, pl eb(verem) = vector nat A tartalmazás segít a tömörebb leírásban, amit az egyik részben specifikáltunk, azt nem ismételjük meg a másikban, mert a tartalmazásmorfizmus áthozza Típusöröklődés Típusosztályok definíciói gyakran nagyon hasonlítanak egymásra. Egyes esetekben arra is van lehetőség, hogy már meglévő, hibátlanul működő szolgáltatásokat egy osztálytól örökléssel átvegyünk. Az öröklődést specifikációmorfizmusokkal definiáljuk. Két fajtája van: specializációval és újrafelhasználással történő öröklés 8. Definíció. Típusöröklődés: ha C 1 = (P AR 1, EXP 1, IMP 1, BOD 1, e 1, i 1, eb 1, ib 1 ) és C 2 = (P AR 2, EXP 2, IMP 2, BOD 2, e 2, i 2, eb 2, ib 2 ) két, azonos szignatúrájú típusosztály, ekkor: 4

5 C 2 a C 1 -ből specializációval származik, ha f : EXP 1 EXP 2 kitüntetett szortú specifikációmorfizmus C 2 a C 1 -ből újrafelhasználással származik, ha f : EXP 1 BOD 2 kitüntetett szortú specifikációmorfizmus f mindkét esetben lehet identitás, újraelnevezés és tartalmazás 1.2. A típusosztály morfizmusdiagramjának elemzése. Az absztrakt típusspecifikáció elemzése. A korrekt realizáció. A kettős specifikációval kapcsolatos alapfogalmak. Reprezentáció, a reprezentáció elemzése. Implementáció, az implementáció elemzésére vonatkozó tételek A morfizmusdiagram elemzése 1. eb: identitás 2. eb: ábrázolás és tartalmazás 3. e: tartalmazás, eb: ábrázolás és tartalmazás A többi specifikáció és specifikációmorfizmus üres. A megvalósítás kívülről látható, ha eb identitás, és kívülről nem látható (beburkolás), ha eb ábrázolás és tartalmazás A specifikáció elemzése Egy adott típusosztály elemzése három lépésből áll: 1. absztrakt specifikáció elemzése (koncepciónak megfelel-e a specifikáció) 2. reprezentáció elemzése (absztrakt típusobjektumok jól vannak-e reprezentálva a konkrét típusobjektumokkal) 3. implementáció (az EXP műveleteit jól implementálja-e BOD konkrét szinten) 5

6 Az absztrakt specifikáció elemzése Az informális elvárásoknak megfelel a formális leírás? Adott: SP EC szokásosak. = (Σ, E), ahol Σ = (S, OP ), és S, OP és E a Az osztály EXP része algebrai axiómákkal adott. (Algebrai, előfeltételek-utófeltételes és procedurális specifikáció egyre konkrétabbak, EXP -et szokás absztrakt, BOD-ot pedig konkrét specifikációnak nevezni.) Adott az exportfelület absztrakt specifikációja: Σ = (S, OP ), Alg = (S A, OP A ) és SP EC A = (S A, OP A, E A ), ahol E A axiómákkal van megadva. Másik jelölés: SP EC a = d a = (A, F, E a ) = ({A 0,..., A n }, {f 0 : A 0,...}, {... α(a) f s (f c (s)) = h(a)...}), ahol a A i... A k Kérdések az absztrakt specifikációval kapcsolatban. A specifikáció konzisztens? (axiómák között nincs-e ellentmondás, és nem kell-e újakat hozzávenni) Errormentes? A műveletek parciálisak, néha error -t adnak. Ha a művelet argumentuma error, akkor az eredménye is error. Hogyan terjednek ezek a hibák? Minden típusobjektumot előállít F C, tehát a megválasztása helyes? Az absztrakt specifikáció megfelel a koncepciónak? Bizonyítani nem lehet a koncepció informális volta miatt. Az axiómák nem rögzítenek minden elvárt tulajdonságot. Tételeket kell bizonyítani. Ezeknek két fajtája: típusobjektumok egyenlősége és paraméterek egyenlősége 9. Definíció. Egyenlőségaxióma: legyen d a = (A, F, E a ) egy specifikáció és a 1, a 2 A 0. Ekkor a 1 = a 2 (a 1 = f 0 a 2 = f 0 ) f S F S : f S (a 1 ) = f S (a 2 ). 10. Definíció. Kibővített egyenlőségaxióma: nem követeli meg az összes szelektor egyenlőségét, például vektornál csak a read-et kell. Ez tételként bizonyítható. 6

7 11. Definíció. Strukturális indukció: legyen d A = (A, F, E A ) egy specifikáció és P egy A 0 -n értelmezett predikátum. Ha P (f 0 ) = igaz és a A 0 : akkor a A 0 : P (a) = igaz. P (a) = igaz f C F C : P (f C (a)) = igaz, Kettős specifikáció Adott a koncepció és absztrakt specifikáció, és feltételezzük, hogy utóbbi helyes a koncepció szerint. Megírjuk a konkrét specifikációt így, kérdés, hogy megfelel-e az absztraktnak. A típusosztály specifikációja az absztraktot (EXP) és a konkrétat (BOD) is tartalmazza, ezért kettős specifikáció a neve. Itt dől el, hogy helyes-e a konkrét. Ehhez kell a reprezentáció és a helyesség fogalma Reprezentáció 12. Definíció. Reprezentáció: legyen d a = (A, F, E a ) és d c = (C, G, E c ) két azonos szignatúrájú specifikáció, és φ : C A morfizmus. Ekkor a C objektumhalmaz az A egy φ melletti reprezentációja, ha φ szürjektív.???a specifikáció nem szignatúra+műveletek? Megjegyzés: A = {A 0,..., A n }, C = {C 0,... C n } és φ = (φ 0,..., φ n ) egy függvénycsalád, φ i : C i A i, de ezek közül általában csak φ 0 nem identitás, ezért φ 0 helyett φ-t írunk. 1. Tétel. Elégséges feltétel a reprezentációra: legyen d a = (A, F, E a ) és d c = (C, G, E c ) két azonos szignatúrájú specifikáció, és φ : C A morfizmus. Amennyiben f C F C : c C esetén (g C (c) C f C (φ(c)) A) f C (φ(c)) = φ(g C (c)) teljesül, úgy a C objektumhalmaz az A egy reprezentációja. 13. Definíció. A reprezentációs függvény implicit definíciója: f 0 = φ(g 0 ) f C F C : f C (φ(c)) = φ(g C (c)) 14. Definíció. A reprezentációs függvény explicit (rekurzív) alakja: tegyük fel, hogy g c, g s : c = g c (g s (c)), ekkor: φ(c) = ifc = g 0 thenf 0 elsef C (φ(g s (c)))fi Explicit módon több alakban is meg lehet adni a reprezentáló függvényt, de azok ekvivalensek lesznek. 7

8 A reprezentációelemzés feladata φ szürjektív-e bizonyítani hogy a φ-k különböző definíciói ekvivalensek ha c 1 = c 2, akkor igaz-e, hogy φ(c 1 ) = φ(c 2 ) (egyenlőségaxióma) a műveletek konkrét és absztrakt változata ugyanazt adja-e Helyesség 15. Definíció. Helyesség: legyen d a = (A, F, E a ) és d c = (C, G, E c ) két azonos szignatúrájú specifikáció, és φ : C A morfizmus. Ekkor ha 1. C az A reprezentációja φ mellett, 2. f i F, c C φ(c) A f i (φ(c)) értelmezve van, akkor g i (c) is, 3. f i F, c C c = g i (c) c C φ(c) A φ(c ) A, akkor f i (φ(c)) = φ(g i (c)) akkor d c d a szerint helyes. Ez a definíció azt mondja, hogy g az f hatását szimulálja a konkrét térben, de definiálható azonos szemantikával is a helyesség. A specifikációk egyre közelebb kerülnek a megvalósításhoz, de minden lépésben helyességet kell bizonyítani. 2. Tétel. Az algebrai axiómák átírhatók elő-utófeltételes formára. Módszer: 1. legyen I(a) invariáns 2. E a = {..., α(a) f S (f C (a)) = h(a),..., I a (f C (a)) f C (a) = undef ined } 3. α(a) f S (f C (a)) = h(a) átírása: {α(a) b = f C (a)}b = f S (b){b = h(a)} 4. f 0 kezdeti objektum szemantikája: {true}a = f 0 {I(a)} 5. f C F C konstruktor szemantikája: {I(f C (a))}b = f C (a){i(b) b = f C (a)} 3. Tétel. Elő-utófeltételes konkrét specifikáció (d c ) elő-utófeltételes absztrakt specifikáció (d a ) szerinti helyessége (elégséges feltétel): I c (c) I a (φ(c)) post g0 (c) I c (c) 8

9 post g0 (c) post f0 (φ(c)) I c (c) pre fi (φ(c)) pre gi (c) I c (c) pre fi (φ(c)) post gi (c, c ) I c (c ) post fi (φ(c), φ(c )) I c (c) pre gi (c) post gi (c, c ) I c (c ) fennállása esetén d c helyes d a szerint. 4. Tétel. Elségséges feltétel elő-utófeltételes absztrakt és procedurális konkrét specifikáció helyességére: adott d a = (A, F, E a ) és d c = (C, G, E c ) azonos szignatúrával. E a = {{true}a = f 0 {post f0 (a)},..., {pre fi (a)}a = f i (a){post fi (a, a )},...}, E c = {..., Q gi,...}. Az invariánsok I a és, I c, φ : C A morfizmus. Ekkor ha c C : I c (c) I a (φ(c)) { true }Q 0 {post f0 (φ(c)) I c (c)} f F : {pre fi (φ(c)) I c (c)}q i {post fi (φ(c), φ(c )) I c (c )} akkor d c helyes d a szerint Az implementációelemzés feladata A kettős specifikáció helyességének bizonyítása.??? 1.3. Determinisztikus és nemdeterminisztikus programok. Szintaxis, szemantika, helyességbizonyítás, Hoare-módszer Determinisztikus és nem determinisztikus programok Szekvenciális program: determinisztikus program valódi program strukturált program nemdeterminisztikus program 16. Definíció. A valódi programot a program gráfjával definiáljuk, amely: összefüggő van egy start és egy end csúcsa minden ponton keresztül vezet út a start-ból az end-be Az előbbi két csúcson kívül a következők szerepelhetnek a gráfban: 9

10 függvény csomópont elágazás gyűjtő csomópont???rajzolni Szintaxis 17. Definíció. Strukturált program szintaxisa rekurzív BNF-formában: S ::= skip y f(x, y) S 1 ; S 2 if α(x, y) then S 1 else S 2 fi while α(x, y) do S 1 od Ahol S, S 1, S 2 determinisztikus programok, X az S bemenő adatainak halmaza és x X, Y az S változóinak halmaza és y Y, f(x, y): kifejezés, α(x, y): x-től és y-tól függő, kvantorfüggetlen logikai kifejezés. Itt x bemenő, y változó. 5. Tétel. Strukturált programozás alaptétele (Böhm, Jacopini): Minden valódi programhoz vele ekvivalens strukturált program készíthető. 18. Definíció. Nemdeterminisztikus program szintaxisa: S ::= skip b y f(x, y) S 1 ; S 2 if α 1 S 1... α 1 S n fi Ahol do α 1 S 1... α 1 S n od do S B S E ; exit od α i (x, y): filter vagy őrfeltétel, x-től és y-tól függő, kvantorfüggetlen logikai kifejezés (a fenti BNF leírásban csak α i -nek rövidítve), if α 1 S 1... α 1 S n do α 1 S 1... α 1 S n fi nemdeterminisztikus kiválasztás, od nemdeterminisztikus iteráció, do S B S E ; exit od kilépéses nemdeterminisztikus iteráció az S B az α 1 S 1... α 1 S n magjának a rövidítése.???kilépéses iteráció szemantikája? 10

11 Szemantika Jelölések: S program állapotainak halmaza: Σ, σ Σ állapot, átmenet: S, σ S, σ (S maradékprogram), ha σ végállapot, akkor a maradékprogramot T jelöli üres program: E, hibás állapot: σ fail, divergencia: σ, σ(α): α predikátum értéke σ állapotban σ y f(x,y) : σ állapotban y helyére f(x, y) helyettesítése. A programok szemantikáját ezekkel a jelölésekkel kifejezett axiómákkal adjuk meg. 19. Definíció. A determinisztikus, strukturált programok szemantikai axiómái: skip, σ E, σ y f(x, y), σ E, σ y f(x,y) S 1, σ 1 S 2, σ 2 S 1 ; S, σ 1 S 2 ; S, σ 2 σ(α) = "true" if α then S 1 else S 2 fi, σ S 1, σ σ(α) = "true" if α then S 1 else S 2 fi, σ S 2, σ σ(α) = "true" while α do S od, σ S; while α do S od, σ σ(α) = "true" while α do S od, σ E, σ 20. Definíció. A nemdeterminisztikus programok szemantikai axiómái: σ(b) = "true" b y f(x, y), σ E, σ y f(x,y) σ(b) = "true" b y f(x, y), σ E, fail 11

12 i [1... n] : σ(α i ) = "true" if α 1 S 1... α n S n fi, σ S i, σ i [1... n] : σ(α i ) = "true" if α 1 S 1... α n S n fi, σ E, fail i [1... n] : σ(α i ) = "true" do α 1 S 1... α n S n od, σ S i ; do α 1 S 1... α n S n od, σ i [1... n] : σ(α i ) = "true" do α 1 S 1... α n S n od, σ E, σ Helyességbizonyítás 21. Definíció. S 0 program végrehajtási sorozata σ 0 kiindulási állapottal: τ : S 0, σ 0 S 1, σ 1..., ahol minden átmenethez létezik egy (S i, α i r i, S i+1 ) tranzakció úgy, hogy σ(α i ) = "true" és σ i+1 = r i (σ i ) 22. Definíció. V al(τ) := σ n ha S n, σ n az utolsó elem, S n = T, σ n Σ fail ha S n, σ n az utolsó elem, S n T, (fail Σ) ha a végrehajtási sorozat végtelen 23. Definíció. comp(s)(σ): az S összes, σ kezdőállapothoz tartozó végrehajtási sorozatának halmaza. 24. Definíció. Szemantikai függvény (program jelentése): M[S](σ) = {V al(τ) τ comp(s)(σ)} Ha S végrehajtása sikertelen: fail M[S](σ), ha S végrehajtása divergens: M[S](σ). P (Σ): parciálisan helyes eredményállapotok halmaza, ekkor parciális helyességi szemantika: M[S] : Σ P (Σ), teljes helyességi szemantika: M[S] : Σ P (Σ) { } 12

13 25. Definíció. S program specifikációja: (φ, ψ) elő- és utófeltételek, azaz φ(σ 0 ) = "true" σ M[S](σ 0 ) : ψ(σ) = "true" 26. Definíció. S program eredményes, ha σ Σ : φ(σ) fail / M[S](σ) 27. Definíció. S program befejeződik, ha σ Σ : φ(σ) / M[S](σ) 28. Definíció. S program (φ, ψ) specifikáció szerint parciálisan helyes ({φ}s{ψ}), ha minden, az előfeltételnek megfelelő helyről indítva helyes eredményt ad, ha befejeződik. Formálisan: σ Σ : (φ(σ) = "true" σ M[S](σ)) ψ(σ ) = "true" 29. Definíció. S program (φ, ψ) specifikáció szerint teljesen helyes ({{φ}}s{{ψ}}), ha minden megfelelő helyről indítva befejeződik, minden befejeződés megfelel az utófeltételnek. Formálisan: σ Σ : φ(σ) {fail, } M[S](σ) = σ Σ : (φ(σ) = "true" σ M[S](σ)) ψ(σ ) = "true" A Hoare-módszer Dedukciós módszer ( axiómák+következtetési szabályok tétel ) a strukturált programok helyességének bizonyítására. 30. Definíció. A Hoare-módszer axiómái: {P (x, y)}skip{p (x, y)} {P (x, g(x, y))}y g(x, y){p (x, y)} 31. Definíció. A Hoare-módszer következtetési szabályai: {P }S 1 {Q 1 } {Q 1 }S 2 {Q 2 } {P }S 1 ; S 2 {Q 2 } {P α}s 1 {Q} {P α}s 2 {Q} {P }if α then S 1 else S 2 fi{q} 13

14 {P α}s{p } (P α) Q {P }while α do S od {Q} P P 1 {P 1 }S{Q 1 } Q 1 Q {P }S{Q} Ezek alapján csak parciális helyességet lehet bizonyítani, a teljes helyességhez be kell vezetni minden ciklushoz invariánst (I(x, y)), terminálófüggvényt (E(x, y)), és a következő szabályt: (P (x, y) I(x, y)) (I(x, y) E(x, y) W ) {{I(x, y) α(x, y) E = E(x, y)}}s{{i(x, y) E(x, y) < E}} I(x, y) α(x, y) Q(x, y) {{P (x, y)}}while α(x, y) do S od {{Q(x, y)}} Ahol W egy <: W W rendezési relációval (tranzitív, irreflexív, antiszimmetrikus) jól rendezett halmaz, azaz nincs benne... < w 1 < w 0 sorozat. 6. Tétel. Strukturált programok esetén a Floyd-módszer ekvivalens a Hoare-módszerrel A Floyd-módszer???kell? 1.4. Párhuzamos és osztott programok. Szintaxis, szemantika, helyesség bizonyítására szolgáló módszerek. Párhuzamos rendszerek alapmodelljei: kölcsönös kizárás, termelő-fogyasztó rendszer, író-olvasó modell. Kiéheztetésmentesség Párhuzamos programok szintaxisa, szemantikája 32. Definíció. Párhuzamos végrehajtás: a parbegin... parend blokk. Szintaxisa: parbegin S 1... S n parend, ahol S 1,..., S n párhuzamos programok. Szemantikája: S 1,..., S n párhuzamosan hajtódnak végre. 14

15 Fair ütemezés: Ha egy művelet előfordulása végtelen sokszor megtörténhet egy végrehajtási sorozatban, akkor az végre is fog hajtódni. A blokk akkor ér véget, ha mindegyik S i véget ért. 33. Definíció. Kommunikációs utasítás: a párhuzamosan futó folyamatok kommunikációja osztott változókon keresztül történhet. Ezek változók, melyeket több folyamat is használ. 34. Definíció. Várakoztató utasítás: az await. Szintaxisa: await α then S ta α S : együttműködés await true then S ta S : kölcsönös kizárás await α then SKIP ta wait α : szinkronizáció Szemantikája: Ha az őrfeltétel nem teljesül, a végrehajtás az awaitnél vár. Ha a várakozó folyamatok közül valamelyikeknek az őrfeltétele igazzá válik, véletlenszerűen kiválasztásra kerül az egyik, és S atomi módon végrehajtódik. Az atomi módon végrehajtandó utasítások a következők: logikai kifejezés kiértékelése, változó olvasása vagy írása, valamint az await utasítás A programok úgy viselkednek, mintha az atomi utasítások valamilyen sorrendben szekvenciálisan futnának le, ez az összefésüléses szemantika Helyességbizonyítás Az Owicki Gries módszer a Hoare-módszer kiterjesztése. 35. Definíció. Az await szabály (parciális és teljes helyességhez is). {Q α}s{r} {Q} await α then S ta {R} 36. Definíció. A parbegin... parend szabály (parciális helyességhez). ahol {Q 1 }S 1 {R 1 },..., {Q n }S n {R n }, NI, { n i=1 Q i} parbegin S 1... S n parend { n i=1 R i}, 15

16 N I = Az előző bizonyítások nem interferálnak. * = parbegin S 1... S n parend-ben minden await-en kívüli értékadás betartja az egy kritikus hivatkozás szabályát (egy értékadáson belül nem szabad ugyanazt a közös változót olvasni és írni is, pl. x := x + 1) A következő két definícióban utasítás alatt vagy await utasítást, vagy await utasításon kívüli értékadást értünk. 37. Definíció. Utasítás NI bizonyítással: Az u utasítás nem interferál a {Q}S{R} bizonyítással, ha annak egyetlen köztes feltételét sem rontja el, azaz: {q}s{r} tételre a {Q}S{R} bizonyításból: {q pre(u)}u{q} {r pre(u)}u{r} 38. Definíció. Utasítások NI: A {Q 1 }S 1 {R 1 },..., {Q n }S n {R n } bizonyítások nem interferálnak, ha i [1..n], u S i : u NI {Q j }S j {R j } (j i [1..n]) 39. Definíció. A parbegin... parend szabály (teljes helyességhez). ahol {{Q 1 }}S 1 {{R 1 }},..., {{Q n }}S n {{R n }}, NI,, H {{ n i=1 Q i}} parbegin S 1... S n parend {{ n i=1 R i}}, N I = Az előző bizonyítások nem interferálnak teljes helyességi értelemben. * = mint fent H = parbegin S 1... S n parend holtpontmentes A következő két definícióban utasítás alatt vagy await utasítást, vagy await utasításon kívüli értékadást értünk. 40. Definíció. Utasítás NI bizonyítással: Az u utasítás nem interferál a {{Q}}S{{R}} bizonyítással, ha annak egyetlen köztes feltételét sem rontja el, és egyik ciklus terminálófüggvényét sem növeli, azaz: és {{q}}s{{r}} tételre a {{Q}}S{{R}} bizonyításból: {{q pre(u)}}u{{q}} {{r pre(u)}}u{{r}} ciklusra az S-ből: {f = c pre(u)}u{f c}, ahol f a ciklus terminálófüggvénye a {{Q}}S{{R}} bizonyításban. 16

17 41. Definíció. Utasítások NI: ugyanaz, mint parciális helyességnél. 42. Definíció. Holtpontmentes program: Az S párhuzamos program a Q előfeltétellel holtpontmentes, ha nincs olyan végrehajtása, mely Q-ból indulva holtpontba jutna. 7. Tétel. Elégséges feltétel párhuzamos program holtpontmentességéhez: Legyen S egy párhuzamos program. Címkézzük meg az utasításait: A legkülső szinten levő await-eket, (tehát amik nincsenek parbegin... parend blokkban): A j : await α j then B j ta (j [1..n]) A legkülső szinten levő parbegin... parend blokkokat: c k : parbegin S k1... S kmk parend (k [1..m]) Tekintsük az S parciális helyességének egy bizonyítását (elő- és utófeltételek előállításához)! D(S) := n m (pre(a j ) α j ) D 1 (c k ) j=1 (Szemléletesen: valamelyik await vagy parbegin-parend várakozik.) m k k=1 D 1 (c k ) := (post(s ki D(S ki )) i=1 m k i=1 D(S ki ) (Szemléletesen: mindegyik ág véget ért, vagy vár, és valamelyik vár.) Ekkor D(S) = f alse S holtpontmentes Osztott programok szintaxisa, szemantikája Osztott és párhuzamos program közötti különbség. párhuzamos programnál a kommunikáció gyakori és gyors (itt: kommunikáció közös változókkal), osztott programoknál a kommunikáció ritka és költséges (itt: kommunikáció üzenetküldéssel). 17

18 A kommunikációs csatorna utasításai. Őrfeltételes küldő utasítás Szintaxisa: b;c!e Szemantikája: A program az utasításhoz érve megvárja a b őrfeltétel teljesülését, majd a c csatornára küldi az e értéket. Az utasítás blokkolódik, ha a túloldalon nincs várakozó fogadó utasítás. Jelölés: c!e := true;c!e Őrfeltételes fogadó utasítás Szintaxisa: b;c?x Szemantikája: A program az utasításhoz érve megvárja a b őrfeltétel teljesülését, majd beolvas egy értéket a c csatornáról az x változóba. Az utasítás blokolódik, ha a túloldalon nincs várakozó küldő utasítás. Jelölés: c?x := true;c?x 43. Definíció. Osztott program: a parbegin S 1... S n parend program osztott, ha: Az S 1,..., S n programok nem tartalmaznak közös változókat: var(s i ) var(s j ) = (i j [1..n]) A folyamatok pontról-pontra összekötöttek: channel(s i ) channel(s j ) channel(s k ) (i, j, k [1..n]) Párhuzamos rendszerek alapmodelljei Kölcsönös kizárás Feladat: n folyamat használ 1 erőforrást, de egyszerre csak egyikük használhatja. Az erőforrás használata a kritikus szakasz. A folyamatok ciklikusan vannak kritikus és nem kritikus szakaszban. Peterson megoldása n = 2-re. s:=1; y 1 :=0; y 2 :=0; parbegin S 1 S 2 parend; while true do S 1 : 18

19 {nem kritikus szakasz} y 1 :=1; s:=1; wait y 2 = 0 s 1 {kritikus szakasz} y 1 := 0; end while S 2 : while true do {nem kritikus szakasz} y 2 :=1; s:=2; wait y 1 = 0 s 2 {kritikus szakasz} y 2 := 0; end while Dijkstra megoldása. s:=1; {az erőforrást egyszerre 1 folyamat használhatja} parbegin S 1... S n parend; while true do {nem kritikus szakasz} P(s); {kritikus szakasz} V(s); end while Termelő fogyasztó rendszer S i : P(s) : s > 0 s := s 1 V(s) : s := s + 1 Feladat: n termelő és m fogyasztó folyamat használ egy k kapacitású tárolót. Megoldás. s:=0; {ennyi áru van éppen raktáron} parbegin T 1... T n F 1... F m parend; 19

20 T i : while true do {termelés} s < k berak; s := s + 1 ; end while F i : while true do s > 0 kivesz; s := s 1 ; {feldolgozás} end while Író olvasó modell Feladat: n író és m olvasó folyamat használ egy erőforrást. Egyszerre legfeljebb egy folyamat írhat, ami közben tilos olvasni. Egyszerre több folyamat is olvashat, de közben tilos írni. Megoldás. A megoldásban kiéheztetés előfordulhat: az olvasók monopolizálhatják a rendszert. w:=1; {író szemafor} sr:=1; {olvasó szemafor} rcnt:=0; {éppen olvasók száma} parbegin W 1... W n R 1... R m parend; W i : while true do {dolgozik} P(w); {ír} V(w); end while R j : while true do P(sr); 20

21 rcnt := rcnt + 1; if rcnt = 1 then P(w) end if V(sr); {olvas} P(sr); rcnt := rcnt 1; if rcnt = 0 then V(w) end if V(sr); {dolgozik} end while Kiéheztetés-mentesség 44. Definíció. Kiéheztetés-mentesség: S párhuzamos program, melynek folyamatai ciklikusak. A rendszer egy közös erőforrással rendelkezik, melyet a folyamatok időnként használnak. Ekkor S kiéheztetés-mentes, ha nincs a folyamatoknak egy olyan csoportja, melyek monopolizálhatják az erőforrást. 45. Definíció. Monopolizálás: A folyamatok egy csoportja monopolizálta az erőforrást, ha mindig van köztük olyan, amelyik lekötve tartja az erőforrást, miközben a csoporton kívüli folyamatok egy része folyamatosan várakozik arra. 46. Definíció. Kiéheztetés szempontjából veszélyes utasítások: Utasításoknak egy {A 1,..., A k, B 1,..., B l, C 1,..., C m } (k, l 1; m 0) halmaza kiéheztetés szempontjából veszélyes, ha mind különböző folyamatól való, és A 1,..., A k (az éhes utasítások) await α i then... utasítások, melyek folyamatosan várakozhatnak az erőforrás használatára, mivel folyamatok egy másik csoportja kizárja, hogy α i teljesüljön; B 1,..., B l (az éheztető utasítások) vagy await β i then... utasítások, melyek az erőforrás használatát őrzik, de feltételük teljesül, még ha a csoport más tagja éppen használják is az erőforrást; vagy az erőforrás használatát jelentő utasítások; C 1,..., C m (a kész utasítások) üres utasítások, melyeknél valamelyik S i folyamat befejeződött. 21

22 8. Tétel. Elégséges feltétel a kiéheztetés-mentességhez: S párhuzamos program ciklikus folyamatokkal. S teljes helyességének bizonyítása adott. Ekkor ha {A 1,..., A k, B 1,..., B l, C 1,..., C m } kiéheztetés szempontjából veszélyes utasításhalmazra pre(a 1 ) α 1... pre(a k ) α k pre(b 1 ) β 1... pre(b l ) β l post(c 1 )... post(c m ) = false (azaz A i -k blokkoltak) (azaz B i -k szabadok) (azaz C i -k befejeződtek) teljesül, akkor S kiéheztetés-mentes Nemdeterminisztikus programok: szintaxis, szemantika. Osztott rendszerek alapfogalmai, nyelvi eszközei. Kommunikációs csatorna. Komponens alapú programozás. Ágensrendszerek, kontraktusvezérelt programfejlesztés Nemdeterminisztikus programok: szintaxis, szemantika Lásd 3. tétel Osztott rendszerek A párhuzamos programhoz képest (ami közös változókat használ), az osztott rendszerek kommunikációja költségesebb (csatornákkal történik). Az osztott rendszer külön dolgozó, önálló erőforrásokkal rendelkező komponensek halmaza, melyek időről időre üzeneteket küldenek egymásnak. Fajtái: szinkron, aszinkron és vegyes. Nyelvi eszközei: új folyamatok indítása, csatornautasítások (küldés, fogadás). Kommunikációs csatornák Az üzenetküldés és -váltás fajtái: szinkron üzenetküldés: a küldő blokkolódik aszinkron üzenetküldés: a küldő nem blokkolódik késleltetett szinkron üzenetváltás: szinkron üzenetküldés és aszinkron válasz 22

23 visszahívásos üzenetváltás: aszinkron üzenetküldés és aszinkron válasz A csatornák általában típustalanok, kétirányúak és full duplexek. 47. Definíció. Egy kétirányú csatorna full duplex, ha egyidejűleg mindkét irányban használható. Ellenkező esetben half duplex Komponens alapú programozás A komponens alapú programozás egy szoftvertervezési módszertan. Lényege, hogy a rendszert funkcionális vagy logikai komponensekre bontjuk, és jól definiált interfésszel látjuk el őket a kommunikáció számára. A szoftverkomponens egy szoftver olyan része, amely előre specifikált szolgáltatásokat nyújt az interfészen keresztül. Általában egy osztály vagy osztálykönytár Ágensrendszerek A multiágens-rendszer több, egymással kölcsönhatásban álló ágensből álló rendszer. Egy szoftverágens tulajdonságai: Nem kívülről hívják a metódusait, hanem mindig fut (perzisztens). Ciklikusan megnézi a környezetét, és maga dönti el, hogy mit reagáljon rá (autonóm). Az ágensek kommunikálhatnak egymással: együttműködhetnek, versenghetnek. Viselkedésük célorientált. A multiágens-rendszerek fontos tulajdonsága az emergencia: az ágensek egyszerűek, a kölcsönhatásuk is egyszerű, rendszerszinten mégis komplex jelenségek figyelhetők meg, melyek nehezen jósolhatók meg az ágensek egyszerű felépítéséből Kontraktusvezérelt programfejlesztés A kontraktusvezérelt programfejlesztés egy szoftvertervezési módszer, mely megköveteli, hogy a programot precíz, verifikálható specifikációval lássuk el, azaz már a tervezés során minden eljáráshoz formális elő- és utófeltételeket, minden osztályhoz invariánst írunk. Ekkor az osztályok metódusaival a következő szerződésben állunk: ha teljesítjük az előfeltételt és az invariánst, a metódus visszatérésekor teljesül az utófeltétel és az invariáns. A design by contract kifejezést Bertrand Meyer (az Eiffel tervezője) találta ki. DBC-re tanít a bevprog, a pp és a progmód. 23

24 Ha egy programozási nyelvben lehetőség van az előfeltétel, utófeltétel és invariáns megadására (pl. Eiffel), ekkor ez lehetővé teszi a feltételek ellenőrzését fordítási időben Típusosztály specifikációja konkurens környezetben. Absztrakt specifikációs módszer esemény elvű megközelítés alapján. Alapvető szinkronizációs feladatok megoldásai. Az absztrakt specifikáció elemzése Típusosztály specifikációja konkurens környezetben Konkurens környezetben az objektumok metódusai párhuzamosan is hívhatóak. Ez elronthatja az osztály invariánsát és a program helyességét, ezért az objektumot további védelemmel látjuk el a helytelen használat ellen: meghatározzuk azt is, hogy a típusosztály metódusai milyen sorrendben hívhatók, ez a szinkronizáció. A típusosztály specifikációja konkurens környezetben kiegészül a szinkronizáció specifikációjával, melyet a syn kulcsszó után helyezünk el absztrakt és konkét szinten egyaránt (EXP és BOD). A szinkronizáció többféleképpen specifikálható: Útkifejezésekkel Kontrollmodulokkal Ütemezési predikátumokkal Eseményelvű specifikációval Állapottér módszerével Eseményelvű specifikáció Esemény Egy objektum minden műveletének végrehajtásában 3 fázist, vagyis eseményt különítünk el: request: igénybejelentés a művelet végrehajtására; enter: a művelet végrehajtásának megkezdése; exit: a művelet végrehajtásának befejezése. 24

25 A műveleti azonosító f[i](x) alakú, ahol f a művelet neve; i a művelet végrehajtásának sorszáma; x a művelet szinkronizáció szempontjából fontos paramétere vagy paraméterei (opcionális). Például: f[i] jelentése: az f i-edik aktiválása. f[i](x) jelentése: az f i-edik aktiválása x argumentummal. f[i](x).ex jelentése: f[i](x) exit fázisa. Rendezési klóz Minden művelet minden végrehajtásához 3 eseményt definiáltunk. Feltesszük, hogy egyszerre csak egy ilyen esemény léphet fel, és így az eseményeken az időbeliség alapján teljes rendezés érvényes. A rendezési klóz alakja: A B, ahol A és B események. Jelentése: A megelőzi B-t. A rendezési klóz alakja argumentumkorlátozással: R(x, y) f[i](x).χ g[i](y).ϱ Jelentése: f[i](x).χ megelőzi g[i](y).ϱ-t, és az argumentumokra fennáll az R(x, y) reláció. Specifikáció Az eseményelvű specifikáció egy rendezési klózokból előálló elsőrendű logikai formula. Jelentése: a futtatókörnyezet feladata biztosítani, hogy a logikai formula teljesüljön a program futása során. Ha egy enter esemény hatására a szinkronizációs specifikáció elromlana, a művelet megkezdése előtt a hívó folyamat blokkolódik. Természetes axiómák, melyeket a specifikáció megadásánál nem szokás kiírni, de igazak: i : f[i].req f[i].ent f[i].ex i < j : f[i].req f[j].req Alapvető szinkronizációs feladatok megoldásai A következő formulák i, j-re értendők. 25

26 Kölcsönös kizárás p és q egyszerre nem hajtódhat végre (de több p vagy több q igen). Megoldása: p[i].ex q[j].ent p[j].ex q[i].ent Író olvasó probléma w-vel párhuzamosan semmi sem futhat. Több r futhat párhuzamosan. Megoldás: w[i].ex w[i + 1].ent (w[i].ex r[j].ent r[j].ex w[i].ent) First come first served q és p közül a korábban meghívott hajtódik először végre. Megoldás: Prioritás p[i].req q[j].req p[i].ent q[j].ent p-nek prioritása van q-val szemben. Megoldás: p[i].req q[j].ent p[i].ent q[j].ent Az absztrakt specifikáció elemzése Konzisztencia Az objektumok két védőgyűrű veszi körül. A belső védőgyűrű statikus. Akkor engedi végrehajtani a műveletet, ha az az argumentumaival értelmezve van az adott objektumon. A művelet előfeltételének felel meg, és az eqns-ben specifikáljuk. A külső védőgyűrű dinamikus. Akkor engedi végrehajtani a műveletet, amikor a szinkronizációs specifikáció szerint meg lehet kezdeni a művelet végrehajtását. A syn-ben definiáljuk. 48. Definíció. Egy típusosztály absztrakt specifikációja konzisztens, ha a külső védőgyűrű feltételéből következik a belső védőgyűrű feltétele. Eseményelvű specifikáció esetén ez azt jelenti, hogy minden lehetséges lefutási sorrendre, az osztály minden f műveletére, annak minden i-edik aktiválására S f[i].ent pre(f) teljesül, ahol S f[i].ent az eseményelvű szinkronizációs specifikáció igazságértéke, ha az f[i].ent esemény bekövetkezne. 26

27 Holtpontmentesség Tekintsünk egy párhuzamos rendszert, melynek folyamatai egy típusosztály egy objektumát használják, ettől eltekintve azonban nem várhatnak egymásra! 49. Definíció. Egy típusosztály szinkronizációs specifikációja holtpontmentes, ha a fent leírt párhuzamos rendszer mindig holtpontmentes. 9. Tétel. Szükséges és elégséges feltétel az absztrakt szinkronizációs specifikácó holtpontmentességéhez. Adott egy típusosztály absztrakt specifikációja. A szinkronizáció eseményelvű specifikációval adott, és nem tartalmaz argumentumkorlátozást. Hozzuk az S szinkronizációs specifikációt diszjunktív normálfomára: S = S 1... S n! Ekkor minden S k rendezési klózok, vagy azok negáltjainak konjunkciója. A negált rendezési klózokat alakítsuk át, felhasználva a teljes rendezést: A B = B A! Rendeljünk minden S k -hoz egy irányított gráfot, melynek csúcsai: f[i]-hez három különböző csúcs: f[i].req, f[i].ent, f[i].ex; élei: f[i].χ g[j].ϱ S k -ra behúzzuk a gráfban a megfelelő irányított élt, a természetes axiómákból származókat is beleértve! Ekkor az absztrakt szinkronizációs specifikáció holtpontmentes S k -hoz rendelt irányított gráf körmentes Az absztrakt szinkronizációs specifikáció implementációja, transzformációs szabályok. Állapottér bevezetése, kapufeltételek, szinkronizációs specifikációk konkrét megvalósítása. Holtpontmentesség, konzisztencia Konkrét szinkronizációs specifikáció Tegyük fel, hogy megírtuk és elemeztük a típusosztály absztrakt specifikációját (EXP). Tegyük fel, hogy a szinkronizációtól eltekintve megírtuk és elemeztük a konkrét specifikációt (BOD) Az állapottér módszere Az állapottér módszere a szinkronizáció konkrét megadására szolgál. Egy objektum minden g műveletének végrehajtásában három fázist különböztetünk meg, és mindegyikhez egy számlálót rendelünk: 27

28 count(g.req): a g műveletre eddig érkezett végrehajtási kérelmek száma; count(g.ent): eddig hányszor engedélyeztük a g művelet végrehajtásának megkezdését; count(g.ex): eddig hányszor fejeződött be a g művelet. További jelölések: wait(g) := count(g.req) count(g.ent) exec(g) := count(g.ent) count(g.ex) 50. Definíció. Szinkronizációs állapottér: a fenti számlálók lehetséges értékeinek Descartes-szorzata. Ha az objektumnak n művelete van, akkor a szinkronizációs állapottér 3n-dimenziós. A szinkronizációs állapotot minden műveleti fázis végrehajtásakor módosítani kell, vagyis léptetni a megfelelő számlálót. Az állapot módosítása kritikus szakasz, így a kölcsönös kizárást biztosítani kell. 51. Definíció. Kapufeltétel: Egy művelet request és exit eseménye azonnal végrehajtható, az enter eseménynek azonban feltétele van: csak akkor hajtható végre, ha belépésük összeegyeztethető a szinkronizáció követelményeivel. Ez a művelet kapufeltétele. Jele: k(g.ent) = a g művelet kapufeltétele. A típusosztály konkrét eljárásait kiterjesztjük a szinkronizációs állapot módosításával, ez kerül a BOD/syn specifikációjába: procedure g(x) is begin count(g.req) := count(g.req) + 1 k(g.ent) count(g.ent) := count(g.ent) + 1 {g(x) eredeti kódja} count(g.ex) := count(g.ex) + 1 end Kontrollmodulok A kontrollmodul a kapufeltételek rendszerezett leírására szolgál. Az azonos kapufeltételű műveletek közös partícióba sorolhatók. Szintaxisa: control module modul neve begin g 1,..., g n : procedure; {A típusosztály műveleteinek felsorolása} queue part 1 /... /part m ; {Partíciók felsorolása.} 28

29 condition(part 1 ): kapufelt 1. condition(part m ): kapufelt m end A kontrollmodulokkal a szinkronizációs specifikáció öröklődésnek is alávethető. Az öröklődés szintaxisa: inherit modulnév; redefined condition(part i ): kapufelt i. rd; A konkrét specifikáció elemzése Konzisztencia Ugyanaz, mint az absztrakt specifikáció elemzésénél ( fejezet). A konkrét szinkronizációs specifikáció konzisztens, ha az osztály minden g műveletére k(g.ent) pre(g) teljesül. Holtpontmentesség A definíció ugyanaz, mint az absztrakt specifikációnál. 10. Tétel. Elégséges feltétel a konkrét szinkronizációs specifikáció holtpontmentességére. Adott egy típusosztály konkrét specifikációja, ebben a szinkronizáció az állapottér módszerével. A típusosztály műveletei: G = {g 0,..., g n } Egy g i művelet blokkoltsági feltétele: B(g i ) := k(g i.ent) wait(g i ) > 0 exec(g i ) = 0. Egy művelethalmaz blokkoltsági feltétele: H G : B(H) := g H B(g). Ha B(H) = hamis, vagy B(H)-ban van hivatkozás H-n kívüli műveletre is, akkor azt mondjuk, hogy H nem jelöl holtponthelyzetet. Ekkor H G : H nem jelöl holtponthelyzetet a konkrét szinkronizációs specifikáció holtpontmentes. 29

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Párhuzamos programok Legyen S parbegin S 1... S n parend; program. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Folyamat

Részletesebben

S0-02 Típusmodellek (Programozás elmélet)

S0-02 Típusmodellek (Programozás elmélet) S0-02 Típusmodellek (Programozás elmélet) Tartalom 1. Absztrakt adattípus 2. Adattípus specifikációja 3. Adattípus osztály 4. Paraméterátadás 5. Reprezentációs függvény 6. Öröklődés és polimorfizmus 7.

Részletesebben

6. Közös változóval rendelkező párhuzamos program, Közös változó,

6. Közös változóval rendelkező párhuzamos program, Közös változó, 6. Közös változóval rendelkező párhuzamos program, Közös változó, Reynold kritérium. Atomi művelet, atomi utasítás. szintaxis, szemantika, tulajdonságok. Szinkronizációs párhuzamos program, szintaxis,

Részletesebben

Kiterjesztések sek szemantikája

Kiterjesztések sek szemantikája Kiterjesztések sek szemantikája Példa D Integer = {..., -1,0,1,... }; D Boolean = { true, false } D T1... T n T = D T 1... D Tn D T Az összes függvf ggvény halmaza, amelyek a D T1,..., D Tn halmazokból

Részletesebben

Osztott rendszer. Osztott rendszer informális definíciója

Osztott rendszer. Osztott rendszer informális definíciója Osztott rendszer Osztott rendszer informális definíciója Egymástól elkülönülten létező program-komponensek egy halmaza. A komponensek egymástól függetlenül dolgoznak saját erőforrásukkal. A komponensek

Részletesebben

Termelő-fogyaszt. fogyasztó modell

Termelő-fogyaszt. fogyasztó modell Termelő-fogyaszt fogyasztó modell A probléma absztrakt megfogalmazása Adott egy N 1 kapacitású közös tároló. Adott a folyamatok két csoportja, amelyek a tárolót használják. n 1 termelő folyamat, m 1 fogyasztó

Részletesebben

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere Szekvenciális programok kategóriái strukturálatlan strukturált NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE Hoare-Dijkstra-Gries módszere determinisztikus valódi korai nem-determinisztikus általános fejlett

Részletesebben

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

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha ALAPFOGALMAK 1 Á l l a p o t t é r Legyen I egy véges halmaz és legyenek A i, i I tetszőleges véges vagy megszámlálható, nem üres halmazok Ekkor az A= A i halmazt állapottérnek, az A i halmazokat pedig

Részletesebben

Programok értelmezése

Programok értelmezése Programok értelmezése Kód visszafejtés. Izsó Tamás 2016. szeptember 22. Izsó Tamás Programok értelmezése/ 1 Section 1 Programok értelmezése Izsó Tamás Programok értelmezése/ 2 programok szemantika értelmezése

Részletesebben

S0-01 Szintézis és verifikáció (Programozás elmélet)

S0-01 Szintézis és verifikáció (Programozás elmélet) S0-01 Szintézis és verifikáció (Programozás elmélet) Tartalom 1. Programozási alapfogalmak 2. Elemi programok és program konstrukciók definíciói 3. Nem-determinisztikus strukturált programok formális verifikációja

Részletesebben

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás Elemi programok Definíció Az S A A program elemi, ha a A : S(a) { a, a, a, a,..., a, b b a}. A definíció alapján könnyen látható, hogy egy elemi program tényleg program. Speciális elemi programok a kövekezők:

Részletesebben

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus. 8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus. Ágens rendszer definíciója. Példák. Fairness. (Fair tulajdonság). Gyenge fair követelmény. A fair nem determinisztikus szemantika definíciója

Részletesebben

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6. Programkonstrukciók Definíció Legyen π feltétel és S program A-n. A DO A A relációt az S-ből a π feltétellel képezett ciklusnak nevezzük, és (π, S)-sel jelöljük, ha 1. a / [π] : DO (a) = { a }, 2. a [π]

Részletesebben

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar Formális szemantika Kifejezések szemantikája Horpácsi Dániel ELTE Informatikai Kar 2016-2017-2 Az előadás témája Egyszerű kifejezések formális szemantikája Az első lépés a programozási nyelvek szemantikájának

Részletesebben

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája?

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája? ,,Alap kiskérdések Logika és informatikai alkalmazásai kiskérdések 2012. február 19. 1. Hogy hívjuk a 0 aritású függvényjeleket? 2. Definiálja a termek halmazát. 3. Definiálja a formulák halmazát. 4. Definiálja,

Részletesebben

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel! függvények RE 1 Relációk Függvények függvények RE 2 Definíció Ha A, B és ρ A B, akkor azt mondjuk, hogy ρ reláció A és B között, vagy azt, hogy ρ leképezés A-ból B-be. Ha speciálisan A=B, azaz ρ A A, akkor

Részletesebben

RE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

RE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel! RE 1 Relációk Függvények RE 2 Definíció: Ha A, B és ρ A B, akkor azt mondjuk, hogy ρ reláció A és B között, vagy azt, hogy ρ leképezés A-ból B-be. Ha speciálisan A=B, azaz ρ A A, akkor azt mondjuk, hogy

Részletesebben

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

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév

Részletesebben

Logika es sz am ıt aselm elet I. r esz Logika Negyedik el oad as 1/26

Logika es sz am ıt aselm elet I. r esz Logika Negyedik el oad as 1/26 1/26 Logika és számításelmélet I. rész Logika Negyedik előadás Tartalom 2/26 Az elsőrendű logika szemantikája Formulák és formulahalmazok szemantikus tulajdonságai Elsőrendű logikai nyelv interpretációja

Részletesebben

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Az UPPAAL egyes modellezési lehetőségeinek összefoglalása Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Résztvevők együttműködése (1) Automaták interakciói üzenetküldéssel Szinkron

Részletesebben

Időzített átmeneti rendszerek

Időzített átmeneti rendszerek Időzített átmeneti rendszerek Legyen A egy ábécé, A = A { (d) d R 0 }. A feletti (valós idejű) időzített átmeneti rendszer olyan A = (S, T,,, ) címkézett átmeneti rendszert ( : T A ), melyre teljesülnek

Részletesebben

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

Occam 1. Készítette: Szabó Éva Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti

Részletesebben

Programfejlesztési Modellek

Programfejlesztési Modellek Programfejlesztési Modellek Programfejlesztési fázisok: Követelmények leírása (megvalósíthatósági tanulmány, funkcionális specifikáció) Specifikáció elkészítése Tervezés (vázlatos és finom) Implementáció

Részletesebben

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum. Programozási tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi

Részletesebben

Absztrakt adattípus - algebrai specifikáció - Lists (paraméteres) module imports end exports parameters variables sorts operations equations

Absztrakt adattípus - algebrai specifikáció - Lists (paraméteres) module imports end exports parameters variables sorts operations equations Absztrakt adattípus -algebrai specifikáció -Lists (paraméteres) module Lists imports Booleans, Naturals parameters Items sorts Item operations erroritem : Item eq? : Item, Item Boolean variables a, b,

Részletesebben

Bevezetés az informatikába

Bevezetés az informatikába Bevezetés az informatikába 6. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.

Részletesebben

Alapszintű formalizmusok

Alapszintű formalizmusok Alapszintű formalizmusok dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék 1 Mit szeretnénk elérni? Informális tervek Informális követelmények Formális modell Formalizált követelmények

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

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

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Algoritmusok helyességének bizonyítása. A Floyd-módszer Algoritmusok helyességének bizonyítása A Floyd-módszer Algoritmusok végrehajtása Egy A algoritmus esetében a változókat három változótípusról beszélhetünk, melyeket az X, Y és Z vektorokba csoportosítjuk

Részletesebben

ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)

ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA) ÍTÉLETKALKULUS SZINTAXIS ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA) jelkészlet elválasztó jelek: ( ) logikai műveleti jelek: ítéletváltozók (logikai változók): p, q, r,... ítéletkonstansok: T, F szintaxis szabályai

Részletesebben

A félév során előkerülő témakörök

A félév során előkerülő témakörök A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok

Részletesebben

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

Algoritmizálás, adatmodellezés tanítása 6. előadás Algoritmizálás, adatmodellezés tanítása 6. előadás Tesztelési módszerek statikus tesztelés kódellenőrzés szintaktikus ellenőrzés szemantikus ellenőrzés dinamikus tesztelés fekete doboz módszerek fehér

Részletesebben

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

ködös határ (félreértés, hiba) probléma formálisan specifikált: valós világ (domain) (hibás eredmény) ködös határ (félreértés, hiba) formális világ (megoldás) A szoftver fejlesztőnek meg kell értenie a felhasználó problémáját. A specifikáció

Részletesebben

Java programozási nyelv

Java programozási nyelv Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék

Részletesebben

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1 Elsőrendű logika szintaktikája és szemantikája Logika és számításelmélet, 3. gyakorlat 2009/10 II. félév Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1 Az elsőrendű logika Elemek egy

Részletesebben

Interfészek. PPT 2007/2008 tavasz.

Interfészek. PPT 2007/2008 tavasz. Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése 2 Már megismert fogalmak áttekintése Objektumorientált

Részletesebben

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E 5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus

Részletesebben

Atomi műveletek őrfeltételének meghatározása. Konkrét program elkészítése. 1. Példa: Számítógép labor használata.

Atomi műveletek őrfeltételének meghatározása. Konkrét program elkészítése. 1. Példa: Számítógép labor használata. Funkcionalitás és szinkronizáció SZINKRONIZÁCIÓS KÓD SZINTÉZISE A konkurens programokkal megoldandó feladatok jelentős részénél a szinkronizációs problémák megoldása (és az ehhez szükséges szinkronizációs

Részletesebben

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21 C# Szálkezelés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21 Tartalomjegyzék 1 Bevezetés 2 Szálkezelés 3 Konkurens Programozás Tóth Zsolt (Miskolci Egyetem)

Részletesebben

Már megismert fogalmak áttekintése

Már megismert fogalmak áttekintése Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 4 IV. FÜGGVÉNYEk 1. LEkÉPEZÉSEk, függvények Definíció Legyen és két halmaz. Egy függvény -ből -ba egy olyan szabály, amely minden elemhez pontosan egy elemet rendel hozzá. Az

Részletesebben

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. HA 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) HA 2 Halmazok HA 3 Megjegyzések A halmaz, az elem és az eleme fogalmakat nem definiáljuk, hanem alapfogalmaknak

Részletesebben

Programozási Módszertan definíciók, stb.

Programozási Módszertan definíciók, stb. Programozási Módszertan definíciók, stb. 1. Bevezetés Egy adat típusát az adat által felvehető lehetséges értékek halmaza (típusérték halmaz, TÉH), és az ezen értelmezett műveletek (típusműveletek) együttesen

Részletesebben

Bevezetés a programozáshoz I. Feladatok

Bevezetés a programozáshoz I. Feladatok Bevezetés a programozáshoz I. Feladatok 2006. szeptember 15. 1. Alapfogalmak 1.1. példa: Írjuk fel az A B, A C, (A B) C, és A B C halmazok elemeit, ha A = {0, 1}, B = {1, 2, 3}, C = {p, q}! 1.2. példa:

Részletesebben

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1 Halmazok 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 2 A fejezet legfontosabb elemei Halmaz megadási módjai Halmazok közti műveletek (metszet,

Részletesebben

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Logika es sz am ıt aselm elet I. r esz Logika 1/36 1/36 Logika és számításelmélet I. rész Logika 2/36 Elérhetőségek Tejfel Máté Déli épület, 2.606 matej@inf.elte.hu http://matej.web.elte.hu Tankönyv 3/36 Tartalom 4/36 Bevezető fogalmak Ítéletlogika Ítéletlogika

Részletesebben

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje 1. Alapfogalmak 1.1. Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt

Részletesebben

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 33 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 7. ELŐADÁS - ABSZTRAKT ADATTÍPUS 2014 Bánsághi Anna 1 of 33 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Formális nyelvek - 9.

Formális nyelvek - 9. Formális nyelvek - 9. Csuhaj Varjú Erzsébet Algoritmusok és Alkalmazásaik Tanszék Informatikai Kar Eötvös Loránd Tudományegyetem H-1117 Budapest Pázmány Péter sétány 1/c E-mail: csuhaj@inf.elte.hu 1 Véges

Részletesebben

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar PROGRAMOZÁS tantárgy Gregorics Tibor egyetemi docens ELTE Informatikai Kar Követelmények A,C,E szakirány B szakirány Előfeltétel Prog. alapismeret Prog. alapismeret Diszkrét matematika I. Óraszám 2 ea

Részletesebben

Dr. Mileff Péter

Dr. Mileff Péter Dr. Mileff Péter 1 2 1 Szekvencia diagram Szekvencia diagram Feladata: objektumok egymás közti üzenetváltásainak ábrázolása egy időtengely mentén elhelyezve. Az objektumok életvonala egy felülről lefelé

Részletesebben

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból

Részletesebben

4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI 4. Fuzzy relációk Gépi intelligencia I. Fodor János BMF NIK IMRI NIMGI1MIEM Tartalomjegyzék I 1 Klasszikus relációk Halmazok Descartes-szorzata Relációk 2 Fuzzy relációk Fuzzy relációk véges alaphalmazok

Részletesebben

Struktúra nélküli adatszerkezetek

Struktúra nélküli adatszerkezetek Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A

Részletesebben

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

Alap fatranszformátorok II

Alap fatranszformátorok II Alap fatranszformátorok II Vágvölgyi Sándor Fülöp Zoltán és Vágvölgyi Sándor [2, 3] közös eredményeit ismertetjük. Fogalmak, jelölések A Σ feletti alaptermek TA = (T Σ, Σ) Σ algebráját tekintjük. Minden

Részletesebben

Ítéletkalkulus. 1. Bevezet. 2. Ítéletkalkulus

Ítéletkalkulus. 1. Bevezet. 2. Ítéletkalkulus Ítéletkalkulus Logikai alapfogalmak, m veletek, formalizálás, logikai ekvivalencia, teljes diszjunktív normálforma, tautológia. 1. Bevezet A matematikai logikában az állításoknak nem a tényleges jelentésével,

Részletesebben

A helyességbizonyítás klasszikus módszerei

A helyességbizonyítás klasszikus módszerei A helyességbizonyítás klasszikus módszerei Majzik István Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék http://www.mit.bme.hu/~majzik/ Motiváció Kritikus

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály

Részletesebben

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása A fordítóprogramok szerkezete Forrásprogram Forrás-kezelő (source handler) Kódoptimalizálás Fordítóprogramok előadás (A,C,T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus

Részletesebben

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Python Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt

Részletesebben

Logika es sz am ıt aselm elet I. r esz Logika Harmadik el oad as 1/33

Logika es sz am ıt aselm elet I. r esz Logika Harmadik el oad as 1/33 1/33 Logika és számításelmélet I. rész Logika Harmadik előadás Tartalom 2/33 Elsőrendű logika bevezetés Az elsőrendű logika szintaxisa 3/33 Nulladrendű állítás Az ítéletlogikában nem foglalkoztunk az álĺıtások

Részletesebben

BOOLE ALGEBRA Logika: A konjunkció és diszjunkció tulajdonságai

BOOLE ALGEBRA Logika: A konjunkció és diszjunkció tulajdonságai BOOLE ALGEBRA Logika: A konjunkció és diszjunkció tulajdonságai 1.a. A B B A 2.a. (A B) C A (B C) 3.a. A (A B) A 4.a. I A I 5.a. A (B C) (A B) (A C) 6.a. A A I 1.b. A B B A 2.b. (A B) C A (B C) 3.b. A

Részletesebben

OOP. Alapelvek Elek Tibor

OOP. Alapelvek Elek Tibor OOP Alapelvek Elek Tibor OOP szemlélet Az OOP szemlélete szerint: a valóságot objektumok halmazaként tekintjük. Ezen objektumok egymással kapcsolatban vannak és együttműködnek. Program készítés: Absztrakciós

Részletesebben

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási

Részletesebben

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1 2. Rekurzió Egy objektum definícióját rekurzívnak nevezünk, ha a definíció tartalmazza a definiálandó objektumot. Egy P eljárást (vagy függvényt) rekurzívnak nevezünk, ha P utasításrészében előfordul magának

Részletesebben

1. előadás: Halmazelmélet, számfogalom, teljes

1. előadás: Halmazelmélet, számfogalom, teljes 1. előadás: Halmazelmélet, számfogalom, teljes indukció Szabó Szilárd Halmazok Halmaz: alapfogalom, bizonyos elemek (matematikai objektumok) összessége. Egy halmaz akkor adott, ha minden objektumról eldönthető,

Részletesebben

2. Logika gyakorlat Függvények és a teljes indukció

2. Logika gyakorlat Függvények és a teljes indukció 2. Logika gyakorlat Függvények és a teljes indukció Folláth János Debreceni Egyetem - Informatika Kar 2012/13. I. félév Áttekintés 1 Függvények Relációk Halmazok 2 Természetes számok Formulák Definíció

Részletesebben

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA 26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma

Részletesebben

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra) 6. Fabejáró algoritmusok Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban

Részletesebben

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 68 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

5. A kiterjesztési elv, nyelvi változók

5. A kiterjesztési elv, nyelvi változók 5. A kiterjesztési elv, nyelvi változók Gépi intelligencia I. Fodor János BMF NIK IMRI NIMGI1MIEM Tartalomjegyzék I 1 A kiterjesztési elv 2 Nyelvi változók A kiterjesztési elv 237 A KITERJESZTÉSI ELV A

Részletesebben

A modell-ellenőrzés gyakorlata UPPAAL

A modell-ellenőrzés gyakorlata UPPAAL A modell-ellenőrzés gyakorlata UPPAAL Uppsalai Egyetem + Aalborgi Egyetem közös fejlesztése; 1995. első verzió megjelenése; részei: - grafikus modellt leíró eszköz (System editor) - szimulátor (Simulator)

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 8. előadás Öröklődés - megnyitunk egy osztályt egy másik előtt zárt egységeket szeretünk készíteni (láthatósági kérdés:

Részletesebben

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Modellellenőrzés dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék 1 Mit szeretnénk elérni? Informális vagy félformális tervek Informális követelmények Formális modell: KS, LTS, TA

Részletesebben

A logikai következmény

A logikai következmény Logika 3 A logikai következmény A logika egyik feladata: helyes következtetési sémák kialakítása. Példa következtetésekre : Minden veréb madár. Minden madár gerinces. Minden veréb gerinces 1.Feltétel 2.Feltétel

Részletesebben

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

Felvételi vizsga mintatételsor Informatika írásbeli vizsga BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív

Részletesebben

Szekvencia diagram. Szekvencia diagram Dr. Mileff Péter

Szekvencia diagram. Szekvencia diagram Dr. Mileff Péter Dr. Mileff Péter 1 2 Szekvencia diagram Feladata:objektumok egymás közti üzenetváltásainak ábrázolása egy időtengely mentén elhelyezve. Az objektumok életvonala egy felülről lefelé mutató időtengelyt képvisel.

Részletesebben

Véges automaták, reguláris nyelvek

Véges automaták, reguláris nyelvek Véges automaták, reguláris nyelvek Kiegészítő anyag az lgoritmuselmélet tárgyhoz (a Rónyai Ivanyos Szabó: lgoritmusok könyv mellé) Friedl Katalin BME SZIT friedl@cs.bme.hu 27. augusztus 3. véges automata

Részletesebben

3. előadás. Programozás-elmélet. A változó fogalma Kiterjesztések A feladat kiterjesztése A program kiterjesztése Kiterjesztési tételek Példa

3. előadás. Programozás-elmélet. A változó fogalma Kiterjesztések A feladat kiterjesztése A program kiterjesztése Kiterjesztési tételek Példa A változó fogalma Definíció Legyen A = A 1 A 2... A n állapottér. A pr Ai projekciós függvényeket változóknak nevezzük: : A A i pr Ai (a) = a i ( a = (a 1, a 2,..., a n ) A). A változók jelölése: v i =

Részletesebben

Programozási módszertan

Programozási módszertan 1 Programozási módszertan 1. Alapfogalmak Feldhoffer Gergely 2012 Féléves tananyag terve 2 Program helyességének bizonyítása Reprezentáció Logikai-matematikai eszköztár Programozási tételek bizonyítása

Részletesebben

Elérhetőségi analízis Petri hálók dinamikus tulajdonságai

Elérhetőségi analízis Petri hálók dinamikus tulajdonságai Elérhetőségi analízis Petri hálók dinamikus tulajdonságai dr. Bartha Tamás Dr. Pataricza András BME Méréstechnika és Információs Rendszerek Tanszék Petri hálók vizsgálata Az elemzés mélysége szerint: Vizsgálati

Részletesebben

Temporális logikák és modell ellenırzés

Temporális logikák és modell ellenırzés Temporális logikák és modell ellenırzés Temporális logikák Modális logika: kijelentések különböző módjainak tanulmányozására vezették be (eredetileg filozófusok). Ilyen módok: esetleg, mindig, szükségszerűen,

Részletesebben

Deníciók és tételek a beugró vizsgára

Deníciók és tételek a beugró vizsgára Deníciók és tételek a beugró vizsgára (a szóbeli viszgázás jogáért) Utolsó módosítás: 2008. december 2. 2 Bevezetés Számítási problémának nevezünk egy olyan, a matematika nyelvén megfogalmazott kérdést,

Részletesebben

Hardver leíró nyelvek (HDL)

Hardver leíró nyelvek (HDL) Hardver leíró nyelvek (HDL) Benesóczky Zoltán 2004 A jegyzetet a szerzıi jog védi. Azt a BME hallgatói használhatják, nyomtathatják tanulás céljából. Minden egyéb felhasználáshoz a szerzı belegyezése szükséges.

Részletesebben

FUNKCIONÁLIS PROGRAMOZÁS

FUNKCIONÁLIS PROGRAMOZÁS FUNKCIONÁLIS PROGRAMOZÁS A funkcionális programozás néhány jellemzője Funkcionális programozás 1-2 Funkcionális, más néven applikatív programozás Funkcionális = függvényalapú, függvényközpontú Applikatív

Részletesebben

A programozás alapjai

A programozás alapjai A programozás alapjai Változók A számítógép az adatokat változókban tárolja A változókat alfanumerikus karakterlánc jelöli. A változóhoz tartozó adat tipikusan a számítógép memóriájában tárolódik, szekvenciálisan,

Részletesebben

Kölcsönhatás diagramok

Kölcsönhatás diagramok Kölcsönhatás diagramok Célkitűzés Olvasni tudják az alap UML kölcsönhatás diagramok (kommunikáció és szekvencia) diagramok jelöléseit. 2 Bevezetés Miért léteznek az objektumok? Azért, hogy a rendszer valamilyen

Részletesebben

Szkriptnyelvek. 1. UNIX shell

Szkriptnyelvek. 1. UNIX shell Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek

Részletesebben

Diszkrét matematika I.

Diszkrét matematika I. Diszkrét matematika I. középszint 2014. ősz 1. Diszkrét matematika I. középszint 3. előadás Mérai László diái alapján Komputeralgebra Tanszék 2014. ősz Relációk Diszkrét matematika I. középszint 2014.

Részletesebben

Programozási technológia

Programozási technológia Programozási technológia Dinamikus modell Tevékenységdiagram, Együttműködési diagram, Felhasználói esetek diagramja Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Tevékenység diagram A tevékenység (vagy

Részletesebben

Bevezetés a programozásba. 5. Előadás: Tömbök

Bevezetés a programozásba. 5. Előadás: Tömbök Bevezetés a programozásba 5. Előadás: Tömbök ISMÉTLÉS Specifikáció Előfeltétel: milyen körülmények között követelünk helyes működést Utófeltétel: mit várunk a kimenettől, mi az összefüggés a kimenet és

Részletesebben

Rekurzió. Dr. Iványi Péter

Rekurzió. Dr. Iványi Péter Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(

Részletesebben

Kronecker-modulusok kombinatorikája és alkalmazások

Kronecker-modulusok kombinatorikája és alkalmazások Kronecker-modulusok kombinatorikája és alkalmazások BBTE, Magyar Matematika es Informatika Intézet Tegezek Meghatározás Egy Q tegez egy irányított multigráf (két csomópont között több irányított él is

Részletesebben

Komputeralgebra Rendszerek

Komputeralgebra Rendszerek Komputeralgebra Rendszerek Programozás Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2014. február 23. TARTALOMJEGYZÉK 1 of 28 TARTALOMJEGYZÉK I 1 TARTALOMJEGYZÉK 2 Értékadás MAPLE -ben SAGE -ben 3

Részletesebben

Diszkrét matematika I. gyakorlat

Diszkrét matematika I. gyakorlat Vizsgafeladatok megoldása 2012. december 5. Tartalom Teljes feladatsor #1 1 Teljes feladatsor #1 2 Teljes feladatsor #2 3 Teljes feladatsor #3 4 Teljes feladatsor #4 5 Válogatott feladatok 6 Végső bölcsesség

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon: A Formális nyelvek vizsga teljesítése a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon: 1. Öt rövid kérdés megválaszolása egyenként 6 pontért, melyet minimum

Részletesebben

Bánsághi Anna anna.bansaghi@mamikon.net. 2014 Bánsághi Anna 1 of 31

Bánsághi Anna anna.bansaghi@mamikon.net. 2014 Bánsághi Anna 1 of 31 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 9. ELŐADÁS - OOP TERVEZÉS 2014 Bánsághi Anna 1 of 31 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív paradigma

Részletesebben