HELYESSÉGBIZONYÍTÓ ESZKÖZÖK ALKALMAZÁSA FUNKCIONÁLIS PROGRAMOK VIZSGÁLATÁRA 1

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

Download "HELYESSÉGBIZONYÍTÓ ESZKÖZÖK ALKALMAZÁSA FUNKCIONÁLIS PROGRAMOK VIZSGÁLATÁRA 1"

Átírás

1 HELYESSÉGBIZONYÍTÓ ESZKÖZÖK ALKALMAZÁSA FUNKCIONÁLIS PROGRAMOK VIZSGÁLATÁRA 1 VERIFICATION OF FUNCTIONAL PROGRAMS USING THEOREM PROVERS Tejfel Máté ELTE Informatikai Kar Programozási Nyelvek és Fordítóprogramok Tanszék Összefoglaló Az ELTE programtervező matematikus, illetve az újonnan bevezetett programtervező informatikus képzésében jelentős szerepet kap a funkcionális nyelvek oktatása. A funkcionális nyelven elkészített programok formális helyességvizsgálatával azonban csak az informatikai doktori iskola keretében ismerkedhetnek meg az érdeklődő doktori hallgatók. Elmondható, hogy napjainkban egyre fokozódó igény mutatkozik helyes programok előállítása iránt és a jelenleg széles körben alkalmazott minőségjavító technikák (tesztelés, szimuláció) már viszonylag kisméretű szoftvertermékek esetén sem képesek ezt az igényt maradéktalanul ellátni. Ezért felmerült az igény, hogy a jobb képességű, érdeklődő egyetemi hallgatók számára bevezessünk egy olyan tantárgyat, amely helyes programok előállításának lehetőségeivel (helyességvizsgálat, programszintézis), illetve nagyrészt funkcionális programok helyességbizonyításával és az ehhez használható eszközök rövid bemutatásával foglalkozik. Ennek okán hoztuk létre 2006-ban a Helyességbizonyító eszközök alkalmazása funkcionális programok esetén címet viselő speciálkollégiumot. A tárgy keretében a hallgatók először megismerkednek a programhelyesség fogalmával és a biztosítására szolgáló módszerekkel, majd egyegy kiválasztott eszköz segítségével, példákon keresztül megvizsgálják az adott módszer működését és lehetőségeit. Végezetül pedig részletesen megismerik a Clean nyelvű funkcionális programok helyességbizonyítására szolgáló Sparkle eszközt. Kulcsszavak helyességbizonyítás, funkcionális programozás Abstract The education of functional programming plays an important role in the informatics trainings of ELTE. However courses about verification of functional programming were available only for our PhD students. Since the needs for creating sound programs increase gradually a new special course was created in 2006 for high quality master students with title Verification of functional programs. The course presents methods make possible to increase the program quality, demonstrates examples for tools of these methods and introduces partially the Sparkle theorem prover which is dedicated for the Clean functional language. Keywords verification, functional programming 1 A Deák Ferenc ösztöndíj támogatásával 1

2 1. Bevezető Az ELTE programtervező matematikus képzésében több éve jelentős szerepet kap a funkcionális nyelvek oktatása [4]. A téma fontosságát jelzi, hogy a funkcionális programozáshoz kötődő tantárgyak beépültek a bolognai folyamat végrehajtása során kialakított programtervező informatikus képzés tananyagába is, illetve néhány, korábban csak az MSc hallgatók számára meghirdetett tárgy átkerült a BSc képzésbe, sőt egyes szakirányokon bevezető jelleggel már az elsőévesek számára is oktatunk funkcionális programozást. A tárgykör oktatása során, a funkcionális nyelvek elemeinek tárgyalásakor több nyelv (Miranda, Haskell, Clean) elemeit mutatjuk be példákon keresztül, ezáltal is kifejezésre jutatva, hogy elsősorban a funkcionális programozási stílus, illetve a modern funkcionális programozási nyelvekben előforduló közös nyelvi elemek megismerése a cél, nem pedig egy konkrét nyelv kimerítő tárgyalása. Első lépésben az a fő célunk, hogy a hallgatók megismerkedjenek a funkcionális programozási stílussal, és gyakorlatot szerezzenek a fontosabb nyelvi elemek használatában. A továbbiakban részletesen tárgyaljuk a funkcionális programozás imperatív nyelvekétől lényegesen eltérő számítási modelljét és bemutatjuk az implementációs technikák részleteit is. A funkcionális program végrehajtása valójában átírási lépések sorozatának végrehajtását jelenti a kezdeti kifejezésből kiindulva. Egy-egy redukciós lépésben egy redukálható részkifejezésben, a redexben szereplő függvényhívás helyettesítődik a függvény megadott kifejezésével, a formális és aktuális paraméterek megfeleltetése mellett. A funkcionális nyelven írt programok végrehajtási modellje minden esetben egy átíró rendszer, melyben az egyes rész-kifejezések átírásának sorrendje a végeredményre nincs hatással, a sorrend legfeljebb azt befolyásolja, hogy az átírási lépéssorozattal eljutunk-e a végeredményig. 2. Az oktatott tantárgy A funkcionális programok helyességvizsgálatával foglalkozó Helyességbizonyító eszközök alkalmazása funkcionális programok esetén címet viselő speciálkollégiumot ban hoztuk létre elsősorban azon negyed-ötödéves, jobb képességű hallgatók részére, akik tagjai az ELTE Eötvös József Collegiumában működő informatikai műhelynek. A tárgy keretében a hallgatók megismerkednek a programhelyesség fogalmával, a program minőségét javító módszerekkel, mint a tesztelés és a szimuláció, illetve olyan módszerekkel, amelyekkel a program helyessége biztosítható, mint a modell ellenőrzés, a tételbizonyítás és a programszintézis. Ezután egy-egy kiválasztott eszköz segítségével, példákon keresztül megvizsgálják az adott módszer működését, lehetőségeit. Az előadáson a leírt módszerekhez kapcsolódóan a következő eszközöket tekintjük át: modellellenőrzés: NuSMV [2], programszintézis: B method [1], helyességbizonyítás: Isabelle-Hol [7]. Végül a helyességvizsgálati módszerek általános áttekintése után a hallgatók részletesen megismerik a Clean funkcionális nyelvhez készített Sparkle [5, 6] helyességbizonyító eszközt, annak axiómarendszerét és a bizonyítás során alkalmazható levezetési szabályait. Ennek során 2

