Prolog programozási nyelv

Aszalós, László

DEIK
Debreceni Egyetem
Informatikai Kar

Debrecen4032Egyetem tér 1

2014


Tartalom

1. Bevezetés
2. Bemelegítés
Elsőrendű logikai nyelv építőkövei
Prolog nyelv jelölései
Változók
Konstansok
Függvényszimbólumok
Predikátumszimbólumok
Logikai program
Tény
Szabály
Kérdés
SWI-Prolog
Súgó
CLI
Programszöveg-szerkesztés
Feladatok
3. Listák
Lista eleme
Listák összefűzése
Lista megfordítása
Lista utolsó eleme
Kezdő-, végszelet és részlista
Listaelemek törlése
Permutáció és rendezések
Feladatok
4. Bináris fák
Fabejárások
Bináris fa felépítése lépésenként
Keresőfák
Elem beszúrása kereső fába
Keresőfa tulajdonság tesztelése
Maximális elem megkeresése
Elem törlése a fából
Elem beszúrása a gyökérbe
Feladatok
5. Aritmetika
Függvények
Példák felhasználó által definiált függvényekre.
Feladatok
6. A Prolog setét oldala
4 kapus modell
Debug
Vágás: !
Vágások fajtái
Feladatok
7. Tagadás
\+ operátor
Fura programok
Feladatok
8. Hatékony Prolog programok
Példa program felgyorsítására
Differencia listák
Hamming számok
Feladatok
9. Egyszerű keresések
Nevezetes keresések
Költség kezelése
Feladatok
10. Keresési módszerek
Mélységi keresések
Szélességi keresés
Költséges keresések
Best-first
Gradiens módszer
Módosított hegymászó módszer
Mohó keresés
A* algoritmus
Példák
Hanoi torony
Edd a cukrot!
Feladatok
11. Elemzés
Példák
Hagyományos környezetfüggetlen nyelvtan
Összetett mondatok elemzése
Elemzőfa
Kifejezés értéke
Egyes és többes szám
Szövegszerűen megadott számok értéke
atof Prologban
Feladatok
12. Logikai programok
Igazságtábla készítése
Meta-programozás
Alapértelmezett állítások
Feladatok
13. A Prolog jelene
Mercury
DOG+ANT=CAT
Típusok
Magasabb rendű típusok
Determinisztikusság
Kényszerfeltétel-kielégítési problémák
Kényszerfeltétel-kielégítés
Térképszínezés
Kényszerfeltétel kielégítő programozás
Zebra feladat
Feladatok
14. Hivatkozások

Az ábrák listája

2.1. Karakteres felület Linux alatt
2.2. Grafikus sugó Linux alatt
2.3. Beépített szövegszerkesztő
3.1. A listát legegyszerűbb láncolt listaként elképzelni, noha valójában egy bináris fáról van szó
3.2. Az összefűzés során a gyöngyök egymás közti sorrendje nem változik meg.
3.3. Az összefűzés rekurzív megoldása
3.4. Naív lista megfordítása az összefűzés felhasználásával
3.5. Összefűzés segédváltozó alkalmazásával
4.1. Két fajta létezik, az üres és a nem üres
4.2. Keresőfa tulajdonság
4.3. Elem törlése gyökérből, ha a fa csak egy gyökérből áll
4.4. Elem törlése gyökérből, ha csak egyik oldali részfája van.
4.5. Elem törlése a gyökérből, ha mindkét oldali részfája létezik
4.6. Minimális elem törlése, ha nincs bal oldali részfa
4.7. Minimális elem törlése, ha van bal oldali részfa
4.8. Gyökérnél kisebb elem beszúrása a gyökérbe
4.9. Gyökérnél nagyobb elem beszúrása a gyökérbe
5.1. 1+2 és 2+1 szerkezete
6.1. 4 kapus modell
6.2. Szekvencia
6.3. Alternatíva
6.4. Mintaprogram végrehajtása
6.5. A kérdés megválaszolása - backtrack módszerrel
6.6. Grafikus debug
6.7. Példa a vágásra
9.1. Útkeresés gráfban
9.2. Végtelen ciklus, ha rossz az élek sorrendje
9.3. Gyerekkorunk Euler-kör feladata és megoldása
13.1. Térképszínezés feladata
13.2. Térképszínezés megoldása

A táblázatok listája

2.1. Súgó parancsai
2.2. A korábban kiadott parancsok újbóli felhasználásának parancsai
3.1. Lista jelölése