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

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
a
 
(24 közbenső módosítás, amit 12 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
'''Mottó:''' Ami igaz, nem biztos, hogy gyors is.
+
{{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]
 +
}}
  
__TOC__
+
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==
 
==A tárgyról==
  
* [[Deklaratív programozás kedvcsináló | Kedvcsináló, mikor válasszam ezt?]]
+
* [[Deklaratív programozás - Kedvcsináló | Kedvcsináló]]
* [[TargynevAjanlas|Ajánlott rövidítés]]: 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/
  
 
==Gyakorlatok==
 
==Gyakorlatok==
A tárgyból kéthetente gyakorlatok vannak, az előadáson szereplő programozási nyelvnek megfelelően.
+
A tárgyból általában, de nem rendszeresen kéthetente hetente gyakorlatok vannak, az előadáson szereplő programozási nyelvnek megfelelően.
 
 
==Számonkérés==
 
 
 
===Kis házi feladatok===
 
  
* 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;)
+
Gyakorlatok után érdemes az ETS-ben lévő feladatokat megoldani pluszban, önáló munkaként.
* 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===
+
==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.
  
* Nem kötelező beadni.
+
==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.
 
* 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.
+
* Semmilyen jegyzet, segédlet nem használható.
* 10 teszteset van, az időlimit általában 120-180 másodperc/teszteset.
+
* 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.
* Pontszám = &sum; min(futási idő, időlimit).
+
* A sikeres zh feltétele a maximális részpontszám 40%-ának megszerzése mindkét nyelven.
* Ha valamelyik nyelven n. helyezést érsz el, max(8-n/2, 0) pluszpontot kapsz vizsgán.
+
* Ö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.
===Zárthelyi===
 
  
* Kötelező!
+
* [[Deklaratív programozás - Tippek ZH-ra és vizsgára | Régi tárgyhoz tartozó tippek ZH-ra és vizsgára]]
* 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 sikeres ZH feltétele a maximális részpontszám 40%-ának megszerzése mindkét nyelven.
 
* GyakIV a vizsgaidőszak első hetében.
 
* Súlya az osztályzatban 15%
 
  
===Vizsga===
+
==Hasznos fordítók és futtató környezetek a házikhoz==
 +
===Emacs howto Windows alá===
  
* Írásbeli feladatmegoldással kombinált szóbeli vizsga.
+
Í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]].
* Prolog, Erlang: több kisebb feladat, kétszer 35 pontért (programírás, -elemzés).
 
* 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]]
+
===Online Prolog IDE-k===
* [[DeklaPoTippek|Tippek ZH-ra és vizsgára]]
 
* [[DeklapoZV|Záróvizsga információk és tételkidolgozás]]
 
  
==Emacs howto Windows alá==
+
* [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]
  
Í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]].
 
  
[[Category:Infoalap]]
+
{{Lábléc_-_Mérnök_informatikus_alapszak}}

A lap jelenlegi, 2019. május 22., 16:28-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