3 különös figyelmet fordítunk a Clean nyelv lusta kiértékelési stratégiája miatt bevezetett speciális szabályokra. Megismerkedhetnek az eszköz egy lehetséges kiterjesztésével is, melynek segítségével temporális jellegű tulajdonságok is bizonyíthatók Clean nyelvű programokra. Jellegéből adódóan a tárgyat viszonylag kevés számú hallgató (félévente nagyjából 8-10 fő) veszi fel. A sikeres teljesítéshez a hallgatóknak adott programok tulajdonságait kell bebizonyítaniuk beadandó feladatként. Az eddigi félévek során a tárgyat felvettek mintegy 90% sikeresen elvégezte a tárgyat, jellemzően ötös érdemjeggyel. 3. Programminőség javító módszerek Napjainkban egyre fontosabb problémává válik a programok helyessége, azaz bizonyos felhasználói, tervezői követelményeknek való megfelelése. Ez a megfelelés a program tulajdonságain múlik, azaz a helyességellenőrzés során a program tulajdonságait kell megvizsgálnunk. A jelenleg legelterjedtebb minőségjavító módszerek, a tesztelés és a szimuláció nem alkalmasak a helyesség teljes mértékű biztosítására. A két módszer közötti különbség, hogy a tesztelés magára a programra alkalmazható, míg a szimuláció annak valamely absztrakt modelljére. Mindkét módszer azt vizsgálja, hogy a rendszer adott bemeneti adatok esetén az elvárt válaszokat eredményezi-e, ebből adódóan már kisebb méretű programok esetén sem képesek az összes lehetséges esetet lefedni, viszont költséghatékonyak és sok hibát képesek megtalálni. Ugyancsak a program egy absztrakt modelljén működik a modell ellenőrzés, amely teljes keresést végez az állapottéren, így megvizsgálva, hogy a kérdéses tulajdonság fennáll-e az adott programra, illetve ellenkező esetben ellenpéldát szolgáltat. Működéséből adódóan a módszer csak véges lehetséges állapothalmaz esetén alkalmazható, viszont ekkor pozitív válasz esetén bármilyen bemenő adat mellett garantálja a tulajdonság teljesülését. Ezen módszer alkalmazásakor szakértői tudást csak az absztrakt modell előállítása igényel, maga az ellenőrzési folyamat automatikus. A tételbizonyítás is absztrakt modellen alkalmazható, a módszer során a modellből és a megadott axiómákból kiindulva logikai levezetési szabályok segítségével, emberi közreműködéssel kell bebizonyítani a tulajdonságok fennállását. A módszer előnye, hogy nincs megkötés a vizsgált programra, hátránya, hogy mind a modell, mind a bizonyítás elkészítése magas fokú (matematikai, logikai) szakértelmet igényel, emellett időigényes és csak részben automatizálható. A tételbizonyítás során egy bizonyítási fát építünk fel, melynek gyökere a bizonyítandó állítás, csúcsai állítások, az élei pedig levezetési szabályok. Teljes bizonyításhoz tartozó fa levelei axiómák vagy az absztrakt modellből triviálisan következő állítások. Végezetül egy, a tárgy keretében ismertetett alternatív módszer helyes program előállítására a programszintézis, melynek során az előzőekben ismertetett módszerektől eltérően nem egy elkészített program tulajdonságait vizsgáljuk, hanem a specifikációból kiindulva ellenőrzött finomítási lépések sorozatával állítjuk elő a futtatható kódot. A finomítási lépések mindegyikének ellenőrzése biztosítja, hogy az elkészített kód megfeleljen a kezdeti specifikációnak. 3

