Prolog 1. Készítette: Szabó Éva



Hasonló dokumentumok
Lineáris algebra gyakorlat

Programozás I gyakorlat

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK KÖZÉPSZINT Függvények

Fordítóprogramok Készítette: Nagy Krisztián

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Trigonometria

MBLK12: Relációk és műveletek (levelező) (előadásvázlat) Maróti Miklós, Kátai-Urbán Kamilla

Analízis elo adások. Vajda István szeptember 24. Neumann János Informatika Kar Óbudai Egyetem. Vajda István (Óbudai Egyetem)

GAZDASÁGMATEMATIKA KÖZÉPHALADÓ SZINTEN

A SZÁMFOGALOM KIALAKÍTÁSA

1. Írja fel prímszámok szorzataként a 420-at! 2. Bontsa fel a et két részre úgy, hogy a részek aránya 5 : 4 legyen!

Jelek tanulmányozása

A Felhasználónév és Jelszó mezőkbe írjuk be az adatainkat, majd kattintsunk a Bejelentkezés gombra, vagy üssük le az Enter billentyűt.

Analízis elo adások. Vajda István október 3. Neumann János Informatika Kar Óbudai Egyetem. Vajda István (Óbudai Egyetem)

AWP TELEPÍTÉSE- WINDOWS7 64 OPERÁCIÓS RENDSZEREN

Időzített rendszerek és az UPPAAL

Algebra es sz amelm elet 3 el oad as Rel aci ok Waldhauser Tam as 2014 oszi f el ev

2011. március 9. Dr. Vincze Szilvia

BEVEZETÉS AZ ANALÍZISBE

Országos Középiskolai Tanulmányi Verseny 2011/2012 Matematika I. kategória (SZAKKÖZÉPISKOLA) Döntő. x 3x 2 <

1. forduló. MEGOLDÁSOK Pontszerző Matematikaverseny 2015/2016-os tanév

A Hozzárendelési feladat megoldása Magyar-módszerrel

Adatok ábrázolása, adattípusok. Összefoglalás

Készítsen négy oldalas prezentációt egy vállalat bemutatására!

Ablakok használata. 1. ábra Programablak

MATLAB. 4. gyakorlat. Lineáris egyenletrendszerek, leképezések

KOVÁCS BÉLA, MATEMATIKA I.

Tanúsítvány és hozzá tartozó kulcsok feltöltése Oberthur kártyára és Oberthur SIM termékre

Útmutató a vízumkérő lap kitöltéséhez

3. Matematikai logika (megoldások)

Operációkutatás. 2. konzultáció: Lineáris programozás (2. rész) Feladattípusok

Párhuzamos programozás

KOVÁCS BÉLA, MATEMATIKA I.

ADATBÁZIS-KEZELÉS. Funkcionális függés, normál formák

A döntő feladatai. valós számok!

FORTE MAP 5.0 Felhasználói tájékoztató

IDE64 dokumentáció. A merevlemez előkészítése az első használatra. 1. Előkészítés. 2. Csatlakoztatás. 3. Segédprogram másolás

Digitális technika (VIMIAA01) Laboratórium 1

Az éves statisztikai összegezés STATISZTIKAI ÖSSZEGEZÉS AZ ÉVES KÖZBESZERZÉSEKRŐL A KLASSZIKUS AJÁNLATKÉRŐK VONATKOZÁSÁBAN

Bevezetés a lágy számítás módszereibe

Amit a Hőátbocsátási tényezőről tudni kell

ÁFA felhasználói dokumentum Lezárva:

ADATBÁZIS ALAPÚ RENDSZEREK

Analízis előadások. Vajda István február 10. Neumann János Informatika Kar Óbudai Egyetem

A táblázatkezelő felépítése

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

ingyenes tanulmány GOOGLE INSIGHTS FOR SEARCH

Beállítások CLASSBOOK-óratervező. Első belépés

Kombinatorika. 9. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Kombinatorika p. 1/

Számrendszerek közötti átváltások

Jarabin Kinga LÁBNYOMOK

Arany Dániel Matematikai Tanulóverseny 2011/2012-es tanév első (iskolai) forduló haladók I. kategória

Adatbázis-kezelés. 7. SQL Táblák összekapcsolása

Az aktiválódásoknak azonban itt még nincs vége, ugyanis az aktiválódások 30 évenként ismétlődnek!

Állományok tömörítése

Épületvillamosság laboratórium. Villámvédelemi felfogó-rendszer hatásosságának vizsgálata

ÚTMUTATÓ A KONTROLL ADATSZOLGÁLTATÁS ELKÉSZÍTÉSÉHEZ (2012-TŐL)

Az éves statisztikai összegezés STATISZTIKAI ÖSSZEGEZÉS AZ ÉVES KÖZBESZERZÉSEKRŐL A KLASSZIKUS AJÁNLATKÉRŐK VONATKOZÁSÁBAN

MATEMATIKA ÍRÁSBELI VIZSGA május 8.

EPER E-KATA integráció

