Prolog est un langage de programmation logique et déclaratif. Le nom lui-même, Prolog, est un abréviation de PROgramming dans LOGic. L’héritage de Prolog comprend la recherche sur les démonstrateurs de théorèmes et d’autres systèmes de déduction automatisés développés dans les années 1960 et 1970. Le mécanisme d’inférence de Prolog est basé sur le principe de résolution de Robinson (1965) ainsi que sur les mécanismes d’extraction des réponses proposés par Green (1968).
Liste des exercices
- Exercice 1 la coupure (sur feuille)
- Exercice 2 calcul du maximum
- Exercice 3 insérer un élément dans une liste
- Exercice 4 inversion d’une liste
- Exercice 5 nombre d’occurrences d’un terme
- Exercice 6 les dérivées
- Exercice 7 Tic-Tac-Toe
Profitez de ce manuel de formation en PDF pour comprendre mieux le Prolog et enrichir votre connaissance.
Commencez à télécharger ce cours adapté pour vous et à apprendre Prolog.
| ?- occurrence(X,[a,b,c,X,a,a],N).
N = 1
yes
Faux :
| ?- occurrence2(X,[a,b,c,X,a,a],N).
N = 4
X = a
Cet exemple montre bien que l’on veut compter le nombre de terme Xdans la
liste et cela sans l’instancier au prealable.
Exercice 6 les derivees
Le but de cet exercice est de calculer formellement les derivees d’une fonction.
Rappelez vous qu’en Prolog les expressions arithmetiques sont deja representees
comme des structures.
Vous vous baserez sur les transformations suivantes. On considere xcomme
parametre de la fonction, represente la multiplication et cune constante.
c 0
! 0
x 0
! 1
( U )0
! (U 0
)
( U +V)0
! U0
+ V0
( U {V )0
! U0
{ V 0
( c U )0
! c U 0
( U V )0
! UV 0
+ V U 0
( U =V )0
! (U V 1)0
( U c )0
! cU 1U 0
L’operateur exposant est represente en prolog par **/2:
| ?- X is 3**3.
X = 27.0
yes
Ecrivez le predicat derive(E,X,R)qui reussit quand Rest la derivee de
l’expression Eavec comme parametre X. On considerera que les deux premiers
parametres sont instanciees et que le dernier est une variable (le resultat de la
derivee). Voici quelques exemples :
| ?- derive(x**2+2*x+1,x,X).
X = 2*x**(2-1)*1+2*1+0
yes
| ?- derive(-x/2,x,X).
X = -1*2**(-1-1)*0* -x+ – 1*2** -1
yes
| ?- derive(3*x**2+x**2+1+3/(x**2),x,X).
X = 3*(2*x**(2-1)*1)+2*x**(2-1)*1+0+3*(-1*(x**2)**(-1-1)*(2*x**(2-1)*1))
yes
3