Analyse et Programmation Déclarative / Prolog

Slides:



Advertisements
Présentations similaires
P.T. 2012/2013 Mise en œuvre de Prolog.
Advertisements

Cours n° 7 Standard Template Library II.
PROLOG 1 Prolog - Initiation
9 avril 2001 Listes et Suites Finies Représentation Propriété Accès aux éléments Récursivité Construction Sous-suites et arbres représentatifs Application.
Un langage de programmation logique
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
La Programmation Logique: PROLOG
Techniques de R éé criture et Transformations Pierre-Etienne Moreau.
Mise en œuvre d’un programme
Joueur virtuel (Lot 2) Modélisation des cartes
Calculs numériques en Prolog
Licence Informatique Module Théories et Modèles pour l'Informatique II Option Programmation logique en Prolog Philippe Collard
Algorithme et structure de données
Systèmes Experts implémentation en Prolog
Fonctionnement du moteur Prolog
ADDITION ET SOUSTRACTION DE NOMBRES DECIMAUX
Initiation à la programmation et algorithmique cours 3
Algorithmique -les fichiers-
Lycée Louis Vincent SEANCE 6 Python Les listes Lundi 25 novembre 2013.
On parle darbre de recherche dune question *Racine de larbre : question *Nœuds : points de choix (formule à démontrer) *Passage dun nœud vers son fils.
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
UE NFA006 STRUCTURES DE DONNEES
CSI2520 ?- insert(a, L, [b, a, d, a, f]). L = [b, d, a, f] ; L = [b, a, d, f] ; no Linsertion et le retrait sont 2 concepts complémentaires!
OCaml - Les listes L3 MI.
Analyser une phrase % extraire une phrase et retourner le reste
Recherche d’information & Représentation des Connaissances
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Expressions et assignations
OCaml – Les arbres L3 MI.
TD3 2 IMACS Romaric GUILLERM Algo-Prog en Ada.
Introduction à la conception de Bases de Données Relationnelles
LES SOUS-PROGRAMMES USTL Licence S.T.A. S3 A.P.I.2.
Dictionnaire Définition d’un dictionnaire. Opérations sur les dictionnaires. Accès, suppression et ajout d’éléments du dictionnaire. Fonctions permettant.
Définition d’un maillon de liste
Outils de Programmation
TD4 2 MIC Romaric GUILLERM Algo-Prog en Ada.
Python La programmation objet
Ensembles Définition d’un ensemble. Opérations sur les ensembles. Accès, suppression et ajout d’éléments d’un ensemble. Fonctions permettant de manipuler.
Principes de programmation
P. Van Roy, LINF LINF1251: Algorithmes sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
IFT 6800 Atelier en Technologies d’information
CSI1502 Introduction au génie logiciel
Arbres en Prolog Un arbre binaire est une structure pouvant contenir des données. Chaque élément de l'arbre contient une donnée et a au plus un 'parent'
CSI2520, Hiver 2007 Les entrées-sorties Ecriture sur l'écran ou dans un fichier Lecture à partir du clavier ou dun fichier Affichage de termes : *write(1+2)
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
CSI2520 Ecriture sur l'écran ou dans un fichier Lecture à partir du clavier ou dun fichier Affichage de termes : *write(1+2) affiche 1+2 *write(X). affiche.
Programmation logique Le Langage PROLOG
Structures de données IFT-10541
Structures de données IFT-2000 Abder Alikacem Retour sur les listes ordonnées Département dinformatique et de génie logiciel Édition Septembre 2009.
Les méthodes en java • Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. • Une méthode pour être utilisée.
Jacques Nicolas INRIA /IRISA Rennes
Cours 7 Divers et exceptions. Chapitre V Enumeration, tableaux, conversion de types, noms.
Ch. PAUL - Piles et Files à l'aide de listes chainées
LES PILES ET FILES.
Programmation en Java Tableaux NGUYEN Thi Minh Tuyen
Prolog Listes Arbres en prolog Structures : bases de données
Créer des packages.
Méthodes de tri.
Programmation Web : Schémas XSD Jérôme CUTRONA 19:27:07 Programmation Web
Outils pour la programmation logique par contraintes
Avance manuelle en cliquant
Objets Opérateurs Listes
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
Eléments sur la soustraction
Document Type Definition (DTD) Plan 2.1Introduction 2.2Déclaration de Document Type 2.3Déclaration d’élément Type 2.3.1Séquences, Choix, indicateurs d’Occurrence.
Les bases de l’algorithmique
Nous sommes aujourd’hui le mardi 21 juillet 2015 Il est à présent 13:47 h précises. Parcomil Production.
Chaînage et LSC : motivation et principe  Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
BASE DE L’ALGORITHMIE.  Un système d’instructions.  Pour résoudre d’un problème ou d’une classe de problèmes  Recette de cuisine pour faire un gâteau.
Transcription de la présentation:

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

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]

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]

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

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

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

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

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

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

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

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

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

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]]).

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

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).

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.

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

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).

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