MÁTRIXOK SAJÁTÉRTÉKEINEK ÉS SAJÁTVEKTORAINAK KISZÁMÍTÁSA. 1. Definíció alkalmazásával megoldható feladatok

Számítógépes vírusok

Emelt szintű érettségi feladatsorok és megoldásaik Összeállította: Szászné Simon Judit; dátum: november. I. rész

Vektoros elemzés végrehajtása QGIS GRASS moduljával 1.7 dr. Siki Zoltán

Diszkrét matematika I. gyakorlat

2004. december 1. Irodalom

Vegyes tételek könyvelése felhasználói dokumentum Lezárva:

Lineáris algebra és a rang fogalma (el adásvázlat, május 29.) Maróti Miklós

Osztály szint tagok. Krizsán Zoltán 1 [2012. március 12.] Objektumorientált programozás C# alapokon tananyag

A Rendelet módosításának másik eleme a Tiszta udvar, rendes ház és a Tiszta, rendezett

A besorolási rekord. Tóvári Judit Honlap:

Az első lépések. A Start menüből válasszuk ki a Minden program parancsot. A megjelenő listában kattintsunk rá az indítandó program nevére.

1. Metrótörténet. A feladat folytatása a következő oldalon található. Informatika emelt szint. m2_blaha.jpg, m3_nagyvaradter.jpg és m4_furopajzs.jpg.

INFORMATIKAI ALAPISMERETEK

Segítünk online ügyféllé válni Kisokos

Boldva és Vidéke Taka r ékszövetkezet

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Boldva és Vidéke Taka r ékszövetkezet

6. A kémiai kötés fajtái

avagy, hogyan lehetünk hatékonyabbak (nemcsak) a hivatásunkban

MATEMATIKA ÍRÁSBELI VIZSGA május 3.

Programozás nyelvek a közoktatásban 2. előadás

118. Szerencsi Többcélú Kistérségi Társulás

Minta 1. MATEMATIKA EMELT SZINTŰ ÍRÁSBELI FELADATSOR

Web fejlesztés II. Illés Zoltán ELTE Informatikai Kar I n f o r m a t i k a

TERJESZTÉS. Tárgya: strandi pavilonok bérbeadására kötött szerz dések módosítása Készítette: dr. Szabó Tímea, körjegyz

Esettanulmányok és modellek 1 Termelésprogramozás az iparban

Tanúsítvány és hozzá tartozó kulcsok feltöltése Gemalto.NET kártyára

MATEMATIKA HETI 3 ÓRA

A szerzõrõl... xi Bevezetés... xiii

Algoritmuselmélet. Keresés, rendezés, buborék, beszúrásos, összefésüléses, kupacos, láda, radix. Katona Gyula Y.

Vodafone GPRS Kapcsolat létrehozása Win2000 alatt a Connect Me használata nélkül

BOLYAI MATEMATIKA CSAPATVERSENY FŐVÁROSI DÖNTŐ SZÓBELI (2005. NOVEMBER 26.) 5. osztály

M A G Y A R K O N G R E S S Z U S I I R O D A

Adatgyőjtés, mérési alapok, a környezetgazdálkodás fontosabb mőszerei

Shared IMAP beállítása magyar nyelvű webmailes felületen

Csoportosított adatok megjelenítése sorhalmaz függvények használatával

A Közbeszerzések Tanácsa (Szerkesztőbizottsága) tölti ki A hirdetmény kézhezvételének dátuma KÉ nyilvántartási szám

Halmazok és függvények

Üresként jelölt CRF visszaállítása

SZÁMÍTÓGÉPES NYELVI ADATBÁZISOK

Átírás:

Prolog 1. Készítette: Szabó Éva

Prolog Logikai, deklaratív nyelv. Egy logikai program egy modellre vonatkoztatott állítások halmaza, melyek a modell tulajdonságait, és az azok között fellépő kapcsolatokat adják meg. Egy adott relációt meghatározó állítások halmazát predikátumnak nevezzük. A predikátumokat tények és szabályok alkotják, amelyeket a Prologban ponttal zárunk le. Hasonlít a magyar nyelvhez, mert az állításokat ott is ponttal zárjuk le.

SWI-Prolog interpreter indítás: prolog parancs fájlok betöltése, újratöltése: [fájlnév kiterjesztés nélkül]. Pl. elso.pl fájl betöltése: [elso]. Kiterjesztés:.pl egy predikátumhoz tartozó tények és szabályok listája: listing(predikátumnév). nyomkövetés, végrehajtási lépések kiírása: trace, cél. A cél egy kérdés, célklóz. Továbblépés enterrel. kilépés: halt. kommentezés: egysoros kommentek, % jellel bevezetve

Miután sikeresen betöltöttük a forrásfájlunkat, megjelenik egy?- prompt, és itt tehetjük fel a Prolognak szánt kérdéseket.