4 4. A Sparkle helyességbizonyító eszköz A Sparkle tételbizonyító eszközt kifejezetten Clean funkcionális nyelven írt programok helyességvizsgálatához készítették. Az eszköz érdekessége, hogy a belső reprezentáció (az absztrakt modell) leírására használt nyelv is a Clean, pontosabban annak egy speciális részhalmaza az úgynevezett Core-Clean. Ez a specialitás lehetővé teszi, hogy Clean nyelvű programok absztrakt modellje automatikusan, az eszköz által felépíthető legyen, azaz a Sparkle eszköz esetén a modell felépítése nem igényel emberi erőforrást, csak a bizonyítás elvégzése. Az eszközben a tulajdonságokat egyenlőségjeles elsőrendű logikai állításokkal írhatjuk le, viszont a predikátumok helyett csak Boole értékű Clean függvények használhatók. Így például a Páros(x) predikátum teljesülésének vizsgálata helyett definiálnunk kell egy Int Boole típusú páros Clean függvényt és a páros x = True egyenlőséget vizsgálhatjuk, azaz valójában az eszköz segítségével Clean függvények egymáshoz képesti viszonya vizsgálható. Az eszköz 42 levezetési lépést tartalmaz, melyek kifejezetten a Clean nyelv figyelembevételével lettek kialakítva. A nyelv alapvetően lusta kiértékelésű, azaz megengedett végtelen adatstruktúrák használata is. Emiatt előfordulhat, hogy a programban bizonyos kifejezések definiálatlanok lesznek (például egy végtelen lista utolsó eleme). Ezért például az indukció és az esetszétválasztás a Sparkle eszközben kibővül egy újabb esettel, a definiálatlan érték esetével. Ez a gyakorlatban azt jelenti, hogy valamely tulajdonság bizonyításakor, ha valamely változó értéke szerinti esetszétválasztás vagy indukció segítségével akarunk bizonyítani, akkor a megadott feltételekből be kell látnunk, hogy az érték nem lehet definiálatlan, vagy ellenkező esetben be kell látnunk, hogy definiálatlan érték esetén is fennáll a tulajdonság. Az esetszétválasztáson és az indukción kívül a legtöbbször használt levezetési szabályok a redukció, a dedukció, a már bizonyított tulajdonságok alkalmazását végző szabály, az új hipotézisek felvételére szolgáló szabály, illetve a definiálatlanságot vizsgáló szabály. A bizonyítások szekciókba szervezhetők, amelyek elmenthetők és újrafelhasználhatók. Az eszköz rendelkezik egy úgynevezett tanácsadó rendszerrel is, amely egy beépített heurisztika alapján megmondja, hogy a bizonyítás egy adott pontján melyik levezetési szabály milyen valószínűséggel használható. Beállítható, hogy az eszköz a legvalószínűbb lépést automatikusan végrehajtsa, ily módon a bizonyítás részben automatizálható. Azért csak részben, mert a rendszer nem mindig képes tanácsot adni, illetve néhány esetben nem a megfelelő lépést javasolja, így a bizonyítás mindenképpen emberi erőforrást igényel. 5. Egy egyszerű példa Nézzünk egy egyszerű példát Sparkle eszközzel elvégzett bizonyításra. Ehhez tekintsük a Clean beépített StdEnv könyvtárában definiált take illetve drop függvényt. take :: Int![a] -> [a] take n [x:xs] n > 0 = [x: take (n-1) xs] = [] take n [] = [] 4

5 drop :: Int![a] -> [a] drop n [x:xs] n > 0 = drop (n-1) xs = [x:xs] drop n [] = [] Mindkét függvénynek két paramétere van egy egész érték és egy lista (melynek elemtípusára nem teszünk megkötést). A lista paraméterről kikötjük, hogy definiált kell legyen (ezt jelzi a típusleírásnál a! szimbólum), azonban érdemes megjegyezni, hogy ez nem zárja ki a végtelen listákat, mint lehetséges paramétereket. A take függvény a paraméterül adott lista első n elemét adja vissza (illetve a teljes listát, ha annak hossza kisebb n -nél). A függvény a definíció szerint először mintaillesztéssel megállapítja, hogy a paraméterként kapott lista üres-e vagy sem, és ha üres, akkor üres listát ad vissza eredményül. Ha a kapott lista nem üres, akkor megvizsgálja, hogy az ugyancsak paraméterként kapott n érték nagyobb-e nullánál, ha nem, akkor üres lista lesz a visszatérő érték. Ellenkező esetben a függvény leveszi a lista első elemét, és rekurzívan meghívja önmagát eggyel kisebb egész paraméterrel, illetve a lista maradék részével, majd a hívás eredményeként kapott lista elejére hozzáfűzi a levett listaelemet. A drop függvény a fentiekhez nagyon hasonlóan működik, azzal a különbséggel, hogy nem üres lista és nullánál kisebb vagy egyenlő n érték esetén a teljes listát adja vissza eredményként, illetve a rekurzív hívásnál természetesen nem fűzi vissza a lista elejére a levett elemet. Ezen függvényekre megfogalmazhatunk egy olyan állítást, hogy definiált n érték esetén, ha leveszünk n elemet egy listából a take függvénnyel és eldobunk ugyanazon listából n elemet a drop függvénnyel, majd az így kapott két listát összefűzzük, akkor visszakapjuk az eredeti listát. A tulajdonság felírásához felhasználjuk a ++ (összefűzés) függvényt, amely ugyancsak az StdEnv könyvtárában van definiálva. Az állítás formális leírása a következő: (n = ) take n xs ++ drop n xs = xs Az állításban jelöli a definiálatlan értéket. Érdemes megfigyelni, hogy az n definiáltságára vonatkozó feltétel szükséges a bizonyításhoz, mivel definiálatlan n érték esetén take n xs, illetve drop n xs és így természetesen az összefűzésük is definiálatlan, míg xs nyilván lehet definiált. A tulajdonság az xs lista szerinti strukturális indukció, illetve redukció segítségével 17 lépésben bizonyítható a Sparkle eszközzel. A bizonyítás érdekessége, hogy minden lépésben a tanácsadó rendszer által legvalószínűbben alkalmazhatónak tartott levezetési lépést használjuk, azaz a konkrét állítás automatikusan is bizonyítható. 5

