Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Logique
Introduction
Paradigmes de programmation
1.1. Programmation Impérative (Actionnelle):
Les opérations sont écrites en termes de séquences
d'instructions.
Le programme se déroule en écrasant les valeurs d'une
zone mémoire par une nouvelle valeur.
L'action de base est l'affectation, qui va être soit
séquencée, soit choisie, soit itérée.
C’est le type de programmation le plus pratiqué;
C'est le plus proche du fonctionnement de la machine
d'exécution, où une mémoire change d'état.
L'assembleur , Fortran, Algol, Pascal, C, Ada, etc.
Paradigmes de programmation
1.2. Programmation Fonctionnelle (Applicative):
Le calcul est considéré en tant qu'évaluation de fonctions
mathématiques.
L'action de base est le calcul du résultat d'une fonction
pour des valeurs de ses arguments.
Ces langages sont le plus souvent interprétés, et ils sont
utilisés de manière interactive.
Ces langages sont peu utilisés pour le génie logiciel.
Ils sont surtout utilisés en milieu universitaire, à des fins
d'enseignement et de recherche.
Langage : ML, LISP, Haskell, Erlang, CAML, …
Paradigmes de programmation
1.3. Programmation Déclarative (relationnelle):
Elle consiste à créer des applications sur la base de
composants logiciels indépendants du contexte et ne
comportant aucun état interne.
Elle consiste à énoncer les propriétés d'un système de
résolution -programme- (à les déclarer).
En programmation déclarative, on décrit « le Quoi », c'est-
à-dire le problème, alors qu'en programmation impérative
on décrit « le Comment », c'est-à-dire la structure de
contrôle correspondant à la solution.
Paradigmes de programmation
1.3. Programmation Déclarative (relationnelle):
Elle permet de séparer clairement les trois parties d'un
logiciel:
Les connaissances sur le domaine d'application
La formulation du problème à résoudre
Le mécanisme de résolution du problème, général et
indépendant des deux autres parties bien qu'opérant sur
elles.
Ce que l'on ne peut faire aussi nettement dans les autres
modes de programmation.
Paradigmes de programmation
1.3. Programmation Déclarative (relationnelle):
Il existe plusieurs formes de programmation déclarative:
La programmation descriptive, qui permet de décrire des
structures de données (HTML, XML ou LaTeX),
La programmation fonctionnelle (LISP, Caml, Haskell,
Oz),
La programmation logique, pour laquelle les composants
d'une application sont des relations logiques (Prolog,
Mercury).
La programmation par contraintes.
Paradigmes de programmation
1.3. Programmation Déclarative (relationnelle):
Le but d'un programme logique est de permettre la
résolution d'une expression logique.
Résolution :: recherche des valeurs des variables qui
rendent l'expression vraie (les solutions).
Le langage de programmation logique le plus connu est
Prolog.
Son originalité est d'offrir un cadre homogène pour la
description des connaissances ainsi que pour celle du
problème à résoudre.
Paradigmes de programmation
Evaluation de la
Fonctionnel Une fonction "Evalues LISP, ML,
fonction avec des
(Applicatif) (composition) ça" Caml, …
paramètres effectifs
Lancer une
résolution en tenant "Que
Déclaratif Un ensemble de
compte des règles et penses-tu Prolog, SQL, ...
(relationnel) règles et de faits
de l'état de la base de ça?"
de faits
La programmation logique
La programmation logique est le fruit des recherches
menées par R. Kowalski et A. Colmerauer sur un sous
ensemble de la logique des prédicats du premier ordre.
Elle constitue un paradigme de programmation simple et
déclaratif.
La tâche d'écrire un programme Prolog n'est pas de la
même manière que dans un langage de programmation
classique (comme la spécification d'un algorithme).
Au lieu de cela, le programmeur Prolog s'intéresse
principalement aux relations et objets formels apparaissant
dans le problème, et quelles sont les relations décrivant les
solutions souhaitées.
La programmation logique
Le principe de la programmation logique est de décrire
l'énoncé d'un problème par un ensemble d'expressions et
de liens logiques pour résoudre la problématique.
?- 1 + 2 = 2 + 1.
?- 1 + 2 = 1 + 2.
?- 1 + X = 1 + 2.
?- 1 + X =:= 1 + 2.
Les Opérateurs en Prolog
3. Opérateurs arithmétiques
Exemple : Comment exprimer qu'on veut calculer
la somme de deux nombres ?
Exemple : Soient 2 entiers positifs X et Y, leur plus
grand diviseur commun D, peut être calculé en
considérant 3 cas :
Si X et Y sont égaux, alors D est égal à X
Si X > Y, alors D est égal au plus grand diviseur commun de Y
et de la différence (X – Y)
Si Y > X, alors faire la même chose que dans le cas 2 avec X et
Y interchangés
Les Opérateurs en Prolog
4. Opérateurs littérales
T1 == T2 réussit si T1 est identique à T2 (terme à terme)
T1 \== T2 réussit si T1 n’est pas identique à T2
L'opérateur == permet une comparaison littérale (terme à
terme), mais cette dernière n’est pas restreinte aux
constantes. Ainsi, dans le cas d’une comparaison entre
variables, la syntaxe de ces dernières constitue l’élément
de comparaison (et non plus la valeur comme dans le cas
d’une constante).
Les Opérateurs en Prolog
4. Opérateurs littérales
?- 1 + 2 == 2 + 1.
?- 1 + a == 1 + a.
?- 1 + a \== a + 1.
?- a(b,X,c) == a(b,Y,c).
?- a(b,X,c) == a(b,X,c).
? - A \== "hello".