Kérdés lehet... Eldöntendő kérdést ugyanúgy tehetünk fel, mintha állítást írnánk a kódba. A Prolog tudja, hogy ha ezt a promptba írjuk, akkor azt kérdésként kell kezelni. Általános kérdéseket szabad változók használatával tudunk feltenni mégpedig úgy, hogy a kérdésben azt jelöljük változóval, amire rá szeretnénk kérdezni.

Példa (halmazok.pl) reszhalmaz (n, z). reszhalmaz (z, q). reszhalmaz (q, r). reszhalmaz (r, c). % tény % tény % tény % tény?- reszhalmaz (q,r). 'yes'?- reszhalmaz (z,n). 'no'

subset(x,y) :- reszhalmaz(x,y). % szabály subset(x,y) :- reszhalmaz(x,z), subset(z,y). subset(n,r). subset(z,x). % cél

Termek Egyszerű termek fajtái: Boolean értékei: true, fail Integer egész számok. Real valós számok Variable Változók: nagybetűvel vagy _-sal kezdődne, értékadás = -jellel X _var Atom karaktersorozatok (idézőjelek közti vagy kisbetűvel kezdődő szöveg) Összetett termek Lista nincsenek indexelve az elemek, rekurzióval fogjuk bejárni. pl.: [1,2,3,4,5]

Kiértékelés Kifejezések kiértékelésére a beépített, infix is operátort használhatjuk. Általános alakja: <szabad változó> is <kifejezés> vagy <szabad változó> is <kötött változó> Pl.: X is (3+5). Kimenete: X = 8.

Aritmetikai operátorok + összeadás - kivonás * szorzás / törtosztás // egészosztás mod egész osztás maradéka ** hatványozás Az infix operátorok az alábbi alakban is írhatók: 3+4 +(3,4) 3**4 **(3,4) 3 mod 4 mod(3,4) stb

a logikai ÉS (konjunkció) kapcsolatot a, karakter jelenti. A logikai VAGY kapcsolatot pedig a ; karakterrel jelöljük.

Változók állapotai Változóknak 3 állapota van: szabad szabad-megosztott kötött

Illeszkedési szabályok Kötött változó az értékével vesz részt. Konstans kizárólag önmagával illeszkedik. Kötött változó illeszkedik a szabad változóval, és a szabad változó is kötötté válik. Két szabad változó illeszkedik, és utána mindkettő szabad-megosztott lesz. Összetett term akkor illeszkedik, ha a funktor és a résztermek száma megegyezik, és a résztermek is illeszkednek.

fgv(a,3) = fgv(b,3). Illeszkednek, mert ugyanaz a funktor, mindkét oldalon 2-2 paraméterrel, továbbá a második paraméter mindkét oldalon a konstans 3, amely önmagával illeszkedik, az első paraméter pedig mindkét oldalon szabad változók, amelyek szintén illeszkednek.

fgv(a,a) = fgv(4,5). Nem illeszkednek. Az első paraméterek illeszkednek, mert a szabad változó illeszkedik a konstanssal, és utána kötött lesz (A=4). De a második paraméter illesztésénél ugyanez lenne a helyzet, de az A ekkor már kötött változó, amely az értékével vesz részt az illesztésben, tehát azt nézi, hogy 4=5, amely nyilván hamis.

f(x,g(z,h(x,4))) = f(y,g(3,h(5,4))). Induljunk el a legbelső zárójelből. Az X illeszkedik az 5-tel, az X kötött lesz (X=5), a 4 is illeszkedik a 4-gyel. Az eggyel kintebbi zárójel első paraméterei illeszkednek, a Z kötött lesz (Z=3). A második paraméterek szintén illeszkednek, az előbb már beláttuk. Most nézzük a legkülső zárójelet. Már beláttuk, hogy a második paraméterek illeszkednek, tehát elegendő az első paramétereket vizsgálni. Az kell, hogy X illeszkedik-e Y-nal. Könnyen látjuk, hogy igen, mert bár X már kötött, de Y még szabad. Minden részterm illeszkedik és a funktorok is megegyeznek, tehát az egész illeszkedik.

Családfa példa (csfa.pl)

Kérdések Magdolna szülője-e Szilvinek? szulo(ma,szi). 'yes' Szilvi szülője-e Magdolnának? szulo(szi,ma). 'no' Van-e olyan X, akinek Gábor az apja? szulo(ga,x). X = szi, ha itt Entert ütünk, akkor nem listázza tovább a válaszokat. Ha ;-t, akkor a következő alternatívával tér vissza. Nyomjunk ;-t! X = ni

Katalin nagyszülője-e Szilvinek? (Szabályt kell hozzá definiálnunk!) nsz(x,y) :- szulo(x,z), szulo(z,y). Azaz, X az Y nagyszülője, ha X szülője Z-nek és Z szülője Y-nak. Mivel módosítottuk a tényeket (és most már szabályt is) tartalmazó állományunkat, újra kell töltsük, amit a betöltésnél beírt utasítás megismétlésével tehetünk meg. ([csfa].) Katalin nagyszülője-e Szilvinek? nsz(ka,szi).