6 6. A Sparkle-T kiterjesztés A bemutatott Sparkle egy kiterjesztése a Sparkle-T [8] eszköz, melynek segítségével temporális jellegű logikai tulajdonságok is vizsgálhatóak Clean nyelvű programok esetén. A temporális logikai állítások különösen jól használhatóak imperatív, párhuzamos vagy reaktív programok helyességvizsgálata esetén. Tisztán funkcionális környezetben azonban általában kevésbé használhatóak, hiszen egy ilyen programban a változók egy adott értékhez vannak kötve, és a program futása során nem változtatják az értéküket. Azonban funkcionális programok estén is előfordul, hogy különböző változók értékeit egymásból számoljuk és a változók valójában ugyanazt az (absztrakt) objektumot jelölik. Például a Clean nyelvnek létezik egy olyan könyvtára (az Object I/O könyvtár), melynek segítségével reaktív, egymással együttműködő, belső állapottal rendelkező folyamatokból álló felhasználói felületek készíthetők, egy ilyen folyamat különböző belső állapotait jelölő változók tekinthetőek egy absztrakt objektum alá tartozónak és a közöttük fennálló összefüggéseket megfogalmazhatjuk temporális logikai állítások segítségével. A Sparkle-T eszköz lehetővé teszi, hogy Clean nyelven írt programokhoz absztrakt objektumokat definiáljunk, bizonyos a programban előforduló változókat az így létrehozott objektumokhoz rendeljük hozzá és meghatározzuk a program azon részeit, melyek végrehajtásakor az objektumok értéke megváltozhat. A kiterjesztés azt is lehetővé teszi, hogy a definiált objektumok felett temporális logikai állításokat fogalmazzunk meg a Unity [3] logikából kölcsönzött invariáns és unless operátorokat felhasználva. A Unity logika használata azért előnyös a hallgatók számára, mert a programtervező informatikus BSc szak szoftverfejlesztő informatikus szakirányos hallgatói az Osztott rendszerek specifikációja és implementációja tárgy keretében részletesen megismerkednek ezen logika operátoraival, az általuk kifejezhető tulajdonságokkal, illetve azok bizonyításának módjával. Természetesen a kiterjesztett eszköz a temporális tulajdonságok bizonyításához új levezetési szabályokat is definiál, melyek segítségével az állítások átalakíthatóak elsőrendű logikai állításokká, amik már bizonyíthatóak a hagyományos (Sparkle-ban definiált) eszközökkel. Irodalomjegyzék [1] Abrial J.-R. (1996) The B-Book. Cambridge University Press. [2] Cavada R., Cimatti A., Jochim C. A., Keighren G. (2006) Olivetti E., Pistore M., Roveri M., Tchaltsev A. NuSMV 2.4 User Manual, online kiadvány [3] Chandy K. M., Misra J. (1989) Paralell program design: a foundation. Addison-Wesley. [4] Horváth Z., Csörnyei Z., Lövei L., Zsók V. (2005) Funkcionális programozás témakörei a programtervező képzésben. Informatika a felsőoktatásban'05. Debrecen, Pethő A, Herdon M. (szerk): Informatika a felsőoktatásban

7 [5] Mol M. d., Eekelen M. v., Plasmeijer R. (2001) Theorem Proving for Functional Programmers, Sparkle: A Functional Theorem Prover. Springer, Lecture Notes in Computer Science, kötet, oldalszám: [6] Mol M. d., Eekelen M. v., Plasmeijer R. (2007) The Mathematical Foundation of the Proof Assistant Sparkle. Technical Report ICIS-R07025, Radboud University Nijmegen [7] Nipkow T., Paulson L. C., Wenzel M. (2002) Isabelle/HOL --- A Proof Assistant for Higher-Order Logic. Springer, Lecture Notes in Computer Science, kötet [8] Tejfel M., Horváth Z., Kozsik T. (2006) Temporal Properties of Clean Programs Proven in Sparkle-T. Central European Functional Programming School, Revised Selected Lectures, Springer, Lecture Notes in Computer Science, kötet, oldalszám:

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem } Funkcionális és logikai programozás { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem } http://www.ms.sapientia.ro/~mgyongyi ` 1 Jelenlét: Követelmények, osztályozás Az első 4 előadáson

Részletesebben

A TANTÁRGY ADATLAPJA

A TANTÁRGY ADATLAPJA A TANTÁRGY ADATLAPJA 1. A képzési program adatai 1.1 Felsőoktatási intézmény Babeș Bolyai Tudományegyetem 1.2 Kar Matematika és Informatika Kar 1.3 Intézet Magyar Matematika és Informatika Intézet 1.4

Részletesebben

A DEBRECENI MÉRNÖK INFORMATIKUS KÉPZÉS TAPASZTALATAIRÓL. Kuki Attila Debreceni Egyetem, Informatikai Kar. Összefoglaló

A DEBRECENI MÉRNÖK INFORMATIKUS KÉPZÉS TAPASZTALATAIRÓL. Kuki Attila Debreceni Egyetem, Informatikai Kar. Összefoglaló A DEBRECENI MÉRNÖK INFORMATIKUS KÉPZÉS TAPASZTALATAIRÓL TEACHING EXPERIENCES OF THE IT ENGINEERING COURSE OF UNIVERSITY OF DEBRECEN Kuki Attila Debreceni Egyetem, Informatikai Kar Összefoglaló A Debreceni

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

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

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók Haskell 1. Alapok tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók elég jól elkerülhetők így a mellékhatások könnyebben

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

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

