„Deklaratív programozás” változatai közötti eltérés

A VIK Wikiből
U944eq (vitalap | szerkesztései)
Nincs szerkesztési összefoglaló
aNincs szerkesztési összefoglaló
 
(30 közbenső módosítás, amit 13 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
{{GlobalTemplate|Infoalap|DeklaPo}}
{{Tantárgy
|tárgykód=VISZAD00
|régitárgykód=VISZA402,VISZA403
|nev=Deklaratív programozás
|kredit=3
|felev=7
|kereszt=nincs
|kiszh=nincs
|vizsga=nincs
|nagyzh=van
|hf=7 kisHF + opcionális nagyHF
|szak=info
|tad=https://www.vik.bme.hu/kepzes/targyak/VISZA402/
|targyhonlap=https://dp.iit.bme.hu/
|levlista=[http://bagira.iit.bme.hu/mailman/listinfo/dp-l lista]
}}


'''Mottó:''' Ami igaz, nem biztos, hogy gyors is.
Az informatikus alapképzés többi tárgyában a programozási paradigmák közül a procedurális és objektumorientált paradigmákra esik a hangsúly. Ezekkel a módszerekkel a Hogyan? kérdést igyekszünk megválaszolni kódírásnál. Az algoritmusok, állapotok pontos ismerete szükséges. Létezik egy másik család is, a deklaratív programozás, ami elsősorban a Mit? kérdésre ad választ: nem határozzuk meg pontosan, hogyan kapjuk meg az eredményt, csak azt, hogy mire van szükségünk. A tárgy ezt a családot mutatja be egy logikai és egy funkcionális programozási nyelven keresztül.


__TOC__
==Követelmények==
===Félévközi feladatok===
* Sikeres nagyZH (azaz mindkét nyelvből legalább 40%-os teljesítmény)
* Legalább 3 kisházi sikeres beadása (de mindkét nyelvből legalább 1)
===Megajánlott jegy===
* Azok a hallgatók, akiknek a nagy házi feladata mindkét nyelven bejut a létraversenybe (80% vagy jobb teszteredmény), megajánlott jegyet kaphatnak. A létraversenyben az alap teszteknél nehezebb, időigényesebb tesztesetekkel futtatják a megoldásod, így igencsak hatékonyan kell megírod.
** 4-es jegyhez a két nyelv nagy házijához dokumentációt is kell készíteni, és a házit meg kell védeni.
** Jeles megajánlott jegyet kap az, akinek programja ezen felül a létraverseny teszteseteinek legalább 40%-át időkorláton belül teljesíti.


==A tárgyról==
==A tárgyról==


* [[DeklaPoKedvCsinalo|Kedvcsináló, mikor válasszam ezt?]]
* [[Deklaratív programozás - Kedvcsináló | Kedvcsináló]]
* [[TargynevAjanlas|Ajánlott rövidítés]]: deklapo, dp
* '''Mottó:''' Ami igaz, nem biztos, hogy gyors is.
* [http://dp.iit.bme.hu/ A tárgy honlapja]
* [[Tantárgynevek rövidítései levlistás levelek tárgyához|Ajánlott rövidítés]]: dp/deklapo
* [http://www.vdk.bme.hu/targykov/standard/vifo2218.htm Tantárgy adatlap]
* [http://www.iit.bme.hu/mailman/listinfo/dp-l Levelezőlista] a tárgy saját levlistája. Érdemes ide írni ha valami kérdésed van (miért nem működik? mi a hiba?), az oktatók ill. a gyakokat tartó felsőbbéves kollegák is olvassák és általában válaszolnak is, ha nem teszi meg más.
* [http://info.sch.bme.hu/infosite.php?felevid=felev4&targyid=deklapo A tárgy lapja az InfoSiteon]


Kapcsolódó tárgyak:
===Kapcsolódó tárgyak===
* [[Nagy6LogProg|Nagyhatékonyságú logikai programozás]]
* [[Nagyhatékonyságú logikai programozás]]
* Válogatott fejezetek a logikai programozásból szeminárium


<div id="jegyzetek"></div>
==Miből érdemes tanulni?==
==Miből érdemes tanulni?==


* [http://dp.iit.bme.hu/dp-current/ Fóliák]
* [http://dp.iit.bme.hu/dp-current/ Fóliák]. A diasor nagyon jó, mindent meg lehet belőle tanulni.
* [[TankonyvAtvetel|Tankönyvigénylés]]
* [[Media:depo_ea_2016.pdf|A 2016-os előadás diák]]
* Szeredi Péter, Benkő Tamás: Deklaratív programozás. Bevezetés a logikai programozásba. Oktatási segédlet, 2004. [http://dp.iit.bme.hu/prolog/jegyzet/dp04s_jegyzet.pdf.gz Eredeti], [[Media:dp_2004_jegyzet.pdf | VIKWiki mirror – kereshető változat]].
* Prolog:
* Hanák D. Péter: Deklaratív programozás. Bevezetés a funkcionális programozásba. Oktatási segédlet, 2005. márc. [http://dp.iit.bme.hu/sml/fp-5ed-p1.pdf 1 oldal/lap], [http://dp.iit.bme.hu/sml/fp-5ed-p2.pdf 2 oldal/lap].
** jegyzet: Szeredi Péter, Benkő Tamás: Deklaratív programozás. Bevezetés a logikai programozásba. Oktatási segédlet, 2004. [http://dp.iit.bme.hu/prolog/jegyzet/dp04s_jegyzet.pdf.gz Eredeti], [[Media:dp_2004_jegyzet.pdf | VIKWiki mirror – kereshető változat]].
* [[SmlReferencia|Válogatás az SML alapkönyvtárából]] (könyv, B függelék)
* Erlang
** magyar könyv nincs, a diasorból érdemes tanulni
** ajánlott könyv: Joe Armstrong: Programming Erlang: Software for a Concurrent World
** ELTE anyagok: http://nyelvek.inf.elte.hu/leirasok/Erlang/
** ingyenes tutorial: http://learnyousomeerlang.com/


==Fakultatív gyakorlat==
==Gyakorlatok==
A tárgyból általában, de nem rendszeresen kéthetente hetente gyakorlatok vannak, az előadáson szereplő programozási nyelvnek megfelelően.


Vannak ún. fakultatív gyakorlatok, szerintem érdemes bemenni néha, általában az előadás után. Lehet kérdezni, elmondanak sok mindent, ha nem tudsz semmit, akkor is elmagyarázzák a dolgokat. Kishf megoldásban is lehet segítséget kérni, persze nem írják meg senki helyett, de segítenek ötletet adni vagy ilyesmi.
Gyakorlatok után érdemes az ETS-ben lévő feladatokat megoldani pluszban, önáló munkaként.


==Számonkérés==
==Kis házi feladatok==
* Kötelező beadni a 7 kisháziből 3-mat, de mindét nagy nyelvből legalább 1-1 kell hogy legyen.
* 3-3 feladat Prologból és Erlang-ból, és egy Céklából.
* Beadás ETS-en keresztül, automatikusan tesztelésre kerül.
* Minden feladat jó megoldásáért 1-1 pluszpont.
* Össz. max. +7 pont.


===Kis házi feladatok===
==Nagy házi feladat==
 
* Nem kötelező beadni. Ugyanakkor még ZH-ra készülés mellett is érdemes próbálkozni a feladat megoldásával, ráadásul néhány pontot könnyen lehet szerezni még akkor is, ha nem teljes és hatékony a megoldásod.
* Kötelező beadni a 7 kisháziből 3-at, de mindét nagy nyelvből legalább 1-1 kell hogy legyen. (&bdquo;Felhívjuk mindenki figyelmét, hogy a beadás kötelező, még akkor is, ha a program tesztelése nem sikeres.&rdquo;)
* 3-3 feladat Prologból és Erlang-ból.
* Beadás ETS-en keresztül.
* Minden feladat jó megoldásáért 1-1 jutalompont a vizsgán.
 
===Nagy házi feladat===
 
* Nem kötelező beadni.
* 1 feladat, amit Prologban és Erlangban is meg lehet oldani.
* 1 feladat, amit Prologban és Erlangban is meg lehet oldani.
* 10 teszteset, 0.5 pont/helyes lefutás/nyelv.
* 10 teszteset, 0,5 pont/helyes lefutás/nyelv.
* 5 pont a doksi.
* 2,5 pont a doksi nyelvenként.
* A 15 pont a vizsga max. 100 pontjának része!
* Össz. 15 pont.
* A nagy házi megoldása időigényes, sok dolgot kell számításba venni. Előre nézd meg, a többi tárgy mellett lesz-e rá időd.
* A nehézség ellenére mégis érdemes erre hajtani, hiszen rögtön ki tudod próbálni a programot, ZH-n sokkal bizonytalanabb leszel, több időd jut megtervezni és elkészíteni a feladatot.


Egy 2004-es feladat + megoldás + doksi: [https://wiki.sch.bme.hu/pub/Infoalap/DeklaPo/felhok.zip felhok.zip] (létraversenyen 4 pontot ért el).<br>
A doksi legyártásához írtam egy programot, ami a Prolog fejkommenteket html-lé alakítja: [https://wiki.sch.bme.hu/pub/Infoalap/DeklaPo/prolog2html.php.txt prolog2html.php].<br>
Használat: =php.exe prolog2html.php input.pl output.html=


====Létraverseny====
==Zárthelyi==
 
* Kötelező azoknak, akiknek nem fogadták el, vagy nem adtak be nagyházit.
* Ha a házi feladat mindegyik tesztesetre lefutott, indul a létraversenyen.
* 10 teszteset van, az időlimit általában 120-180 másodperc/teszteset.
* Pontszám = &sum; min(futási idő, időlimit).
* Ha valamelyik nyelven n. helyezést érsz el, max(8-n/2, 0) pluszpontot kapsz vizsgán.
 
===Zárthelyi===
 
* Kötelező!
* Semmilyen jegyzet, segédlet nem használható.
* Semmilyen jegyzet, segédlet nem használható.
* A megtanulandó könyvtári függvények és eljárások listája előre meg van adva, a ZH anyaga az előző hét végéig leadott anyag.
* A zh anyaga az egész féléves anyag, beleértve az előadáson elhangzott néhány alapszintű könyvtári függvényt/eljárást.
* A sikeres ZH feltétele a maximális részpontszám 40%-ának megszerzése mindkét nyelven.
* A sikeres zh feltétele a maximális részpontszám 40%-ának megszerzése mindkét nyelven.
* GyakIV a vizsgaidőszak első hetében.
* Össz. 85 pont.
* Súlya az osztályzatban 15%
* A ZH-n mindkét nyelv részének max pontszáma 85. A végeredménynél ezek számtani átlagát veszik.


===Vizsga===
* [[Deklaratív programozás - Tippek ZH-ra és vizsgára | Régi tárgyhoz tartozó tippek ZH-ra és vizsgára]]


* Írásbeli feladatmegoldással kombinált szóbeli vizsga.
==Hasznos fordítók és futtató környezetek a házikhoz==
* Prolog, Erlang: több kisebb feladat, kétszer 35 pontért (programírás, -elemzés).
===Emacs howto Windows alá===
* Semmilyen jegyzet, segédlet nem használható.
* A megtanulandó könyvtári függvények és eljárások listája előre meg van adva.
* A sikeres vizsga feltétele a maximális részpontszám 40%-ának megszerzése mindkét nyelven.


* [[DeklaPoVizsga|Vizsgasorok]]
Írtam egy rövid összegzést arról, hogy az emacsot mi módon lehet Windows alatt összekapcsolni az SML és Prolog fordítókkal: [[Deklaratív programozás - Emacs telepítési lépések|Emacs telepítési lépések]].
* [[DeklaPoTippek|Tippek ZH-ra és vizsgára]]
* [[DeklapoZV|Záróvizsga információk és tételkidolgozás]]


==Emacs howto Windows alá==
===Online Prolog IDE-k===


Írtam egy rövid összegzést arról, hogy az emacsot mi módon lehet Windows alatt összekapcsolni az SML és Prolog fordítókkal: [[DeklaPoEmacsHowTo|Emacs howto]].
* [http://swish.swi-prolog.org/ SWISH]
** Bal oldalt kell megadni a kódot, jobb alul a futtatandó parancsot és jobb felül jelenik meg az eredmény.
** Jobb alul a Solutions -> Debug (trace)-re kattintva lehet debug-olni.
* [http://www.tutorialspoint.com/execute_prolog_online.php tutorialspoint - Coding Ground]




[[Category:Infoalap]]
{{Lábléc_-_Mérnök_informatikus_alapszak 2014}}

A lap jelenlegi, 2024. május 28., 12:16-kori változata

Deklaratív programozás
Tárgykód
VISZAD00
Régi tárgykód
VISZA402,VISZA403
Általános infók
Szak
info
Kredit
3
Ajánlott félév
7
Keresztfélév
nincs
Követelmények
KisZH
nincs
NagyZH
van
Házi feladat
7 kisHF + opcionális nagyHF
Vizsga
nincs
Elérhetőségek
Levlista

Az informatikus alapképzés többi tárgyában a programozási paradigmák közül a procedurális és objektumorientált paradigmákra esik a hangsúly. Ezekkel a módszerekkel a Hogyan? kérdést igyekszünk megválaszolni kódírásnál. Az algoritmusok, állapotok pontos ismerete szükséges. Létezik egy másik család is, a deklaratív programozás, ami elsősorban a Mit? kérdésre ad választ: nem határozzuk meg pontosan, hogyan kapjuk meg az eredményt, csak azt, hogy mire van szükségünk. A tárgy ezt a családot mutatja be egy logikai és egy funkcionális programozási nyelven keresztül.

Követelmények

Félévközi feladatok

  • Sikeres nagyZH (azaz mindkét nyelvből legalább 40%-os teljesítmény)
  • Legalább 3 kisházi sikeres beadása (de mindkét nyelvből legalább 1)

Megajánlott jegy

  • Azok a hallgatók, akiknek a nagy házi feladata mindkét nyelven bejut a létraversenybe (80% vagy jobb teszteredmény), megajánlott jegyet kaphatnak. A létraversenyben az alap teszteknél nehezebb, időigényesebb tesztesetekkel futtatják a megoldásod, így igencsak hatékonyan kell megírod.
    • 4-es jegyhez a két nyelv nagy házijához dokumentációt is kell készíteni, és a házit meg kell védeni.
    • Jeles megajánlott jegyet kap az, akinek programja ezen felül a létraverseny teszteseteinek legalább 40%-át időkorláton belül teljesíti.

A tárgyról

Kapcsolódó tárgyak

Miből érdemes tanulni?

Gyakorlatok

A tárgyból általában, de nem rendszeresen kéthetente hetente gyakorlatok vannak, az előadáson szereplő programozási nyelvnek megfelelően.

Gyakorlatok után érdemes az ETS-ben lévő feladatokat megoldani pluszban, önáló munkaként.

Kis házi feladatok

  • Kötelező beadni a 7 kisháziből 3-mat, de mindét nagy nyelvből legalább 1-1 kell hogy legyen.
  • 3-3 feladat Prologból és Erlang-ból, és egy Céklából.
  • Beadás ETS-en keresztül, automatikusan tesztelésre kerül.
  • Minden feladat jó megoldásáért 1-1 pluszpont.
  • Össz. max. +7 pont.

Nagy házi feladat

  • Nem kötelező beadni. Ugyanakkor még ZH-ra készülés mellett is érdemes próbálkozni a feladat megoldásával, ráadásul néhány pontot könnyen lehet szerezni még akkor is, ha nem teljes és hatékony a megoldásod.
  • 1 feladat, amit Prologban és Erlangban is meg lehet oldani.
  • 10 teszteset, 0,5 pont/helyes lefutás/nyelv.
  • 2,5 pont a doksi nyelvenként.
  • Össz. 15 pont.
  • A nagy házi megoldása időigényes, sok dolgot kell számításba venni. Előre nézd meg, a többi tárgy mellett lesz-e rá időd.
  • A nehézség ellenére mégis érdemes erre hajtani, hiszen rögtön ki tudod próbálni a programot, ZH-n sokkal bizonytalanabb leszel, több időd jut megtervezni és elkészíteni a feladatot.


Zárthelyi

  • Kötelező azoknak, akiknek nem fogadták el, vagy nem adtak be nagyházit.
  • Semmilyen jegyzet, segédlet nem használható.
  • A zh anyaga az egész féléves anyag, beleértve az előadáson elhangzott néhány alapszintű könyvtári függvényt/eljárást.
  • A sikeres zh feltétele a maximális részpontszám 40%-ának megszerzése mindkét nyelven.
  • Össz. 85 pont.
  • A ZH-n mindkét nyelv részének max pontszáma 85. A végeredménynél ezek számtani átlagát veszik.

Hasznos fordítók és futtató környezetek a házikhoz

Emacs howto Windows alá

Írtam egy rövid összegzést arról, hogy az emacsot mi módon lehet Windows alatt összekapcsolni az SML és Prolog fordítókkal: Emacs telepítési lépések.

Online Prolog IDE-k

  • SWISH
    • Bal oldalt kell megadni a kódot, jobb alul a futtatandó parancsot és jobb felül jelenik meg az eredmény.
    • Jobb alul a Solutions -> Debug (trace)-re kattintva lehet debug-olni.
  • tutorialspoint - Coding Ground


Bevezetők
1. félév
2. félév
3. félév
4. félév
5. félév
6. félév
7. félév