Deklaratív programozás

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

Deklaratív programozás KÖVETELMÉNYEK, TUDNIVALÓK. Deklaratív programozás: tudnivalók. Deklaratív programozás: tudnivalók (folyt.)

Deklaratív Programozás

Számonkérési formák a BME-n a Deklaratív programozás című tárgyban

A szemantikus világháló oktatása

Magad, uram, ha szolgád nincs

BEVEZETŐ Tantárgyi követelmények

Digitális technika VIMIAA02

Adatbázis rendszerek Info MÁTRIX

Logikai programozás ADMINISZTRATÍV KÉRDÉSEK KÖVETELMÉNYRENDSZER FŐBB PONTOK NÉHÁNY BIZTATÓ SZÓ

FÉLÉVI KÖVETELMÉNYEK 2010/2011. tanév II. félév INFORMATIKA SZAK

Információs technológiák 0. Ea: Infó Mátrix (2015)

Számítástechnika I. 0. Ea: Infó Mátrix (2018)

ADATBÁZISOK, 2018 ősz

Számítástechnika I. 0. Ea: Infó Mátrix (2016)

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

Bevezetés. Dr. Iványi Péter

KÖTELEZŐ PROGRAM, SZÁMONKÉRÉSEK. Részletek

Digitális technika VIMIAA02

A TANTÁRGY ADATLAPJA

TANTÁRGY ADATLAP és tantárgykövetelmények Cím:

ADATBÁZISOK, 2017 ősz

FELADAT KIÍRÁS ÉS PONTOZÓ LAP

FELADAT KIÍRÁS ÉS PONTOZÓ LAP

TANTÁRGY ADATLAP és tantárgykövetelmények Cím: Épületszerkezettan I.

I. rész Bevezetés. Deklaratív Programozás. Tartalom. A tárgy témája. Szeredi Péter 1 Kápolnai Richárd ősz

Gépipari Technológiai Intézet

Digitális technika VIMIAA02

KÖVETELMÉNYRENDSZER NÖVÉNYTERMESZTÉSTANBÓL 2013/2014. tanév 1. félévében

Vállalati információs rendszerek I, MIN5B6IN, 5 kredit, K. 4. A meghirdetés ideje (mintatanterv szerint vagy keresztfélében):

A TANTÁRGY ADATLAPJA

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

Mérnökinformatikus alapszak (BSc)

Digitális technika VIMIAA01

1. oldal Verzió ZH-sávok. 1.félév 3.félév 5. félév 7. félév H: H: 8-10 K: 8-10 Sze: 8-10 Cs: 8-10 Cs: P: 14-16

HALLGATÓI TÁJÉKOZTATÓ 2015/16/2. Gépelemek II.

Adatbázis-kezelés alapjai 1. Ea: Infó Mátrix. Lehet, nem lehet

ZH-sávok. 1.félév 3.félév 5. félév 7. félév H: H: 8-10 K: 8-10 Sze: 8-10 Cs: 8-10 Cs: P: 14-16

ZH-sávok. 1.félév 3.félév 5. félév 7. félév K: H: 8-10 K: 8-10 Sze: 8-10 P: 8-10 Cs: P: 14-16

1. A tantárgy neve, kódja Közművek I., BMEEOVKAT42 2. Az oktatás nyelve magyar, angol

Szoftver-technológia I.

Előzetes követelmény(ek): Feltételezett tudásanyag, előképzettségi szint: Szervezés 1. Oktató tanszék(ek) 6 :

SZOFTVERFEJLESZTÉS. Földtudományi mérnöki mesterszak / Geoinformatikus-mérnöki szakirány. 2017/18 II. félév. A kurzus ebben a félévben nem indult

Előzetes követelmény(ek): Feltételezett tudásanyag, előképzettségi szint: Épületszerkezettan és építéstechnológia ismerete. Oktató tanszék(ek) 6 :

Programozás alapjai (ANSI C)

II. rész. Cékla: deklaratív programozás C++-ban. Tartalom. Imperatív és deklaratív programozási nyelvek. A deklaratív programozás jelmondata

Stratégiai és Üzleti Tervezés

Stratégiai és Üzleti Tervezés