FUNKCIONÁLIS PROGRAMOZÁS ELŐADÁS JEGYZET FUNKCIONÁLIS PROGRAMOZÁS ELŐADÁS JEGYZET Szerkesztette: Balogh Tamás 2013. május 30. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! - Ne add

Részletesebben

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér Funkcionális programozás 2. el adás Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2019, tavaszi félév Mir l volt szó? Követelmények, osztályozás Programozási

Részletesebben

Részletes szoftver tervek ellenőrzése

Részletes szoftver tervek ellenőrzése Részletes szoftver tervek ellenőrzése 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/ Tartalomjegyzék A részletes

Részletesebben

Véletlen sorozatok ellenőrzésének módszerei. dolgozat

Véletlen sorozatok ellenőrzésének módszerei. dolgozat Eötvös Loránd Tudományegyetem Informatikai Kar Komputeralgebra Tanszék Véletlen sorozatok ellenőrzésének módszerei dolgozat Témavezető: Dr. Iványi Antal Miklós egyetemi tanár Készítette: Potempski Dániel

Részletesebben

A Feldspar fordító, illetve Feldspar programok tesztelése

A Feldspar fordító, illetve Feldspar programok tesztelése A Feldspar fordító, illetve Feldspar programok tesztelése [KMOP-1.1.2-08/1-2008-0002 társfinanszírozó: ERFA] Leskó Dániel Eötvös Loránd Tudományegyetem Programozási Nyelvek és Fordítóprogramok Tanszék

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

A matematikai feladatok és megoldások konvenciói

A matematikai feladatok és megoldások konvenciói A matematikai feladatok és megoldások konvenciói Kozárné Fazekas Anna Kántor Sándor Matematika és Informatika Didaktikai Konferencia - Szatmárnémeti 2011. január 28-30. Konvenciók Mindenki által elfogadott

Részletesebben

Kaposi Ambrus. University of Nottingham Functional Programming Lab. Hackerspace Budapest 2015. január 6.

Kaposi Ambrus. University of Nottingham Functional Programming Lab. Hackerspace Budapest 2015. január 6. Bizonyítás és programozás Kaposi Ambrus University of Nottingham Functional Programming Lab Hackerspace Budapest 2015. január 6. Bizonyítás, érvelés Példa: sáros a csizmám ha vizes a föld, esett az eső

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

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

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport 10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)

Részletesebben

FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET

FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET Szerkesztette: Balogh Tamás 2013. május 17. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! - Ne add

Részletesebben

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Rendszermodellezés Modellellenőrzés Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Ismétlés: Mire használunk modelleket? Kommunikáció, dokumentáció Gondolkodás,

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

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

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

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

INFORMATIKA OKTATÁS A KLTE-N 1

INFORMATIKA OKTATÁS A KLTE-N 1 INFORMATIKA OKTATÁS A KLTE-N 1 Juhász István, pici@math.klte.hu KLTE, Matematikai és Informatikai Intézet, Információ Technológia Tanszék Abstract The Institute of Mathematics and Informatics of Kossuth

Részletesebben

Objektum orientált kiterjesztés A+ programozási nyelvhez

Objektum orientált kiterjesztés A+ programozási nyelvhez Szegedi Tudományegyetem Informatikai Tanszékcsoport Objektum orientált kiterjesztés A+ programozási nyelvhez Diplomamunka terve Készítette: Bátori Csaba programtervező matematikus hallgató Témavezető:

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

A TANTÁRGY ADATLAPJA

A TANTÁRGY ADATLAPJA A TANTÁRGY ADATLAPJA 1. A képzési program adatai 1.1 Felsőoktatási intézmény Babeș Bolyai Tudományegyetem 1.2 Kar Matematika és Informatika Kar 1.3 Intézet Magyar Matematika és Informatika Intézet 1.4

Részletesebben

2005. évi OTKA zárójelentés: OTKA T037742 Vezető kutató: Dr. Horváth Zoltán

2005. évi OTKA zárójelentés: OTKA T037742 Vezető kutató: Dr. Horváth Zoltán Témavezető neve: Dr. Horváth Zoltán A téma címe: Elosztott funkcionális programok helyessége A kutatás időtartama: 2002-2005. A pályázat célja egy olyan szoftvertechnológia megalkotása volt, amellyel programok

Részletesebben

Összeállította Horváth László egyetemi tanár

Összeállította Horváth László egyetemi tanár Óbudai Egyetem Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek Intézet Intelligens Mérnöki Rendszerek Szakirány a Mérnök informatikus alapszakon Összeállította Horváth László Budapest, 2011

Részletesebben

Bizonyítási módszerek ÉV ELEJI FELADATOK

Bizonyítási módszerek ÉV ELEJI FELADATOK Bizonyítási módszerek ÉV ELEJI FELADATOK Év eleji feladatok Szükséges eszközök: A4-es négyzetrácsos füzet Letölthető tananyag: Emelt szintű matematika érettségi témakörök (2016) Forrás: www.mozaik.info.hu

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

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

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

Részletesebben

Programozás Minta programterv a 1. házi feladathoz 1.

Programozás Minta programterv a 1. házi feladathoz 1. Programozás Minta programterv a 1. házi feladathoz 1. Gregorics Tibor 1. beadandó/0.feladat 2008. december 6. EHACODE.ELTE gt@inf.elte.hu 0.csoport Feladat Egy osztályba n diák jár, akik m darab tantárgyat

