samedi 19 mars 2011

Stars ; Triangle



/*ETOILE*/
DOMAINS
int=integer
PREDICATES
etoile(int)
tr(int)
CLAUSES
etoile(0):-nl.
etoile(X):-X>0,write("*"),X1=X-1,etoile(X1).



/*triangle  et inversement*/
*                   ***
**                 **
***               *

DOMAINS
int=integer
PREDICATES
point(int)
tr(int)
invtr(int)
CLAUSES
point(0):-nl.
point(X):-X>0,X1=X-1,write("*"),point(X1).
tr(0).
tr(X):-X>0,X1=X-1,tr(X1),point(X).
invtr(0).
invtr(X):-X>0,X1=X-1,point(X),invtr(X1).

LAST & FIRST


/* déterminer  le premier élément d'une  liste d'entier  */

DOMAINS
int=integer
l=int*
PREDICATES
first(l,int)
CLAUSES
first([],X):-X=-1,write("vide").
first([X|_],X).

autre version

//

CLAUSES
first([],_):-write("vide"),nl,FAIL.
first([X|_],X).

/* déterminer le dernier élément d'une  liste d'entier  */
                                                            
DOMAINS
int=integer
liste=int*
PREDICATES
last(liste,int)
CLAUSES
last([],-1):-write("VIDE"),nl,FAIL.
last([X],X):-!.
last([_|B],X):-last(B,X).




samedi 12 mars 2011

exécuter la trace sur Turbo Prolog

Il suffit d'écrire " TRACE . " au début de ton code .


Après avoir faire 'run' , tu fais la trace avec F10 


Exemple  # calcul exponentiel



TRACE.
DOMAINS
int=integer
PREDICATES
expo(int,int,int)
CLAUSES
expo(_,0,1).
expo(X,Y,R):-Y>0,Y1=Y-1,expo(X,Y1,R1),R=X*R1.


#pour le zoom F5
+ ENTR  + F10


 .......

Turbo_Prolog_Owners_Handbook_1987