Le langage Prolog (Demo I) Atefeh Farzindar Ift3330 Ift6330 A-2003

Documents pareils
Initiation à la Programmation en Logique avec SISCtus Prolog

Bases de données Cours 5 : Base de données déductives

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Les structures. Chapitre 3

Bases de programmation. Cours 5. Structurer les données

TP 1. Prise en main du langage Python

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Systèmes décisionnels et programmation avancée

Présentation du langage et premières fonctions

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Évaluation et implémentation des langages

2 Comment fonctionne un ordinateur, dans les grandes lignes

Rappels Entrées -Sorties

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Conception des bases de données : Modèle Entité-Association

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Bases de données déductives

Unix/Linux I. 1 ere année DUT. Université marne la vallée

M é ca n ism e Pr o lo g. Ex e m p le

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

1ère partie Nadine Cullot. Bases de données déductives. Bases de données déductives Introduction et Motivation

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

EES : Engineering Equation Solver Fiche récapitulative - Marie-Sophie Cabot

MIS 102 Initiation à l Informatique

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

TP Contraintes - Triggers

Chap III : Les tableaux

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Langage SQL : créer et interroger une base

Salle de technologie

Fondements de l informatique Logique, modèles, et calculs

XML pour la mise en valeur des informations

Le Langage De Description De Données(LDD)

La mémoire. Un ordinateur. L'octet. Le bit

STAGE IREM 0- Premiers pas en Python

UE Programmation Impérative Licence 2ème Année

Chapitre I Notions de base et outils de travail

Corrigé des TD 1 à 5

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Consigne : je remplis le tableau en tenant compte des informations de la ligne supérieure et de la colonne de gauche (droite pour les gauchers)

Inscrire un nouvel élève

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d Informatique

Cours Programmation Système

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

= constante et cette constante est a.

Plan du cours Cours théoriques. 29 septembre 2014

S LICENCE INFORMATIQUE Non Alt Alt SS1 S2 S3 S4 S5 S6 Parcours : IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques)

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Modélisation des données

16H Cours / 18H TD / 20H TP

Logique : ENSIIE 1A - contrôle final

Présentation du PL/SQL

Algorithme. Table des matières

Analyser des données à l aide de formules

1 Introduction au codage

Cours d algorithmique pour la classe de 2nde

Utilisation d objets : String et ArrayList

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

Apprentissage Automatique

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Introduction à l algorithmique et à la programmation M1102 CM n 3

Informatique Générale

Logiciel de Base. I. Représentation des nombres

Conventions d écriture et outils de mise au point

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

VOS PREMIERS PAS AVEC TRACENPOCHE

MODE OPERATOIRE OPENOFFICE BASE

Débuter avec Excel. Excel

Algorithmique, Structures de données et langage C

Esterel The french touch star touch esterel advance

Introduction au langage C

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

ALGORITHMIQUE ET PROGRAMMATION En C

Machines virtuelles Cours 1 : Introduction

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Codage d information. Codage d information : -Définition-

Dissolution d un organisme sans but lucratif

Instructions et spécifications pour la transmission en format XML de déclarations par lots. 30 mai 2015 MODULE 1

Traduction des Langages : Le Compilateur Micro Java

Créer le schéma relationnel d une base de données ACCESS

NOM : Prénom : Date de naissance : Ecole : CM2 Palier 2

Algorithmique et programmation : les bases (VBA) Corrigé

Grammaires d unification

Les chaînes de caractères

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Cours 1 : Qu est-ce que la programmation?

Programmation. fonctionnelle, impérative, logique et orientée objet

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Solution Pro pour l Envoi de SMS direct opérateurs PUSH SMV MODE HTTP. Documentation Technique

TP1. Outils Java Eléments de correction

Premiers pas avec Mathematica

Transcription:

Le langage Prolog (Demo I) Atefeh Farzindar Ift3330 Ift6330 A-2003 1