TANTÁRGY ADATLAP és tantárgykövetelmények

6. A tantervek szerepe az oktatás tartalmi szabályozásában

1. oldal Verzió ZH-sávok. 1.félév K: P: Ütemezett tantárgyak táblázatosan. Terem

TÁJÉKOZTATÓ A FÉLÉVBEN ÉS AZ UTÁN FELVÉTELT NYERTEK RÉSZÉRE 1

MÉRNÖKINFORMATIKUS ALAPSZAK TANULMÁNYI TÁJÉKOZATÓ 2017.

TANTÁRGYI ÚTMUTATÓ. Vállalkozások pénzügyi alapjai

Számítógépes alapismeretek

BEVEZETŐ Tantárgyi követelmények

TANTÁRGYI ADATLAP I. TANTÁRGYLEÍRÁS

KÖVETELMÉNYEK 2017/ félév. Informatika II.

OKTATÁSI REND TAVASZI FÉLÉV

SAJTOLÓ HEGESZTÉS 1: 0-49% ; 2: 50-59% ; 3: 60-69% ; 4: 70-79% ; 5: %

TANTÁRGYI ADATLAP I. TANTÁRGYLEÍRÁS

Oktatói tájékoztató a vizsgaidőszakról

Apple Swift alapú alkalmazás fejlesztés gyakorlat. 1. Gyakorlat Bevezetés

NÖVÉNYSZERVEZETTAN TANTÁRGY KÖVETELMÉNYRENDSZERE

NAPPALI KÉPZÉS 1. ÉVFOLYAM:

Számítógépek architektúrák. Architektúrák

Záróvizsga és MSc felvételi a BME Villamosmérnöki és Informatikai Karon

NAPPALI KÉPZÉS 1. ÉVFOLYAM:

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Bemutatkozás. Bemutatkozás. Bemutatkozás. Bemutatkozás. 1. előadás. A tárgy címe: A programozás alapjai 1

1. oldal Verzió ZH-sávok. 1.félév 3.félév 5.félév K: H: 8-10 K: 8-10 P: 8-10 Cs: P: 14-16

Adatbázisok elmélete

BME ÉPÍTÉSZETTÖRTÉNETI ÉS MŰEMLÉKI TANSZÉK NAPPALI- ÉS ANGOL NYELVŰ KÉPZÉS OKTATÁSI REND TAVASZI FÉLÉV

Csima Judit szeptember 6.

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

Záróvizsga és MSc felvételi a BME Villamosmérnöki és Informatikai Karon

Játékelmélet és stratégiai gondolkodás

Kutatásmódszertan (GTK)

GP1022L A megváltozott képességű tanulók tanítási, módszertani sajátosságai

2015/2016 I. félév ZH beosztása VIK 1. táblázat Villamosmérnök szak ütemterve

ALKALMAZOTT ÁRAMLÁSTAN MFKGT600654

2016/2017 I. félév ZH beosztása VIK 2. táblázat Mérnök informatikus szak ütemterve

TANTÁRGYI KÖVETELMÉNY Élelmiszeripari gépészmérnök szak, gépész szakirány, III. évf. I. félév. 2004/2005. tanév

Matematika A1a-Analízis (keresztfélév) TÁRGYKÖVETELMÉNY Gépészmérnöki Kar

TANTÁRGYI ADATLAP I. TANTÁRGYLEÍRÁS

1. oldal Verzió ZH-sávok. 1.félév 3.félév 5.félév H: H: 8-10 K: 8-10 Cs: 8-10 Cs: P: 14-16

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

TANTÁRGY ADATLAP és tantárgykövetelmények

TANTÁRGY ADATLAP és tantárgykövetelmények

Tárgyfelelős kódja, címe)

Mikroökonómia NGB_AK005_1

Részletes tantárgyprogram és követelményrendszer

BEVEZETŐ Tantárgyi követelmények

konzultáció V. A feladat beadása a félév értékelése

Neumann János Egyetem GAMF Műszaki és Informatikai Kar

Tantárgyi kommunikációs dosszié

PPKE ITK, 2014/2015 tanév. I. félév. Tantárgyi adatok és követelmények