Részletesebben

Eljárások és függvények

Eljárások és függvények Eljárások és függvények Jegyzet Összeállította: Faludi Anita 2012. Bevezetés Ez a jegyzet elsősorban azoknak a diákoknak készült, akiket tanítok, ezért a jegyzet erőteljesen hiányos. Az olvasó egy percig

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

2019, Funkcionális programozás. 4. el adás. MÁRTON Gyöngyvér

2019, Funkcionális programozás. 4. el adás. MÁRTON Gyöngyvér Funkcionális programozás 4. el adás Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2019, tavaszi félév Mir l volt szó? GHC parancsok fenntartott szavak

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

PROGRAMTERVEZŐ INFORMATIKUS ALAPKÉPZÉSI SZAK

PROGRAMTERVEZŐ INFORMATIKUS ALAPKÉPZÉSI SZAK PROGRAMTERVEZŐ INFORMATIKUS ALAPKÉPZÉSI SZAK 1. Az alapképzési szak megnevezése: programtervező informatikus (Computer Science) 2. Az alapképzési szakon szerezhető végzettségi szint és a szakképzettség

Részletesebben

Komponens alapú programozás Bevezetés

Komponens alapú programozás Bevezetés Komponens alapú programozás Bevezetés Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék Ez a tananyag felhasználja a TEMPUS S_JEP-12495-97 Network Computing Chapter 8 Developing of Network Computing

Részletesebben

Neme nő Születési dátum 26/10/1988 Állampolgárság magyar

Neme nő Születési dátum 26/10/1988 Állampolgárság magyar SZEMÉLYI ADATOK Nagy Noémi Magyarország, 1165 Budapest, Újszász utca 45/B K. ép. I. lph. 3. em. 2. 06 70 340 7335 matnagyn@uni-miskolc.hu http://uni-miskolc.hu/~matnagyn Neme nő Születési dátum 26/10/1988

Részletesebben

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel Majzik István Micskei Zoltán BME Méréstechnika és Információs Rendszerek Tanszék 1 Modell alapú fejlesztési folyamat (részlet)

Részletesebben

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008 Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 007/008 Az Előadások Témái Bevezető: mi a mesterséges intelligencia... Tudás reprezentáció i stratégiák Szemantikus hálók / Keretrendszerek

Részletesebben

A SZAKDOLGOZAT SZERKESZTÉSE

A SZAKDOLGOZAT SZERKESZTÉSE A SZAKDOLGOZAT SZERKESZTÉSE Főiskolai és BSc szakokon Szakdolgozat 1. A szakdolgozat nyelve: magyar vagy angol. 2. A szakdolgozat alakja: A4 formátum, bekötött, fekete színű kemény kötés. 3. A szakdolgozat

Részletesebben

A TANTÁRGY ADATLAPJA

A TANTÁRGY ADATLAPJA A TANTÁRGY ADATLAPJA 1. A képzési program adatai 1.1 Felsőoktatási intézmény Babeș Bolyai Tudományegyetem 1.2 Kar Matematika és Informatika Kar 1.3 Intézet Magyar Matematika és Informatika Intézet 1.4

Részletesebben

2016, Funkcionális programozás

2016, Funkcionális programozás Funkcionális programozás 2. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2016, tavaszi félév Miről volt szó? Programozási paradigmák: imperatív,

Részletesebben

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb. SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu Mesterséges intelligencia oktatás a DE Informatikai

Részletesebben

Memo: Az alábbi, "természetes", Gentzen típusú dedukciós rendszer szerint készítjük el a levezetéseket.

Memo: Az alábbi, természetes, Gentzen típusú dedukciós rendszer szerint készítjük el a levezetéseket. Untitled 2 1 Theorema Predikátumlogika 1 3 Natural Deduction (Gentzen mag/alap kalkulus) Cél: a logikai (szematikai) következményfogalom helyett a (szintaktikai) levethetõség vizsgálata. A bizonyítási

Részletesebben

Funkcionális Nyelvek 2 (MSc)

Funkcionális Nyelvek 2 (MSc) Funkcionális Nyelvek 2 (MSc) Páli Gábor János pgj@elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar Programozási Nyelvek és Fordítóprogramok Tanszék Tematika A (tervezett) tematika rövid összefoglalása

Részletesebben

Új típusú döntési fa építés és annak alkalmazása többtényezős döntés területén

Új típusú döntési fa építés és annak alkalmazása többtényezős döntés területén Új típusú döntési fa építés és annak alkalmazása többtényezős döntés területén Dombi József Szegedi Tudományegyetem Bevezetés - ID3 (Iterative Dichotomiser 3) Az ID algoritmusok egy elemhalmaz felhasználásával

Részletesebben

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba Témavezető: Horváth Zoltán és Simon Thompson OTDK 2007, Miskolc Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK

Részletesebben

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018 Előadás Előadás Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018 Szoftvertechnológia specializáció (törzsanyaggal együtt) Törzsanyag IPM-18KMTGY Kutatásmódszertan 0 2 Gy 1 3 1 0+2+1

Részletesebben

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018 Előadás Előfeltétel Előadás Előfeltétel Programtervező informatikus MSc nappali tagozat ajánlott tanterv 018 Szoftvertechnológia specializáció (törzsanyaggal együtt) Törzsanyag IPM-18KMTGY Kutatásmódszertan

Részletesebben

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

BASH script programozás II. Vezérlési szerkezetek 06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van

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

