TP1 : Corrigé-type

publicité
Université Abou Bakr-Belkaïd – Tlemcen
Faculté des Sciences
Département d’Informatique
Année universitaire 2015-2016
3ème année Licence Informatique
Programmation logique – Prolog
TP1 : Corrigé-type
Exercice n° 01 :
1. bonjour(X) :- write("Bonjour "), write(X).
2.
3.
4.
5.
monsieur(ilies).
monsieur(amine).
demoiselle(amina).
demoiselle(sara).
dame(nadia).
dame(ahlem).
bonjour(X) :- monsieur(X), write("Bonjour Monsieur "), write(X).
bonjour(X) :- demoiselle(X), write("Bonjour Melle "), write(X).
bonjour(X) :- dame(X), write("Bonjour Madame "), write(X).
mari(ilies, nadia).
mari(amine, ahlem).
bonjour(X) :- monsieur(X), mari(X, Y), write("Bonjour Monsieur "), write(X) , write(" comment va votre épouse "),
write(Y), write(" ? ").
bonjour(X) :- dame(X), mari(Y, X), write("Bonjour Madame "), write(X) , write(" comment va votre époux "),
write(Y), write(" ? ").
bonjour(X) :- demoiselle(X), write("Bonjour Melle "), write(X).
6.
?- mari(X, Y). mais cette requête affiche tous les couples X et Y. On aura : X=ilies, Y=nadia, et
X=amine, Y=ahlem. Donc la requête n’affiche pas uniquement les messieurs mariés, mais plutôt leurs
femmes aussi.
7. Le caractère « _ » représente une variable qui est utilisée uniquement pour vérifier certaines
conditions mais dont la valeur ne sera pas affichée par l’interpréteur. D’où, ?- mari(X, _). affichera
uniquement les messieurs mariés et ignora l’affichage de leurs femmes.
Exercice n° 02 :
1. L’ensemble des faits :
enseignant(omar).
enseignant(abdelkrim).
enseignant(zakaria).
assure(omar, java).
assure(abdelkrim, c).
assure(zakaria, python).
Programmation logique – Prolog
étudiant(yassine).
étudiant(mohamed).
étudiant(malik).
étudiant(nabil).
étudiant(fatima).
étudiant(ibtissem).
étudiant(hamza).
2015/2016
inscrit(nabil,python).
inscrit(nabil,c).
inscrit(ibtissem,c).
inscrit(malik,c).
inscrit(mohamed,java).
inscrit(malik,java).
inscrit(yassine,java).
inscrit(fatima,python).
inscrit(hamza,python).
hmahfoud.wordpress.com
2. Les requêtes :
a) Tous les enseignants : ?- enseignant (X).
b) Toutes les formations : ?- assure(_,X).
c) Toute personne de l’école : ?- enseignant(X) ; étudiant(Y).
d) Tous les étudiants qui sont inscrits à deux formations différentes.
?- (inscrit(X, java), inscrit(X, c)) ; (inscrit(X, java), inscrit(X, python)) ; (inscrit(X, c), inscrit(X, java)).
3. La règle étudiant_existe(X) :
étudiant_existe(X) :- étudiant(X), write("L'étudiant "), write(X), write(" est bien inscrit à l'école.").
4. La règle il_suit(X) :
il_suit(X) :- inscrit(X, Y), write("L'étudiant "), write(X), write(" est bien inscrit à la formation "), write(Y).
5. La règle il_suit(X) (2ème version):
il_suit(X) :- inscrit(X, Y), assure(Z, Y), write("L'étudiant "), write(X), write(" est bien inscrit à la formation "),
write(Y), write(" assurée par l'enseignant "), write(Z).
6. La règle tous_ceux_inscrits(F) :
tous_ceux_inscrits(F) :- inscrit(X, F), write(X), write(" ").
7. ?- findall( _ , tous_ceux_inscrits(F), _ ).
8. La règle seront_présents(E, F):
seront_présents(E,F) :- assure(E,F), write("L'enseignant "), write(E), write(" donnera un cours de "), write(F),
write(" pour les étudiants :"), findall(_, tous_ceux_inscrits(F), _).
9.
seront_présents :- write("Entrer le nome de l'enseignant : "), read(X), nl, write("Entrer le nome de la
formation : "), read(F), nl, assure(E,F), write("L'enseignant "), write(E), write(" donnera un cours de "),
write(F), write(" pour les étudiants :"), findall(_, tous_ceux_inscrits(F), _).
Programmation logique – Prolog
2015/2016
hmahfoud.wordpress.com
Téléchargement