Table des matières Demo 1 Introduction Syntaxe et terminologie Prolog Les termes en Prolog Les relations, ou atomes logiques Clauses Récursivité 2

Introduction Le Prolog est un langage de programmation symbolique lié : à la logique formelle; à une modélisation du raisonnement; au traitement linguistique; Application, aux bases de données : il est facile d interfacer une base de données avec un module logique écrit en Prolog. 3

Syntaxe et terminologie Prolog Un programme Prolog est constitué d'un ensemble de clauses ; une clause est une affirmation portant sur des atomes logiques ; un atome logique exprime une relation entre des termes ; termes et relation entre des termes => clause ex: père(marie,luc) Clause=> Un programme Prolog 4

1. Les termes en Prolog Les objets manipulés par un programme Prolog (les "données" du programme) sont appelés des termes. 1.Les Constantes 2.Les variables 3.Les termes composés 5

I. Les Constantes Les termes atomiques représentent les objets simples connus de l'univers. 1. Atomes : un identificateur est une chaîne alphanumérique commençant par une minuscule (ex. toto, ax12, jean_paul_2 ). 2. Nombres : entiers ou flottants (ex. 19, -25, -3.14, 23E-5). 3. Chaînes de caractères entre guillemets (ex. "Toto est \#\{@", "123"). 6

II. Les variables Les variables représentent des objets inconnus de l'univers. Une variable Prolog représente toujours le même objet tout au long de sa durée de vie et ne peut pas changer de valeur. La variable commençant par: 1. Une majuscule =>La valeur de la variable nous intéresse. (ex. Var, X, Var_longue_2) 2. Un sous-ligné => La valeur de la variable anonyme ne nous importe pas. (ex. _objet, _21). 7

III. Les termes composés Les termes composés représentent les objets composés de l'univers. Ils se composent d un foncteur avec une suite d arguments. Les arguments peuvent être des atomes, des nombres, des variables, ou bien des structures Exemple: élève(robert, 1975, info, 2, adresse(6, 'jean Brillant', 'Montréal')). élève est le foncteur principal. 8

foncteur (t1,..., tn) Foncteur est une chaîne alpha-numérique commençant par une minuscule, et t1,..., tn sont des termes (variables, termes élémentaires ou termes composés). Le nombre d'arguments n est appelé arité du terme. Exemple : adresse(18, ave Decelles,Ville) est un terme composé de foncteur adresse et d'arité 3, dont les deux premiers arguments sont les termes élémentaires et le troisième argument est la variable Ville. 9

2. Les relations, ou atomes logiques symbole-de-prédicat(t1,..., tn ) Un atome logique exprime une relation entre des termes ; cette relation peut être vraie ou fausse. Ça commence par une minuscule, et t1,..., tn sont des termes. Le nombre d'arguments n est appelé arité de l'atome logique. Exemple : père(paul, jean). est une relation d'arité 2 entre les termes élémentaires paul et jean pouvant être interprétée par paulest le père de jean. 10

3. Clauses Syntaxe <tête> :- <corps> Trois sortes de clauses : I. Faits Ex. masculin(jean). II. Règles Ex. parent(x, Y):-père(X, Y). parent(x, Y):-mère(X, Y). III. Questions Ex.?- masculin(jean). Yes?- masculin(françois). No. (Pas dans la base de données) 11

I. Les faits Faits est en effet équivalente à : fait :- true. (Pas de corps) La forme générale d un fait est la suivante : prédicat(argument1,argument2, ). Un prédicat est un symbole qui traduit une relation. L arité est le nombre de ses arguments. On identifie un prédicat par son nom et son arité : prédicat/arité, par exemple parent/2. 12

II. Les règles Les règles permettent d exprimer des conjonctions de buts. Leur forme générale est : TÊTE :- C 1, C 2,...,C n. La tête de la règle est vraie si chacun des éléments du corps de la règle C 1,...,C n est vrai. On appelle ce type de règles des clauses de Horn. 13

