Logikai programozás 9.. Programok: EGY KIS ISMERET-TÁGÍTÁS – struktura.pl – operatorok.pl, precedencia.pl – útvonaltervezés – send_more_money (smm1.pl,

Slides:



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

Női viselet.
2012. tavaszi félév Véső Tamás. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
Programozási feladatok
83. (1 pont) A felsorolt végeredmények, hatások közül karikázza be a mondatszerű leírással (szöveggel) megadott algoritmus eredményét jelölő betűt, ha.
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
 Megfigyelhető, hogy amikor több elem közötti összehasonlítás történik, akkor szükség van egyszerre több értékre is, főleg akkor, ha ezek az értékek jóval.
Analitikus függvények
Adatbázis rendszerek I Relációs kalkulus Általános Informatikai Tsz. Dr. Kovács László.
2003. január Tanulói munkaterhek. A kutatás módszere  Válaszadók: 2700 tanuló és szüleik (elsősorban az édesanya)  Kérdezés módja: személyes interjúk.
Recovery (helyreállítás) feladatok gyakorlatra
Delphi programozás alapjai
Kifejezések, operandusok, operátorok
Műveletek logaritmussal
Adatbázis gyakorlat – SUBSELECT – Tarcsi Ádám március.
Cells(sor száma, oszlop száma)
SQL – DQL (Data Query Language ) adat lekérdezések
Programozási alapismeretek 4. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/  A szöveg A szöveg.
Programozási alapismeretek 10. előadás
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Halmazok, halmazműveletek
Jt Java Kifejezések,precedencia. jt 2 Egy kifejezés operandusokból és operátorokból (műveletekből) áll. A kifejezésben szerepelhet egy vagy több operandus,
Logikai programozás Prolog.
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
RDF és SPARQL. Felhasznált anyagok Marcelo Arenas, Claudio Gutierrez, Jorge Peréz: RDF and SPARQL: Database Foundations (bemutató) Claudio Gutierrez,
Lekérdezésfordító Adatbázisok 2.. Elemzés Lekérdezés Elemző Előfeldolgozó Logikai lekérdezéstervet generáló Lekérdezésátíró Jónak vélt logikai lekérdezésterv.
Lekérdezésfordító Adatbázisok tervezése, megvalósítása, menedzselése.
Móra Ferenc
Fekete László Született: Csillagjegye: Vízöntő
Híres magyar nők.
PROLOG PROGRAMOZÁSI NYELV
1 Bevezetés a funkcionális programozásba 2009.
szakmérnök hallgatók számára
ÁRVÁK A szülőktől kapott „uticsomag” tartalma: A biztonság érzése
Korai képességgondozás és egészségügy Programok 2011.január1-től 2011 augusztus 31-ig.
Óvodai szülői klub Kisvaszaron
Matematika - 5. évfolyam © Kačmárová Fordította: Balogh Szilveszter.
Operátorok Értékadások
Készítette: Gocsál Ákos, Gocsál Klára, Fehér Péter 1 A program megvalósulását az Apertus Közalapítvány támogatta. Internet az oktatásban – taneszközök.
Fejlesztés PHP-NUKE portál rendszerre Horváth Zoltán Második Magyarországi PHP Konferencia március 27. Copyright PHP Konferencia,
Az igénybevevői nyilvántartás
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
SICStus Objects Objektum orientált kiterjesztés a SICStus Prolog nyelvhez Pereszlényi Attila Az előadás.
MENETREND HASZNÁLATÁNAK GYAKORLÁSA Feladat: autóbusz, villamos, trolibusz, fogaskerekű, HÉV menetrend gyakorlása El szeretnénk jutni a Selyemrét megállóból.
QualcoDuna interkalibráció Talaj- és levegövizsgálati körmérések évi értékelése (2007.) Dr. Biliczkiné Gaál Piroska VITUKI Kht. Minőségbiztosítási és Ellenőrzési.
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..
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..
1 Informatikai Szakképzési Portál Adatbázis kezelés DQL – Adatlekérdező nyelv.
Logikai programozás 3.. ISMÉTLÉS Elágazás-szervezés: a/ B :- A 11, A 12, …, A 1n. B :- A 21, A 22, …, A 2k. … B :- A m1, A m2, …, A mr. b/ B :- (A 11,
Logikai programozás BEVEZETÉS.
Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések
Webprogramozó tanfolyam
Logikai programozás 8.. KIINDULÓ PÉLDÁK
Adatbázis-kezelés 3-4. Adatok lekérdezése utasítás általános formája SELECT [ALL/DISTINCT] {*/, …, } FROM [ ], …, [ ] [WHERE GROUP BY, …, HAVING ORDER.
VI/1. dia Az etoricoxib tolerálhatósági profilja.
1 Verseny 2000 gyakorlat SQL 2000 Server Portál adatbázis létrehozása.
Szemantikus Web SWP A Robotok miért nem értik az internetet?
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
PPKE ITK 2009/10 tanév 8. félév (tavaszi) Távközlő rendszerek forgalmi elemzése Tájékoztatás GY. – 02.
Algoritmizálás, adatmodellezés
Az iskolai dokumentumok elérhetősége
 Adatbázis:  Valamilyen szempont szerint rendszerezett adathalmaz.  Adatbázis kezelés:  Adatok tárolása  Műveletek végzése az adatbázison; (Adatok.
Pinczel Balázs, ELTE IK, április Emlékeztető: NoSQL Célok: Nagy teljesítmény Magas rendelkezésre állás Elosztott működés Következmények:
Logikai programozás 9..
Kovács Gergely Péter Az egyed-kapcsolat modell
Kovács Gergely Péter Bevezetés
Előadás másolata:

Logikai programozás 9.

Programok: EGY KIS ISMERET-TÁGÍTÁS – struktura.pl – operatorok.pl, precedencia.pl – útvonaltervezés – send_more_money (smm1.pl, smm2.pl) – clp_pelda.pl – barkochba

A Prologban az adatbázis tény-halmazként reprezentálható. De ezek a tények strukturáltak is lehetnek. Pl.: STRUKTÚRÁK % csalad(apa, anya, gyerekek). csalad(szemely(nagy, adam, szul(1970, 03,17)), szemely(kiss, eva, szul(1973, 07, 22)), [szemely(nagy, peter, szul(1995, 05,13)), szemely(nagy, judit, szul(1998, 03, 28)), szemely(nagy, adam, szul(2003, 11, 02)) ] ).

1. Kétgyerekes családok nevének kiíratása: STRUKTÚRÁK – NÉHÁNY LEKÉRDEZÉS forall((csalad(Apa,Anya,Gyerekek), length(Gyerekek,2), Apa = szemely(Veznev,_,_)), writeln(Veznev)). 2. Azok a gyerekek, akiknek édesapja 1 évvel idősebb az édesanyjánál: forall((csalad(szemely(_,_,szul(ApaEv,_,_)), szemely(_,_,szul(AnyaEv,_,_)), Gyerekek), AnyaEv - ApaEv =:= 1, member(Gyerek,Gyerekek)), writeln(Gyerek)).

3. Összes személy névsora STRUKTÚRÁK – NÉHÁNY LEKÉRDEZÉS forall(szemely(Veznev,Kernev, _), writef('%w %w\n',[Veznev, Kernev])). Ehhez előbb egy szabály a személy fogalmára: szemely(Vez,Ker, szul(Ev,Ho,Nap)) :- csalad(szemely(Vez,Ker, szul(Ev,Ho,Nap)),_,_); csalad(_,szemely(Vez,Ker, szul(Ev,Ho,Nap)),_).

Prolog jelölés: predikatumNev(argumentumok) – prefix jelölés E szerint a szintaktika alapján a + b -t így kellene írnunk: +(a,b) Kialakíthatunk infix jelölést is (ilyen az a + b). Az eljárás: op(+Precedence, +Type, :Name) A precedencia a kiértékelési sorrendet határozza meg, a tipus jelzi, hogy hova kerüljön a predikátumnév, a név az operátor nevét jelzi. (A név helyett lista is írható.) Bővebben ld. help. OPERÁTOROK, PRECEDENCIA

1. példa: :-op(800, xfx, [nagyszuloje,szuloje]). szuloje(adam,pisti). szuloje(adam,mari). jani szuloje bela. N nagyszuloje Gy :-N szuloje Sz, Sz szuloje Gy. Lekérdezés pl.: ?- N nagyszuloje Gy. OPERÁTOROK, PRECEDENCIA

2. példa: Játszadozzon el a preferencia.pl fájllal. OPERÁTOROK, PRECEDENCIA

3. példa: Próbálja meg továbbfejleszteni az útvonaltervezést. A jarat.pl modul felhasználásával készítsen olyan útvonaltervező programot, amely segítségével eldönthető, hogy: - el tudunk-e jutni repülővel egyik városból a másikba, - adott napon el tudunk-e jutni, stb. jarat(london, edinburgh, [ 9:40 / 10:50 / le2134/ naponta, 11:40 / 12:50 / le2135/ naponta, 18:40/ 19:50 / le2136/ [hetf,kedd,sze,csut,pent]]). OPERÁTOROK, PRECEDENCIA

1. példa: S E N D + M O R E M O N E Y REJTVÉNYEK

smm :- X = [S,E,N,D,M,O,R,Y], Digits = [0,1,2,3,4,5,6,7,8,9], assign_digits(X, Digits), M > 0, S > 0, 1000*S + 100*E + 10*N + D *M + 100*O + 10*R + E =:= 10000*M *O + 100*N + 10*E + Y, write(X). assign_digits([], _). assign_digits([D|Ds], List) :- select(D, List, NewList), assign_digits(Ds, NewList). REJTVÉNYEK

Ugyanez a constraint logic csomag segítségével: :- use_module(library(clpfd)). smm :- X = [S,E,N,D,M,O,R,Y], X ins 0.. 9, M #> 0, S #> 0, 1000*S + 100*E + 10*N + D *M + 100*O + 10*R + E #= 10000*M *O + 100*N + 10*E + Y, all_distinct(X), label(X), write(X). REJTVÉNYEK

CLP (Constraint logic programming – korlátlogikai progr.) Pl.: haromszog(A,B,C) :- A >=0, B >= 0, C >= 0, A + B >= C, A + C >= B, B + C >= A. ?- haromszog(3,4,5).– a válasz: true. ?- haromszog(3,4,C).– nem tudja megoldani. A CLP korlátot szabhat C számára. Esetünkben 1 <= C <= 7 korlát lehet. (library(clpfd): Constraint Logic Programming over Finite Domains) REJTVÉNYEK

2. példa: Három embert mutatunk be, Aladárt, Bélát és Balázst. Egyikük asztalos, a másik bádogos, a harmadik agronómus. Egyikük Budapesten, a másik Békéscsabán, a harmadik Aszódon lakik, Hogy ki hol lakik, és mi a foglalkozása, azt találja ki Ön. Annyit azonban elmondhatunk, hogy Balázs csak ritkán látogat a fővárosba, pedig minden rokona Budapesten lakik; két olyan ember is van a társaságban, akinek foglalkozása és lakhelye ugyanazzal a betűvel kezdődik, mint a neve; az asztalos felesége Balázs húga. REJTVÉNYEK

:- use_module(library(clpfd)). start :- All = [Aladar,Bela,Balazs, Asztalos,Badogos,Agronomus, Budapest,Bekescsaba,Aszod], All ins 1..3, all_different([Aladar,Bela,Balazs]), all_different([Asztalos,Badogos,Agronomus]), all_different([Budapest,Bekescsaba,Aszod]), label(All), kiir(1,All),kiir(2,All),kiir(3,All),fail. start. REJTVÉNYEK

kiir(N,[Aladar,Bela,Balazs, Asztalos,Badogos,Agronomus, Budapest,Bekescsaba,Aszod]):- nth1(N1,[Aladar,Bela,Balazs],N), nth1(N1,['Aladár','Béla','Balázs'],Nev), nth1(N2,[Budapest,Bekescsaba,Aszod],N), nth1(N2,['Budapest','Békéscsaba','Aszód'],Hely), nth1(N3,[Asztalos,Badogos,Agronomus],N), nth1(N3,['asztalos','bádogos','agronómus'],Munka), writef('%w\t%w\t%w\n',[Nev, Hely, Munka]). REJTVÉNYEK Így nagyon sok hármast írna ki – korlátozni kell.

A labell(All) hívás elé még beírjuk az ismert, ill. kikövetkez- tetett feltételeket: Balazs #\= Budapest, Asztalos #\= Balazs, Asztalos #= Budapest, Mivel Balázs nem budapesti így azt is rögzíthetjük, hogy nem ugyanahhoz a hármashoz tartoznak, így pl. Balazs #=1, Budapest #=2, Még mindig több megoldás van, de már lényegesen szűkült a számuk. REJTVÉNYEK

A labell(All) hívás elé még beírjuk az ismert, ill. kikövetkez- tetett feltételeket: Balazs #\= Budapest, Asztalos #\= Balazs, Asztalos #= Budapest, Mivel Balázs nem budapesti így azt is rögzíthetjük, hogy nem ugyanahhoz a hármashoz tartoznak, így pl. Balazs #=1, Budapest #=2, Még mindig több megoldás van, de már lényegesen szűkült a számuk. REJTVÉNYEK

Ha még azt is figyelembe vesszük, hogy két személy neve, foglalkozása és lakóhelye is azonos betűvel kezdődik, akkor még ezeket a feltételeket is hozzávehetjük: Balazs #= Badogos, Balazs #= Bekescsaba, Aladar #= Aszod, Aladar #= Agronomus, Így ugyan „kézzel” megoldottuk a feladatot, a Prolog csak annyit tesz, hogy ellenőrzi a megoldást, de a/ az ellenőrzés is fontos b/ van, amikor a megoldás megtalálásában is segít. REJTVÉNYEK

ld. BarKochba.pl, BarKochba2.pl BARKOCHBA