2014/2015 I. félév ZH beosztása VIK 1. táblázat Villamosmérnök szak ütemterve. Villamosmérnöki szak

Két ZH előre megbeszélt időpontban: okt ; dec

1. oldal Verzió ZH-sávok. 1.félév K: P: Ütemezett tantárgyak táblázatosan. Terem

ZH-sávok. 1.félév 3.félév 5.félév K: H: 8-10 K: 8-10 P: 8-10 Cs: P: Ütemezett tantárgyak táblázatosan, évfolyamok sorrendjében

Átírás:

Deklaratív programozás Hanák Péter 1 Szeredi Péter 2 1 hanak@iit.bme.hu BME Irányítástechnika és Informatika Tanszék 2 szeredi@cs.bme.hu BME Számítástudományi és Információelméleti Tanszék 2008. őszi félév mérnök informatika szak, alapszak (dp08a) Bevezetés (1. ea.) 1 / 20

Tartalom 1 Bevezetés Deklaratív programozás Honlap, ETS, levelezési lista, szakirodalom Félévközi követelmények, vizsga (dp08a) Bevezetés (1. ea.) 2 / 20

Deklaratív programozás: mi az? Wikipédia: 1 A program is declarative if it describes what something is like, rather than how to create it. 2 A program is declarative if it is written in a purely functional, logic, or constraint programming language. Példák deklaratív nyelvcsaládokra: Korlát-alapú programozási nyelvek (pl. CLP(R), CLP/Prolog) SQL (Structured Query Language) Reguláris kifejezések Interfész-leíró nyelvek Követelmény-leíró nyelvek Logikai programozási nyelvek (pl. Prolog) Funkcionális programozási nyelvek (pl. Lisp, SML,..., Erlang) (dp08a) Bevezetés (1. ea.) 3 / 20

A deklaratív programozás jelmondata MIT és nem HOGYAN (WHAT rather than HOW): a megoldás módja helyett a megoldandó feladat leírását kell megadni A gyakorlatban mindkét szemponttal foglalkozni kell Kettős szemantika: deklaratív szemantika MIT (milyen feladatot) old meg a program; procedurális szemantika HOGYAN oldja meg a program a feladatot. (dp08a) Bevezetés (1. ea.) 4 / 20

Deklaratív programozás miért tanítjuk? Új alkalmazási területek következtetési módszerek (pl. korlát-alapú programozás) nagyfokú megbízhatóság elosztott, hálózatos működés párhuzamos működés, pl. többmagos processzorok szemantikus web, ontológiakezelés szimbolikus alkalmazások, pl. mesterséges intelligencia (dp08a) Bevezetés (1. ea.) 5 / 20

Deklaratív programozás miért tanítjuk? Új gondolkodási stílus dekomponálható programok: a programrészek (relációk, függvények) önálló jelentéssel bírnak verifikálható programok: a kód és a jelentés összevethető Új, magas szintű programozási elemek rekurzió (algoritmus, adatstruktúra) mintaillesztés visszalépéses keresés magasabb rendű függvények (dp08a) Bevezetés (1. ea.) 6 / 20

