Logikai programozás 7..

Slides:



Advertisements
Hasonló előadás
Deduktív adatbázisok.
Advertisements

Sor láncolt ábrázolással
10. gyakorlat SQL SELECT.
A Powerpoint használata (gyorstalpaló)
Diagnosztika szabályok felhasználásával, diagnosztikai következtetés Modell alapú diagnosztika diszkrét módszerekkel.
C++ programozási nyelv Gyakorlat hét
Delphi programozás alapjai
Kétértékűség és kontextusfüggőség Kijelentéseink igazak vagy hamisak (mindig az egyik és csak az egyik) Kijelentés: kijelentő mondat (tartalma), amivel.
Visual Basic for Application (VBA)
KOVÁCS DÁVID. ALAPFOGALMAK Adatbázis: Olyan adatgyűjtemény, amely egy adott feladathoz kapcsolódó adatokat szervezett módon tárolja, és biztosítja az.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Mutatók, tömbök, függvények
Tudásalapú rendszerek
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
Logika 5. Logikai állítások Miskolci Egyetem Állam- és Jogtudományi Kar Jogelméleti és Jogszociológiai Tanszék március 10.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Szélességi bejárás A szélességi bejárással egy irányított vagy irányítás nélküli véges gráfot járhatunk be a kezdőcsúcstól való távolságuk növekvő sorrendjében.
Excel Hivatkozások, függvények használata
PROLOG PROGRAMOZÁSI NYELV
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Függvények.
A Pascal programozási nyelv alapjai
Kifejezések a Pascalban Páll Boglárka. Ismétlés: Ahogy algoritmikából láttuk, a kifejezések a Pascal nyelvben is operátorokból és operandusokból állnak.
A Pascal programozási nyelv alapjai
Gépi tanulás Tanuló ágens, döntési fák, általános logikai leirások tanulása.
Űrlapok.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Ekvivalenciák nyitott mondatok között Két nyitott mondatot ekvivalensnek mondunk, hha tetszőleges világban ugyanazok az objektumok teszik őket igazzá.
Atomi mondatok FOL-ban Atomi mondat általában: amiben egy vagy több dolgot megnevezünk, és ezekről állítunk valamit. Pl: „Jóska átadta a pikk dámát Pistának”
Adatbázis-kezelés Probléma: az excel kezelhetetlen túl sok adat esetén
Logikai programozás 6.. Problémafelvetés: diak(jani, 3.3, pecs). diak(laci, 3.7, kaposvar). diak(matyi, 4.1, pecs). diak(kati, 2.3, barcs). diak(jeno,
Logikai programozás 2..
Programozás III KOLLEKCIÓK.
Programozás III KOLLEKCIÓK.
Logikai programozás 8.. Adatok: ISMÉTLÉS: ADATBÁZISKEZELÉS A külső adatok a hatására bekerülnek a memóriába Lekérdezés: Ahogy eddig – pl.: szereti(jani,
Logikai programozás 5..
Objektum orientált programozás
Logikai programozás BEVEZETÉS.
Programozás III KOLLEKCIÓK.
ProgramozásProgramozás célja hosszabb számítások elvégzése ill. kiíratása akkor érdemes programot írni, ha sok számolni való van illetve ha ugyanazt az.
Ekvivalenciák nyitott mondatok között Két nyitott mondatot ekvivalensnek mondunk, hha tetszőleges világban ugyanazok az objektumok teszik őket igazzá.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
Free pascal feladatok
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
 Adatbázis:  Valamilyen szempont szerint rendszerezett adathalmaz.  Adatbázis kezelés:  Adatok tárolása  Műveletek végzése az adatbázison; (Adatok.
Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése.
Statisztikai és logikai függvények
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Adatbázisok 1. SQL (alkérdések). Az IN használata Emlékezzünk vissza: Az IN után szereplő multihalmaz elemei lekérdezéssel is megadhatók SELECT nev FROM.
Készítette: Rummel Szabolcs Elérhet ő ség: Linux kezelése.
Logikai programozás 8..
TÖMBÖK – péntek Jordán Sándor.
Gépészeti informatika (BMEGEMIBXGI)
Analitikus fák kondicionálissal
Programozási nyelvek típusossága.
Nevezetes algoritmusok
Készítette:Roppantóné Lévay Mária
A házi feladatokhoz: 1.5: Azonosság Jelölések a feladatszám alatt:
Atomi mondatok Nevek Predikátum
Programozás C# -ban Elágazások.
Meta-programozás (von) Neumann-elv Program-programozás (vírusok)
A CLIPS keretrendszer
A legkisebb közös többszörös
A Powerpoint használata (gyorstalpaló)
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
A dia beszúrása a bemutatóba
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
A piros sál a leghosszabb.
Előadás másolata:

Logikai programozás 7.

TÖBBSZÖRÖS MEGOLDÁS Problémafelvetés: diak(jani, 3.3, pecs). diak(laci, 3.7, kaposvar). diak(matyi, 4.1, pecs). diak(kati, 2.3, barcs). diak(jeno, 4.2, szekszard). segelytKap(Diak) :- diak(Diak, Atlag, _), Atlag > 3.5. segelytKap(Diak) :- diak(Diak, _, Hely), Hely \== 'pecs'. Állapítsuk meg, hogy kik kapnak segélyt! ?- segelytKap(Diak). Diak = laci ; Diak = matyi ; Diak = jeno ; Diak = kati ; Diak = jeno.

TÖBBSZÖRÖS MEGOLDÁS 1. Megoldás: listaba(L) :- listaba([],L), !. listaba(Akt, L) :- segelytKap(Diak) , \+member(Diak,Akt), listaba([Diak|Akt], L). listaba(L,L). 2. Megoldás: A továbbiak ismeretében találja ki önállóan.

TÖBBSZÖRÖS MEGOLDÁS kor(jani,6). kor(jozsi,4). kor(judit,7). kor(marci,6). kor(gizi,6). kor(jeno,3). kor(mari,5). kor(jakab,4). kor(eva,6). kor(jani,5). kor(dezső,3). bagof(Nev, kor(Nev,6),L). setof(Nev, kor(Nev,6),L). findall(Nev, kor(Nev,6),L). bagof(Nev, kor(Nev,2),L). setof(Nev, kor(Nev,2),L). findall(Nev, kor(Nev,2),L). bagof(Nev,kor(Nev,Ev),L). setof(Nev,kor(Nev,Ev),L). findall(Nev,kor(Nev,Ev),L). setof(Nev, kor(Nev,_),L). findall(Nev, kor(Nev,_),L).

TÖBBSZÖRÖS MEGOLDÁS bagof(Valtozo, feltetel, Lista): Lista-ba gyűjti a Valtozo feltetel-nek megfelelő értékeit. Ahányszor megtalál egy értéket, annyiszor belerakja a listába. Ha nincs a feltételnek megfelelő elem,  false. setof(Valtozo, feltetel, Lista): Lista-ba gyűjti a Valtozo feltetel-nek megfelelő értékeit. Minden értéket csak egyszer rak a listába, majd növekvő sorrendbe rendezi a listát. setof(Valtozo, feltetel, Lista) :- bagof(Valtozo, feltetel, Lista1), sort(Lista1, Lista).

TÖBBSZÖRÖS MEGOLDÁS findall(Valtozo, feltetel, Lista): Lista-ba gyűjti a Valtozo feltetel-nek megfelelő értékeit. Ahányszor megtalál egy értéket, annyiszor belerakja a listába. Ha nincs a feltételnek megfelelő elem,  üres lista.

TÖBBSZÖRÖS MEGOLDÁS Lényeges különbség a bagof-setof és a findall között: Ha a feltételben van szabad változó, akkor a/ a bagof-setof behelyettesít oda egy lehetséges értéket, majd kigyűjti a Valtozo ilyen feltételnek megfelelő értékeit. b/ a findall minden lehetséges értéket behelyettesít a szabad változó helyére, és úgy gyűjti ki a Valtozo megfelelő értékeit.

TÖBBSZÖRÖS MEGOLDÁS Ez megoldható a bagof-setof-fal is: setof(Nev, Ev^kor(Nev,Ev), Nevek), A ^ jelentése: van olyan. Vagyis az Ev^kor(Nev,Ev) jelentése: van olyan Ev, amelyre kor(Nev,Ev) igaz, azaz van olyan Ev, amelyre a kor(Nev,Ev) szerepel az adatbázisban.

TÖBBSZÖRÖS MEGOLDÁS Más céllal, de térjünk vissza a kor/2 adatokat tartalmazó adatbázisra. forall(kor(Nev,6), writef('%w\n',[Nev])). forall(kor(Nev,Ev), writef('%w\t%w\n',[Nev,Ev])). forall(kor(Nev,_), writef('%w\n',[Nev])). forall(kor(Nev,Ev), barmi(Nev,Ev)).

TÖBBSZÖRÖS MEGOLDÁS Általánosan: forall(feltetel, akcio). FIGYELEM!! Ha a forall akció része hamis, akkor az egész forall is az!!

MÁR MEGINT KOCSMÁZÁS kocsmazok1.pl: szereti(pal,sor). … mernek(sarok,bor). … jar(Diak,Kocsma):-szereti(Diak,Ital), mernek(Kocsma,Ital). kocsmabaJarok :- writeln(‘A kocsmába járó diákok: ‘), …

MÁR MEGINT KOCSMÁZÁS kocsmazok2.pl: jar(Diak,Kocsma):-szereti(Diak,Ital), mernek(Kocsma,Ital). kocsmabaJarok :- writeln(‘A kocsmába járó diákok: ‘), … Működik, ha konzultálunk az ‘adatok.pl’ fájllal: :- consult(‘kocsmaadatok.pl’). vagy start :- consult(‘kocsmaadatok.pl’), …

ADATBÁZISKEZELÉS Adatok: a tényállítások consult : hatására az adatok bekerülnek a memóriába Lekérdezés: Ahogy eddig – pl.: szereti(jani, sör). szereti(Ki, Mit). mernek(Hol, bor).

ADATBÁZISKEZELÉS Beszúrás: assert/1 pl.: assert(szereti(jani,bor)). Törlés: retract/1, retractall/1 pl.: retract(szereti(jani,bor)). Ha nincs törlendő: eredmény: false retract(szereti(jani,_)). retract(szereti(_,_)). retractall(szereti(jani,_)). Ha nincs törlendő: eredmény: true

ADATBÁZISKEZELÉS Az előző műveletek végrehajtódnak, ha pl. a kocsmazok2.pl fájl futásakor adjuk ki a parancsokat, de hibaüzenettel elszáll a kocsmazok1.pl futása közben: assert/1: No permission to modify static_procedure `szereti/2' A predikátumok alapértelmezetten statikusként fordulnak. Dinamikussá tétel: :- dynamic szereti/2. Figyelem! Ez deklaráció, nem predikátum, vagyis nincs zárójel!

ADATBÁZISKEZELÉS Összes adat kilistázása: listing pl.: listing(szereti/2). Az adatok addig „élnek”, amíg ki nem lépünk a futtató-környezetből. Fájlba mentés mint eddig, de a listing-gel egyszerűsíthető: pl.: fajlba:- tell(‘fajlnev’), listing(szereti/2), told. Hatására a dynamic deklaráció is a fájlba kerül – saját adatfájlnál is célszerű ide írni.

ADATBÁZISKEZELÉS - PÉLDA Szúrjunk be diákokat egy adatbázisba! start :- beolvas, kiir. beolvas :- write('A diák neve: '), read(Nev), assert(diak(Nev)), write('Van még? (i/n)'), read(i), beolvas. kiir :- tell('fajlnev.txt'), listing(diak/1), told. :- dynamic diak/1. diak(jani). diak('béla'). diak(mari).