"Elméleti" tételek a Deklaratív Programozás c. tárgy Prolog részéhez A hallgatónak az alább felsorolt témák egyikéről kell 3-5 percben beszélnie, nagyvonalú áttekintést adva az adott anyagrészről, kb 5-10 perces felkészülés után. Bizonyos témák egy vagy két konkrét Prolog eljárásról szólnak (pl. listák megfordítása, append/3), ilyenkor a felkészülés részeként célszerű ezen eljárások közül legalább egynek a kódját felírnia. Az alábbi felsorolásban a téma megnevezését követően hivatkozunk a jegyzet megfelelő alfejezeteire (x.y, x.y.z alakban), ill. az előadás-fóliák sorszámára (i vagy i-j alakban). Az utóbbi sorszám a Prolog tárgyrész összes fóliájának összegyűjtött változatára vonatkozik (lásd honlap). - Programok szerkezete, eljárás, klóz fogalma 3.1.1, 3.1.3, 3.1.4, 33-36, 82 - A nyelv kifejezés-fogalma (alapstruktúra alak, kifejezések osztályozása) 3.1.1, 3.4.6, 4.7.1, 55-59 - Diszjunkció, mint szintaktikus édesítőszer 3.1.5, 50-51 - A nyelv végrehajtási mechanizmusa (redukciós lépés, visszalépés) 3.2, 41-44, 102-105, - Prolog végrehajtás szemléltetése keresési fával 3.1-ben, 3.2-ben, 3.4-ben, 45-48 - A Prolog végrehajtás doboz-modellje 3.3, 108-114 - Szintaktikus édesítőszerek: operátorok 3.4.9, 85-91 - Szintaktikus édesítőszerek: listák 3.4.1, 129-131 - Keresés listákban (a select/3 és member/2 eljárások) 3.4.2, 139-140 - Listák összefűzése és szétszedése (az append/3 eljárás többirányú használata) 3.4.3 (eleje), 132-133, 136-137 - Listák megfordítása (naív és hatékony megoldás) 3.4.3 (vége), 134-135 - Az egyesítési algoritmus 3.4.8, 95-101 - Típusok Prologban 3.6, 161-165 - A vágó beépített eljárás definíciója, a vágás alapesetei 4.1.1, 4.1.2 (eleje), 180-183 - Feltételes szerkezet és kiváltása segédeljárással 4.1.2 (vége), 5.2-ben, 124-127, 184-187 - A vágó használata: elkötelezés adott klóz mellett, a vágás alapszabálya 4.1.3 P3 példa, 186-190 - A vágó használata: első megoldásra való szűkítés (memberchk/2) 4.1.3 P4 példa, 191-194 - Determinizmus, indexelés és kölcsönhatásuk 4.2.1, 4.2.2, 85-87, 201-208 - A vágó és az indexelés kölcsönhatása 4.2.4, 4.2.5, 209-211 - A jobbrekurzió fogalma 4.3.1, 218-220 - Akkumulátorok, listák akkumulálása elölről ill. hátulról 4.3.2, 4.3.3, 220-222, 225-228 - Változó-értékadáson alapuló imperatív algoritmusok átírása Prologba 4.4, 233-240 - Megoldásgyűjtő beépített eljárások 4.6, 5.9, 249-254 - Az univ eljárás: struktúrák szétszedése és összerakása 4.7.2, (5.8.1-ben), 259, 262-264 - A functor/3 és arg/3 beépített eljárások 4.7.2, (5.8.1-ben), 260-261 - Konstansok szétszedése és összerakása 4.7.3, (5.8.2), 222-224 - Kifejezések szabványos sorrendje, kifejezés-összehasonlító beépített eljárások 4.7.4, (5.6), 225-228 - Egyenlőségszerű beépített eljárások összehasonlítása 4.8, 277-279 - A SICStus Prolog modulfogalma 4.9, (6.1), 280-283 - Magasabbrendű eljárások 4.10, 284-290 - Dinamikusadatbázis-kezelő beépített eljárások 4.11, 291-298 - Elemzés DCG nyelvtannal 4.12.1 (eleje), 300-302 - DCG nyelvtanok fejlettebb elemei 4.12.1 (vége), 4.12.2, 303-307 - A negáció és megvalósítása a vágó segítségével 5.2-ben, 127, 199 - Aritmetikai beépített eljárások 5.4, 315 - Listakezelő beépített eljárások 5.7, 316