Imperatív, deklaratív Imperatív program felszólító módú, utasításokból áll változó: többször kaphat értéket a program futása során int pow(int a, int n) { // pow(a,n) = a ^ n int p = 1; // Legyen p értéke 1! while (n > 0) { // Amíg n>0 ismételd ezt: n = n-1; // Csökkentsd n-et 1-gyel! p = p*a; } // Szorozd p-t a-val! return p; } // Add vissza p végértékét Deklaratív program kijelentő módú, egyenletekből, állításokból áll változó: egyszer kaphat értéket a program futása során fun pow(a, n) = if n > 0 (* Ha n > 0 *) then a*pow(a,n-1) (* akkor a^n = a*a^(n-1) *) else 1 (* egyébként a^n = 1 *) (dp08a) Bevezetés (1. ea.) 7 / 20

Tartalom 1 Bevezetés Deklaratív programozás Honlap, ETS, levelezési lista, szakirodalom Félévközi követelmények, vizsga (dp08a) Bevezetés (1. ea.) 8 / 20

Honlap, ETS, levelezési lista Honlap http://dp.iit.bme.hu/dp-current ETS, az Elektronikus TanárSegéd http://dp.iit.bme.hu/ets Levelezési lista: http://www.iit.bme.hu/mailman/listinfo/dp-l. A listára automatikusan felvesszük a tárgy hallgatóit az ETS-beli címükkel. Címet módosítani csak az ETS-ben lehet. A listára levelet küldeni a dp-l@iit.bme.hu címre lehet. Csak a feliratkozási címről küldött levelek jutnak el moderátori jóváhagyás nélkül a listatagokhoz. (dp08a) Bevezetés (1. ea.) 9 / 20

Prolog-jegyzet, szakirodalom Szeredi Péter, Benkő Tamás: Deklaratív programozás. Bevezetés a logikai programozásba. Budapest, 2005 Nyomtatott változata korlátozott számban megvásárolható a SZIT-en a V2.104 szobában, Bazsó Lászlónénál, 10:30-12:00 (hétfő-péntek) és 13:30-15:30 (hétfő-csütörtök) között; ára 1000 Ft Elektronikus változata letölthető a honlapról (ps, pdf) A SICStus Prolog kézikönyve (angol): http://www.sics.se/isl/sicstuswww/site/documentation.html (dp08a) Bevezetés (1. ea.) 10 / 20

Erlang-szakirodalom Joe Armstrong: Programming Erlang. Software for a Concurrent World. The Pragmatic Bookshelf, 2007. http://www.pragprog.com/titles/jaerlang/programming-erlang Joe Armstrong, Robert Virding, Claes Wikström, Mike Williams: Concurrent Programming in Erlang. Second Edition. Prentice Hall, 1996. ISBN 0-13-508301-X. Az első rész szabadon letölthető PDF-ben: http://erlang.org/download/erlang-book-part1.pdf On-line Erlang documentation http://erlang.org/doc.html Wikibooks on Erlang Programming http://en.wikibooks.org/wiki/erlang_programming (dp08a) Bevezetés (1. ea.) 11 / 20

Fordító- és értelmezőprogramok SICStus Prolog (3.12 verzió, licensz az ETS-ben, <http://dp.iit.bme.hu/ets>) Erlang/OTP (R12, szabad szoftver) Mindkettő telepítve van a kempelen.inf.bme.hu-n SICStus Prolog letölthető a <http://dp.iit.bme.hu> címről (Linux, Win) Erlang/OTP letölthető a <http://erlang.org címről> (Linux, Win) Webes gyakorló felület (Prolog, SML) az ETS-ben Kézikönyvek HTML-, ill. PDF-változatban Emacs-szövegszerkesztő (SML-, Erlang, Prolog-módok) letölthető a <http://www.gnu.org/software/emacs> címről (Linux, Win) (dp08a) Bevezetés (1. ea.) 12 / 20

Tartalom 1 Bevezetés Deklaratív programozás Honlap, ETS, levelezési lista, szakirodalom Félévközi követelmények, vizsga (dp08a) Bevezetés (1. ea.) 13 / 20

Nagy házi feladat (NHF) Programozás mindkét nyelven (Prolog, Erlang) Mindenkinek önállóan kell kódolnia (programoznia)! Hatékony (időlimit!), jól dokumentált ( kommentezett ) programok A két programhoz közös, 5 10 oldalas fejlesztői dokumentáció (PDF, HTML, TXT; de nem DOC és nem RTF) Kiadás a 6. héten, a honlapon, letölthető keretprogrammal Beadás a 12. héten; elektronikus úton (ld. honlap) A beadáskor és a pontozáskor külön-külön tesztsorozatot használunk (nehézségben hasonlókat, de nem azonosakat) A minden tesztesetet hibátlanul megoldó programok létraversenyen vesznek részt (hatékonyság, gyorsaság plusz pontokért, megajánlott jegyért) (dp08a) Bevezetés (1. ea.) 14 / 20

Nagy házi feladat (folyt.) Nemcsak nagyon ajánlott, de kötelező is! :-) Mindkét nyelven be kell adni A beadási határidőig többször is beadható, csak az utolsót értékeljük Pontozása mindkét nyelvből: helyes és időkorláton belüli futás esetén a 10 teszteset mindegyikére 0,5-0,5 pont, összesen max. 5 pont, feltéve, hogy legalább 4 teszteset sikeres a dokumentációra, a kód olvashatóságára, kommentezettségére max. 2,5 pont tehát nyelvenként összesen max. 7,5 pont szerezhető A NHF súlya az osztályzatban: 15% (a 100 pontból 15) (dp08a) Bevezetés (1. ea.) 15 / 20

További félévközi követelmények Kis házi feladatok (KHF) 2-3 feladat Prologból is, Erlang-ból is Beadás elektronikus úton (ld. honlap) Nagyon ajánlott, ezért kötelező is a beadása Minden feladat hibátlan megoldásáért 1-1 jutalompont jár Legalább a kisfeladatok 50%-ának sikeresnek is kell lennie, közülük legalább egynek Prologból és egynek Erlangból Gyakorló feladatok Nem kötelező, de a sikeres ZH-hoz, vizsgához nagyon hasznos Gyakorlás az ETS rendszerben (lásd honlap) (dp08a) Bevezetés (1. ea.) 16 / 20

További félévközi követelmények (folyt.) Tantermi gyakorlatok Minden második héten csütörtökön gyakorló feladatokat oldunk meg a hallgatóság bevonásával, és lehetőséget adunk a közérdeklődésre számot tartó kérdések megbeszélésére. Laboratóriumi konzultációk Igény esetén esetleg számítógép melletti konzultációs lehetőség az órarendi órákon kívül (dp08a) Bevezetés (1. ea.) 17 / 20

Nagyzárthelyi, pótzárthelyi (NZH, PZH, PPZH) A zárthelyi kötelező, semmilyen jegyzet, segédlet nem használható! 40%-os szabály (nyelvenként a maximális részpontszám 40%-a kell az eredményességhez). Az NZH a 10. héten, a PZH az utolsó oktatási hetekben lesz A PPZH-ra indokolt esetben, ismétlővizsga-jelleggel a vizsgaidőszak első három hetében egyetlen alkalommal adunk lehetőséget Az NZH anyaga az első két blokk (nagyjából az 1.-8. hét) tananyaga A PZH, ill. a PPZH anyaga azonos az NZH anyagával A zárthelyi súlya az osztályzatban: 15% (a 100 pontból 15) Több zárthelyi megírása esetén a zárthelyikre kapott pontszámok közül a legnagyobbat vesszük figyelembe (dp08a) Bevezetés (1. ea.) 18 / 20

Vizsga Vizsgára az a hallgató bocsátható, aki aláírást szerzett a jelen félévben vagy a jelen félévet megelőző öt évben A vizsga szóbeli, felkészülés írásban Prolog, Erlang: több kisebb feladat (programírás, -elemzés) kétszer 35 pontért A vizsgán szerezhető max. 70 ponthoz adjuk hozzá a jelen félévben félévközi munkával szerzett pontokat: ZH: max. 15 pont, NHF: max. 15 pont, továbbá a pluszpontokat (KHF, létraverseny) A vizsgán semmilyen jegyzet, segédlet nem használható, de lehet segítséget kérni Ellenőrizzük a nagy házi feladat és a zárthelyi hitelességét 40%-os szabály (nyelvenként a max. részpontszám 40%-a kell az eredményességhez) Korábbi vizsgakérdések a honlapon találhatók (dp08a) Bevezetés (1. ea.) 19 / 20

Megajánlott jegy A megajánlott jegy új lehetőség. Idézet a félévközi követelményekből <https://www.vik.bme.hu/kepzes/targyak/visza402/>: Jó (4) megajánlott jegyet kap az, aki a félévközi követelmények teljesítése mellett mindkét programozási nyelvből bejut a létraversenybe, és a házi feladatát sikeresen megvédi az elővizsgán. Jeles (5) megajánlott jegyet kap az, aki emellett mindkét programozási nyelvből legalább 40%-os eredményt ér el a létraversenyen (azaz mindkét programja megoldja a létraverseny teszteseteinek legalább 40%-át). (dp08a) Bevezetés (1. ea.) 20 / 20