Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:prolog:prolog_lab:prolog_lab_metaprog [2011/11/28 08:02]
gjn
pl:prolog:prolog_lab:prolog_lab_metaprog [2019/06/27 15:50] (aktualna)
Linia 11: Linia 11:
  
 <code prolog> <code prolog>
-var(X) +var(X). 
-nonvar(X)+nonvar(X).
 </​code>​ </​code>​
  
Linia 54: Linia 54:
 ?- number(3). ?- number(3).
  
-?- number(3). 
 ?- integer(3). ?- integer(3).
 ?- integer(3.14). ?- integer(3.14).
 +?- float(3).
 ?- float(3.14). ?- float(3.14).
-?- float(3). 
  
 ?- compound(ala). ?- compound(ala).
Linia 67: Linia 66:
 Uwaga: ''​compound''​ nie nadaje się do "​wykrywania"​ list, bo: Uwaga: ''​compound''​ nie nadaje się do "​wykrywania"​ list, bo:
 <code prolog> <code prolog>
-?- compound([]).+?-  compound([]).
 </​code>​ </​code>​
  
Linia 89: Linia 88:
  
 <code prolog> <code prolog>
-?- A =.. [ala, ma, kota].+?- A =.. [ala, ma, asa].
 ?- ala(ma,​kota,​w(ciapki(rozowe))) =.. A. ?- ala(ma,​kota,​w(ciapki(rozowe))) =.. A.
 </​code>​ </​code>​
Linia 98: Linia 97:
 ?- functor(ala(ma,​kota),​F,​A). ?- functor(ala(ma,​kota),​F,​A).
  
-?- CzyTo=ala,​OLiczbie=2,​functor(ala(ma,​kota),​CzyTo,​OLiczbie).+?- CzyTo = ala, OLiczbie = 2, functor(ala(ma,​kota),​CzyTo,​OLiczbie).
  
-?- CzyTo=kasia,​OLiczbie=2,​functor(ala(ma,​kota),​CzyTo,​OLiczbie).+?- CzyTo = kasia, OLiczbie = 2, functor(ala(ma,​kota),​CzyTo,​OLiczbie).
  
 ?- functor(ala(ma,​kota),​F,​_),​ write('​To jest funktor \''​),​ write(F), write('​\'​.'​). ?- functor(ala(ma,​kota),​F,​_),​ write('​To jest funktor \''​),​ write(F), write('​\'​.'​).
Linia 117: Linia 116:
 a(1). a(2). b(4). b(3). a(1). a(2). b(4). b(3).
  
-wyp0(F,_):-+wyp0(F,_) :-
   call(F).   call(F).
  
-wyp1(F,X):-+wyp1(F,X) :-
   F,   F,
   F =.. [_,X].   F =.. [_,X].
  
-wyp2(F,X):-+wyp2(F,X) :-
   functor(Pred,​F,​1),​   functor(Pred,​F,​1),​
   Pred,   Pred,
   Pred =.. [_,X].   Pred =.. [_,X].
  
-wyp3(F/​A,​X):​-+wyp3(F/A,X) :-
   A = 1,   A = 1,
   functor(Pred,​F,​A),​   functor(Pred,​F,​A),​
Linia 138: Linia 137:
 Wykonaj zapytania będące przykładami użycia powyższych predykatów:​ Wykonaj zapytania będące przykładami użycia powyższych predykatów:​
 <code prolog> <code prolog>
-?​-wyp0(a(X),​X). +?- wyp0(a(X),​X). 
-?​-wyp0(b(X),​X).+?- wyp0(b(X),​X).
  
-?​-wyp1(a(_),​X). +?- wyp1(a(_),​X). 
-?​-wyp1(b(_),​X).+?- wyp1(b(_),​X).
  
-?​-wyp2(a,​X). +?- wyp2(a,​X). 
-?​-wyp2(b,​X).+?- wyp2(b,X).
  
-?​-wyp3(a/​1,​X). +?- wyp3(a/​1,​X). 
-?​-wyp3(b/​1,​X).+?- wyp3(b/​1,​X).
 </​code>​ </​code>​
  
Linia 158: Linia 157:
  
 Realizowane jest to przez predykat :- op(P, T, N), który definiuje N, jako operator typu T, o priorytecie P. Realizowane jest to przez predykat :- op(P, T, N), który definiuje N, jako operator typu T, o priorytecie P.
 +Zobacz: ​
 +  * http://​www.swi-prolog.org/​pldoc/​man?​predicate=op/​3
 +  * http://​www.learnprolognow.org/​lpnpage.php?​pagetype=html&​pageid=lpn-htmlse40
  
 Zdefiniowane w standardzie ISO operatory to: Zdefiniowane w standardzie ISO operatory to:
Linia 186: Linia 188:
 <code prolog> <code prolog>
 go :- write('​Hello '), write('​World\n'​). go :- write('​Hello '), write('​World\n'​).
 +
 :- go. :- go.
 </​code>​ </​code>​
Linia 192: Linia 195:
  
 <code prolog> <code prolog>
-:​-(go,','​(write('​Hello '​),​write('​World\n'​))). +:- (go,','​(write('​Hello '), write('​World\n'​))). 
-:-(go).+ 
 +:- (go).
 </​code>​ </​code>​
  
Linia 199: Linia 203:
  
 Patrz również: Patrz również:
-  * [[http://​gollem.science.uva.nl/​SWI-Prolog/​Manual/​operators.html|podręcznik SWI]] 
   * [[http://​cs.union.edu/​~striegnk/​learn-prolog-now/​html/​node84.html#​subsec.l9.operators.def|Lean Prolog Now]]   * [[http://​cs.union.edu/​~striegnk/​learn-prolog-now/​html/​node84.html#​subsec.l9.operators.def|Lean Prolog Now]]
  
Linia 218: Linia 221:
 :- op(300, xfx, ma). :- op(300, xfx, ma).
 :- op(200, xfy, i). :- op(200, xfy, i).
 +
 jas ma kota i psa. jas ma kota i psa.
 ala ma jasia i angine i dosc_agh. ala ma jasia i angine i dosc_agh.
Linia 232: Linia 236:
 ?- ma(A,​i(B,​i(C,​D))). ?- ma(A,​i(B,​i(C,​D))).
  
-?-Kto ma Co.+?- Kto ma Co.
  
-?-Kto ma Co i Cosinnego.+?- Kto ma Co i Cosinnego.
  
-?-Kto ma Cos i CosInnego i Jeszcze.+?- Kto ma Cos i CosInnego i Jeszcze.
  
 ?- display(jas ma kota i psa). ?- display(jas ma kota i psa).
Linia 245: Linia 249:
 Co zwróci poniższe zapytanie? Co zwróci poniższe zapytanie?
 <code prolog> <code prolog>
-?- i(X,B).+?- i(A,B).
 </​code>​ </​code>​
 Podpowiedź:​ zwróć uwagę na priorytety operatorów. Podpowiedź:​ zwróć uwagę na priorytety operatorów.
Linia 277: Linia 281:
  
 ?- listing(matka). ?- listing(matka).
-?- Kto=kasia, call(matka(Kto,​Kogo)),​ write(Kto), write('​ jest matka '), write(Kogo). +?- Kto = kasia, call(matka(Kto,​Kogo)),​ write(Kto), write('​ jest matka '), write(Kogo). 
-?- Matka=kasia,​ Dziecko=robert,​ clause(matka(Matka,​Dziecko),​Kiedy),​ write(Matka),​ write('​ jest matka '), write(Dziecko),​ write('​ wtedy gdy: '), write(Kiedy).+?- Matka = kasia, Dziecko = robert, clause(matka(Matka,​Dziecko),​Kiedy),​ write(Matka),​ write('​ jest matka '), write(Dziecko),​ write('​ wtedy gdy: '), write(Kiedy).
 </​code>​ </​code>​
  
Linia 294: Linia 298:
  display(Q),​  display(Q),​
  call(Q),  call(Q),
- write(Kto),​ + write(Kto),​ nl.
- nl.+
 </​code>​ </​code>​
  
Linia 301: Linia 304:
  
 a następnie przetestować i przemyśleć:​ a następnie przetestować i przemyśleć:​
- 
  
 <code prolog> <code prolog>
 ?- odpowiedz. ?- odpowiedz.
 +
 '​matka'​ czy '​ojciec'?​ ojciec '​matka'​ czy '​ojciec'?​ ojciec
 kogo? robert kogo? robert
Linia 327: Linia 330:
  rozwiaz3(G2).  rozwiaz3(G2).
 rozwiaz3(G) :- rozwiaz3(G) :-
- write('​Wywoluje:​ '), write(G), nl,+ write('​Wywoluje: ​ '), write(G), nl,
  clause(G,​B),​  clause(G,​B),​
  rozwiaz3(B),​  rozwiaz3(B),​
- write('​Wyjscie: ​ '), write(G), nl.+ write('​Wyjscie: ​  ​'), write(G), nl.
 </​code>​ </​code>​
  
Linia 344: Linia 347:
 ?- rozwiaz1(matka(kasia,​X)). ?- rozwiaz1(matka(kasia,​X)).
  
-?- rozwiaz1((matka(kasia,​X),​matka(Y,​robert))).+?- rozwiaz1((matka(kasia,​X),​ matka(Y,​robert))).
  
-?- rozwiaz2((matka(kasia,​X),​matka(Y,​robert))).+?- rozwiaz2((matka(kasia,​X),​ matka(Y,​robert))).
  
-?- rozwiaz3((matka(kasia,​X),​matka(Y,​robert))).+?- rozwiaz3((matka(kasia,​X),​ matka(Y,​robert))).
 </​code>​ </​code>​
  
Linia 474: Linia 477:
 W celu identyfikacji rasy trzeba wybrać kilka podstawowych cech, w tym płeć (powiązana z rozmiarem!),​ wagę, rozmiar, umaszczenie,​ kształt głowy, uszy, etc. W celu identyfikacji rasy trzeba wybrać kilka podstawowych cech, w tym płeć (powiązana z rozmiarem!),​ wagę, rozmiar, umaszczenie,​ kształt głowy, uszy, etc.
  
 +Podobny do w.w. system rozpoznający ptaki występujące w Polsce.
 +Należy oprzeć się na:
 +[[http://​ptaki.luzik.proste.pl]],​ [[http://​ptaki.zwierzeta.ekologia.pl]].
  
 ====== Uwagi, komentarze, propozycje ====== ====== Uwagi, komentarze, propozycje ======
-Tu studenci mogą wpisywać swoje uwagi.+Tu studenci mogą wpisywać swoje uwagi...
  
  --- //​[[gjn@agh.edu.pl|Grzegorz J. Nalepa]] 2009/05/06 09:13//  --- //​[[gjn@agh.edu.pl|Grzegorz J. Nalepa]] 2009/05/06 09:13//
 +
pl/prolog/prolog_lab/prolog_lab_metaprog.1322463770.txt.gz · ostatnio zmienione: 2019/06/27 15:59 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0