A DIPLOMAMUNKA FORMAI KÖVETELMÉNYEI JAVASLAT

A DIPLOMAMUNKA FORMAI KÖVETELMÉNYEI JAVASLAT A DIPLOMAMUNKA FORMAI KÖVETELMÉNYEI JAVASLAT A diplomamunka kötelező részei (bekötési sorrendben) 1. Fedőlap - Bal felső sarokban a kiíró tanszék megnevezése (ha két tanszékkel együttműködve dolgozzuk

Részletesebben

Szoftver-modellellenőrzés absztrakciós módszerekkel

Szoftver-modellellenőrzés absztrakciós módszerekkel Szoftver-modellellenőrzés absztrakciós módszerekkel Hajdu Ákos Formális módszerek 2017.03.22. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék 1 BEVEZETŐ 2

Részletesebben

SZÁMÍTÓGÉPES VIZUALIZÁCIÓ A MATEMATIKA TANÍTÁSÁBAN: ESZKÖZÖK, FEJLESZTÉSEK, TAPASZTALATOK

SZÁMÍTÓGÉPES VIZUALIZÁCIÓ A MATEMATIKA TANÍTÁSÁBAN: ESZKÖZÖK, FEJLESZTÉSEK, TAPASZTALATOK SZÁMÍTÓGÉPES VIZUALIZÁCIÓ A MATEMATIKA TANÍTÁSÁBAN: ESZKÖZÖK, FEJLESZTÉSEK, TAPASZTALATOK Karsai János, karsai@silver.szote.u-szeged.hu, Forczek Erzsébet, forczek@dmi.szote.u-szeged.hu, Nyári Tibor, nyari@dmi.szote.u-szeged.hu

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

2018. február 2. Referált cikkek / Papers in referred proceedings [11], [12].

2018. február 2. Referált cikkek / Papers in referred proceedings [11], [12]. Publikációs lista Diviánszky Péter 2018. február 2. Folyóirat cikkek / Journal papers [15], [16], [3], [1]. Referált cikkek / Papers in referred proceedings [11], [12]. Konferencia kiadványban megjelent

Részletesebben

Továbbtanulás, pályakövetés

Továbbtanulás, pályakövetés Továbbtanulás, pályakövetés 2002-2003 Gimnázium, Idegenforgalmi szakközépiskola, Vendéglátóipari 199 fő % szakközépiskola 70 43 71 44 szakképzésre 49 30 2003-2004 Gimnázium 102 fő % 51 50 49 48 szakképzésre

Részletesebben

Modellellenőrzés a vasút automatikai rendszerek fejlesztésében. XIX. Közlekedésfejlesztési és beruházási konferencia Bükfürdő

Modellellenőrzés a vasút automatikai rendszerek fejlesztésében. XIX. Közlekedésfejlesztési és beruházási konferencia Bükfürdő Modellellenőrzés a vasút automatikai rendszerek fejlesztésében XIX. Közlekedésfejlesztési és beruházási konferencia Bükfürdő 2018.04.25-27. Tartalom 1. Formális módszerek state of the art 2. Esettanulmány

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

III. Alapfogalmak és tervezési módszertan SystemC-ben

III. Alapfogalmak és tervezési módszertan SystemC-ben III. Alapfogalmak és tervezési módszertan SystemC-ben A SystemC egy lehetséges válasz és egyben egyfajta tökéletesített, tovább fejlesztett tervezési módszertan az elektronikai tervezés területén felmerülő

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

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

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása 1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június

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

Diszkrét matematika I.

Diszkrét matematika I. Diszkrét matematika I. középszint 2013 ősz 1. Diszkrét matematika I. középszint 8. előadás Mérai László merai@compalg.inf.elte.hu compalg.inf.elte.hu/ merai Komputeralgebra Tanszék 2013 ősz Kombinatorika

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

SZOFTVEREK A SORBANÁLLÁSI ELMÉLET OKTATÁSÁBAN

SZOFTVEREK A SORBANÁLLÁSI ELMÉLET OKTATÁSÁBAN SZOFTVEREK A SORBANÁLLÁSI ELMÉLET OKTATÁSÁBAN Almási Béla, almasi@math.klte.hu Sztrik János, jsztrik@math.klte.hu KLTE Matematikai és Informatikai Intézet Abstract This paper gives a short review on software

Részletesebben

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

Programozási nyelvek a közoktatásban alapfogalmak I. előadás Programozási nyelvek a közoktatásban alapfogalmak I. előadás Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig)

Részletesebben

Leképezések. Leképezések tulajdonságai. Számosságok.

Leképezések. Leképezések tulajdonságai. Számosságok. Leképezések Leképezések tulajdonságai. Számosságok. 1. Leképezések tulajdonságai A továbbiakban legyen A és B két tetszőleges halmaz. Idézzünk fel néhány definíciót. 1. Definíció (Emlékeztető). Relációknak

Részletesebben

Szoftverminőségbiztosítás

Szoftverminőségbiztosítás NGB_IN003_1 SZE 2014-15/2 (13) Szoftverminőségbiztosítás Szoftverminőség és formális módszerek Formális módszerek Formális módszer formalizált módszer(tan) Formális eljárások alkalmazása a fejlesztésben

Részletesebben

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat Formális nyelvek a gyakorlatban Formális nyelvek, 1 gyakorlat Segédanyagok Célja: A programozási nyelvek szintaxisának leírására használatos eszközök, módszerek bemutatása Fogalmak: BNF, szabály, levezethető,