«OU» et «ET» Logique : Dans le corps d une règle, la virgule «,» est le symbole représentant un ET logique (conjonction). Le symbole «;» représente le OU logique (disjonction). A :-B,C;D. est équivalent à A :- B,C. A :- D. 14

Exemple masculin(jean). masculin(paul). masculin(luc). masculin(pierre). féminin(isabelle). féminin(catherine). féminin(marie). père(jean,paul). père(jean,isabelle). père(paul,luc). père(luc,catherine). mère(isabelle,pierre). mère(catherine,marie). ISABELLE JEAN PIERRE MARIE PAUL CATHERINE LUC 15

fils(a,b):- père(b,a), masculin(a). fils(a,b):- mère(b,a), masculin(a). parent(x,y):- père(x,y). parent(x,y):- mère(x,y). ISABELLE JEAN PIERRE PAUL LUC grand_parent(x,y):- parent(x,z), parent(z,y). MARIE CATHERINE 16

Récursivité Définissons un nouveau prédicat «ancêtre/2» déterminant l ancêtre X de Y par récursivité : 1. Condition de terminaison de la récursivité si c est un parent direct. ancêtre(x, Y) :- parent(x, Y). 2. Sinon X est ancêtre de Y si et seulement si il existe Z, tel que X parent de Z et Z parent de Y. ancêtre(x, Y) :- parent(x, Z),ancêtre(Z, Y). 17

Lors de l exécution d une requête, Prolog examine les règles ou les faits correspondants dans l ordre de leur écriture dans le programme : de haut en bas. Il utilise la première règle (ou le premier fait) du prédicat pour répondre. Si elle échoue, alors il passe à la règle suivante et ainsi de suite jusqu à épuiser toutes les règles (ou tous les faits) définies pour ce prédicat. Lorsqu une règle est récursive, l interprète Prolog rappelle le prédicat du même nom en examinant les règles (ou les faits) de ce prédicat dans le même ordre. 18

III. Les questions Une fois le programme chargé, on peut poser des questions sur les faits. On peut aussi utiliser des variables. Elles peuvent s identifier à toutes les autres valeurs : aux constantes, aux termes composés, aux variables elles-mêmes. «;» demander la solution suivante, Retour arrête la recherche des solutions.?- mère(isabelle,x). X = pierre?; Yes?- parent(jean,x). X = paul? ; X = isabelle 19

?- fils(a,b). A = paul, B = jean? ; A = luc, B = paul? ; A = pierre, B = isabelle?- ancêtre(jean,x). X = paul? ; X = isabelle? ; X = luc? ; X = catherine? ; X = pierre 20

Utilisation de Sicstus Prolog au DIRO 1. Dans votre fichier de configuration du shell(.cshrc) ajouter la ligne: inclure sicstus 3.9.0 2. Pour utiliser Prolog: %sicstus 3. Écrivez votre programmes dans un fichier texte avec le suffixe «.pl» 21

Chargement de fichiers Pour compiler et charger un programme :?- consult(nom_du_fichier). par exemple :?- consult('file.pl'). ou bien le raccourci avec la commande :?- [nom_du_fichier]. par exemple?- ['file.pl']. Chargement de plusieurs fichiers simultanément?- ['file1.pl', 'file2.pl']. 22

Si on modifie le programme dans le fichier, on peut mettre à jour la base de données par?- reconsult('file.pl'). Le raccourci de rechargement est :?- [-'file']. Difference entre reconsult et consult:consult toujours concatène les nouvelles règles à la B. de C. mais reconsult redéfinie les anciennes relations qui étaient déjà définies. 23

L affichage du contenu du fichier chargé se fait par :?- listing. L affichage d une clause particulière, ici «père», se fait par :?-listing(père/2).(ou listing(père)) père(paul, jean). père(luc,paul). Finalement, on quitte Prolog avec halt. 24