La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Analyse et Programmation Déclarative / Prolog

Présentations similaires


Présentation au sujet: "Analyse et Programmation Déclarative / Prolog"— Transcription de la présentation:

1 Analyse et Programmation Déclarative / Prolog
Mise en œuvre des listes

2 Exemples de descriptions
Usage des méta caractères : [ , ] et | [paul, jacques, pierre, michel, edouard] [1.5, -2.75, 4.0] [12, -11, [4, 75, 40]] [cœur, X, pique, trèfle] [] [Y | Z]

3 Exemples de mise en œuvre (1)
Extraction de la tête et/ou de la queue ?- [a,b,c,d,e]=[T|Q]. T = a Q = [b, c, d, e]

4 Exemples de mise en œuvre (2)
Cas d’une queue vide ?- [a]=[T|Q]. T = a Q = []

5 Exemples de mise en œuvre (3)
Vérification de la tête ?- [a,b,c,d,e]=[a|Q]. Q = [b, c, d, e]

6 Exemples de mise en œuvre (4)
Vérification de la queue ?- [a,b,c,d,e]=[T|[b,c,d,e]]. T = a

7 Exemples de mise en œuvre (5)
Extraction/contrôle d’un élément ?- [a,b,c,d,e]=[a,b,c,X,e]. X = d

8 Exemples de mise en œuvre (6)
La liste vide n’a ni tête ni queue ! ?- []=[T|Q]. false

9 Exemples de mise en œuvre (7)
Une liste ne contenant que la liste vide ?- [[]]=[Tete|Queue]. Tete = [] Queue = []

10 Exemples de mise en œuvre (8)
Cas d’une sous liste ?- [0,[a,b,c]]=[Tete|Queue]. Tete = 0 Queue = [[a, b, c]]

11 Exemples de mise en œuvre (9)
Unification d’une sous liste ?- [0,[a,b,c]]=[Tete|[SousListe|Fin]]. Tete = 0 SousListe = [a, b, c] Fin = [] Yes

12 Exemples de règles (1) appartient(X,[X|_]).
Appartenance à une liste (member) appartient(X,[X|_]). appartient (X,[_|Q]) :- appartient(X,Q).

13 Appartenance à une liste
Etre ou ne pas être dans une liste ?- appartient (a,[q,d,a,f,d]). true ?- appartient(a,[q,d,f,d]). false ?- appartient (a,[q,d,[a,f,d]]).

14 Exemples de règles (2) cardinal([], 0).
Cardinal d’une liste (length) cardinal([], 0). cardinal ([_|Q], N) :- cardinal(Q, P), N is P+1.

15 Cardinal d’une liste ?- cardinal ([q,d,a,f,d], N). N=5 Yes
true ?- cardinal ([q,d,[a,f,d]], N). N= 3 ?- cardinal (L, N).

16 Exemples de règles (3) somme([], 0).
Somme des éléments d’une liste somme([], 0). somme ([T|Q], S) :- somme(Q, X), S is X+T.

17 Somme des éléments d’une liste
?- somme ([4,12,-5,1,1], S). S=13 ?- somme ([4, -4], 1). false ?- somme ([4,[5, 6]], S). ERROR

18 Exemples de règles (4) renverser([], []).
Inverser l’ordre des éléments (reverse) renverser([], []). renverser ([T|Q], R) :- renverser(Q, X), append(X, [T], R).

19 Renverser une liste ?- renverser ([a, b, c], R). R=[c, b, a]
true ?- renverser ([a,b,c,d], [d, X, b, a]). X=c


Télécharger ppt "Analyse et Programmation Déclarative / Prolog"

Présentations similaires


Annonces Google