Részletesebben

Programozás alapjai (ANSI C)

Programozás alapjai (ANSI C) Programozás alapjai (ANSI C) 1. Előadás vázlat A számítógép és programozása Dr. Baksáné dr. Varga Erika adjunktus Miskolci Egyetem, Informatikai Intézet Általános Informatikai Intézeti Tanszék www.iit.uni-miskolc.hu

Részletesebben

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék 2017/18 2. félév 3. Előadás Dr. Kulcsár Gyula egyetemi docens Kereső algoritmusok alkalmazása

Részletesebben

Programozási Technológia 1. 1. előadás bevezetés. Előadó: Lengyel Zsolt

Programozási Technológia 1. 1. előadás bevezetés. Előadó: Lengyel Zsolt Programozási Technológia 1. 1. előadás bevezetés Előadó: Lengyel Zsolt Tartalom Információk a tantárggyal kapcsolatban Programozási technológiai eszközök áttekintése UML tervezőeszközök JAVA fejlesztőeszközök,

Részletesebben

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

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor Gráfok 2. Legrövidebb utak, feszítőfák előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok 2

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

Példa a report dokumentumosztály használatára

Példa a report dokumentumosztály használatára Példa a report dokumentumosztály használatára Szerző neve évszám Tartalomjegyzék 1. Valószínűségszámítás 5 1.1. Események matematikai modellezése.............. 5 1.2. A valószínűség matematikai modellezése............

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

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA Szoftver Verifikáció és Validáció, 2015 Ősz Vaitkus Márton Tartalom Motiváció Maple MiniMaple MiniMaple típusellenőrzése MiniMaple formális specifikációja MiniMaple

Részletesebben

A fröccs szintaxisa és operációs szemantikája

A fröccs szintaxisa és operációs szemantikája A fröccs szintaxisa és operációs szemantikája Kaposi Ambrus Eötvös Loránd Tudományegyetem akaposi@inf.elte.hu 2017. október 2. 1. Bevezetés Ipari partnerünk megkereste az Informatikai Kar Programozási

Részletesebben

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit. 2. A VALÓS SZÁMOK 2.1 A valós számok aximómarendszere Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit. 1.Testaxiómák R-ben két művelet van értelmezve, az

Részletesebben

Oktatási segédlet 2014

Oktatási segédlet 2014 Oktatási segédlet 2014 A kutatás a TÁMOP 4.2.4.A/2-11-1-2012- 0001 azonosító számú Nemzeti Kiválóság Program Hazai hallgatói, illetve kutatói személyi támogatást biztosító rendszer kidolgozása és működtetése

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Reguláris kifejezések - alapok, BASH Operációs rendszerek 9. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor

Részletesebben

Általános algoritmustervezési módszerek

Általános algoritmustervezési módszerek Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás

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

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok Program verifikálás Konkurens programozási megoldások terjedése -> verifikálás szükséges, (nehéz) logika Legszélesebb körben alkalmazott

Részletesebben

1000 forintos adósságunkat, de csak 600 forintunk van. Egyetlen lehetőségünk, hogy a

1000 forintos adósságunkat, de csak 600 forintunk van. Egyetlen lehetőségünk, hogy a A merész játékok stratégiája A következő problémával foglalkozunk: Tegyük fel, hogy feltétlenül ki kell fizetnünk 000 forintos adósságunkat, de csak 600 forintunk van. Egyetlen lehetőségünk, hogy a még

Részletesebben

Specifikáció alapú teszttervezési módszerek

Specifikáció alapú teszttervezési módszerek Szoftverellenőrzési technikák Specifikáció alapú teszttervezési módszerek Majzik István, Micskei Zoltán http://www.inf.mit.bme.hu/ 1 Klasszikus tesztelési feladat A tesztelendő program beolvas 3 egész

Részletesebben

Programozási nyelvek 6. előadás

Programozási nyelvek 6. előadás Programozási nyelvek 6. előadás Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig) Számítási modell (hogyan

Részletesebben

Aritmetikai kifejezések lengyelformára hozása

Aritmetikai kifejezések lengyelformára hozása Aritmetikai kifejezések lengyelformára hozása Készítették: Santák Csaba és Kovács Péter, 2005 ELTE IK programtervező matematikus szak Aritmetikai kifejezések kiértékelése - Gyakran felmerülő programozási

Részletesebben

Bevezetés a Python programozási nyelvbe

Bevezetés a Python programozási nyelvbe Bevezetés a Python programozási nyelvbe 7. Gyakorlat osztályok, objektumok (utolsó módosítás 2018. aug. 28.) Szathmáry László Debreceni Egyetem Informatikai Kar 2018-2019, 1. félév OO programozás Pythonban

Részletesebben

Objektumorientált paradigma és a programfejlesztés

Objektumorientált paradigma és a programfejlesztés Objektumorientált paradigma és a programfejlesztés Vámossy Zoltán vamossy.zoltan@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Ficsor Lajos (Miskolci Egyetem) prezentációja alapján Objektumorientált

Részletesebben

Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Formális modellek használata és értelmezése Formális modellek

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

Valószínűségi modellellenőrzés Markov döntési folyamatokkal

Valószínűségi modellellenőrzés Markov döntési folyamatokkal Valószínűségi modellellenőrzés Markov döntési folyamatokkal Hajdu Ákos Szoftver verifikáció és validáció 2015.12.09. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek

Részletesebben