Vous êtes sur la page 1sur 17

Prolog

Les listes

1
Introduction (1)
Une liste est une structure particulière qui représente une
séquence d'objets, qui est construite de manière récursive
avec les deux éléments suivants :

1. la liste vide [ ]

2. le foncteur « . » qui ajoute un item en tête de liste

2
Introduction (2)
Les éléments d’une liste sont des termes prolog : atomes,
nombres, variables ou termes composés. Ils peuvent être
ainsi des listes .

Exemple :

[elephant, [], X, parent(X, tom),


[a, b, c], f(22)]

3
Définition

4
Notation (1)
la séquence 1, 2 et 3 est représentée ainsi :

.(1, .(2, .(3, [])))

Il existe une autre notation plus pratique : [1,2,3]

Une liste peut contenir des éléments de types différents :

[1, 22, X, 54]

[4, plus(3,plus(3,0)), a]

5
Notation (2)
Une liste peut contenir d'autres listes :

[1, [5,6], 3,10]

[X1, ali, [ [omar, Y], salim], amina]

Voici une autre notation qui distingue la tête du reste de la liste


(aussi appelé queue de la liste) :

[1 | [2,3] ], .(1, [2,3]), [1,2,3]

6
Notation (3)
Il est possible d'isoler plus d'un élément en tête de liste.
Par exemple, le terme suivant s'unie avec n'importe
quelle liste qui commence par les éléments 1 et 2 :

[1,2|X]

7
Exemple

8
Remarque
En Prolog il existe deux notation pour les listes:
 Notation énumérée : [x1,x2,…,xn]

 Notation Structurée: [x|xs]

Exemple :
La liste [1,2,3,4]
est équivalente a la liste
[1|[2,3,4]]

9
Tête et queue de liste
 Le premier élément de la liste et appelé tête de liste et le

reste est dit queue de liste qui est elle-même une liste.

 La liste vide ne contient pas de tête.

 Une liste contenant un seule élément contient une tête qui

est l’élément lui-même et une queue qui est la liste vide.

10
Caractéristiques
1. base : []

récurrence : si L est une liste alors X.L est une liste (ajout

à gauche)

exemple :

[1,2,3]=1.(2.(3.[]))

11
Unification de listes
Voici des exemples d'unification de listes :
?- [1,2|X] = [1,2]
X = []
?- [1,2|X] = [1,2,7,3,4]
X = [7,3,4]

?- [1, 2, 3, 4, 5] = [X| Y].


X = 1
Y = [2, 3, 4, 5]

?- [1, 2, 3, 4, 5, 6] = [_, X | _].

12
X = 2
Exercice
Est-ce que les listes suivantes sont elles unifiables

13
Opérations sur les listes
Les opérations sur les listes peuvent être programmées de
manière récursive.

Prolog offre un ensemble de prédicat prédéfinit:

 length/2:

 member/2:

 append/3:

14
La longueur d’une liste (length/2)
longueur(0,[]).

longueur(N,[_|Q]):- longueur(M,Q),N is M+1.

15
Membre d’une liste(member/2)
membre(X,[X|_ ]).

membre(X,[_|Q]):- membre(X,Q).

16
Concaténation de deux listes
(append/3)
conc ([] ,L,L).

conc([T|Q],L ,[T|QL ]):- conc(Q,L,QL).

17

Vous aimerez peut-être aussi