Département de l’Informatique
Logique Et Algorithme
INAL 211
2021
Contenu du cours
Exigence du cours
Durant le semestre, l’étudiant doit faire/rendre/passer :
- Quatre (04) tests
- Quatre (04) projets/recherches
- Un examen (01) mi-semestriel
- Un examen (01) final
Système de notation
L’évaluation des performances des étudiants prend en compte les notes des tests, des
projets et des examens et dont la répartition et la suivante :
Références bibliographiques :
- J. Vélu : Méthodes mathématiques pour l'informatique (Dunod, 2000, 4ème édition)
- Tous les ouvrages concernant la logique
Intégration de la foi
L’importance de la capacité de choisir et de décider.
Les avantages de l’obéissance aux instructions.
Eléments de pédagogie :
Ils consistent en un cours théorique complété par des séances de travaux dirigés.
Le cours théorique est une initiation aux fondements méthodologiques. Il est assorti
d'exemples destinés à illustrer les principes. La participation active des étudiants au cours
devrait permettre à eux de pouvoir pleinement profiter des travaux dirigés qui complètent le
cours théorique et d'être pris dans une démarche de recherche. Les travaux dirigés reposent
sur un recueil d'exercices.
La logique est à la base de l’étude des raisonnements, c’est-à-dire des déductions que l’on
peut faire sur les modèles formels.
Axiome
Un axiome est un énoncé supposé vrai à priori et que l’on ne cherche pas à démontrer. Ces
énoncés ont en commun d’être « évidents » pour tout le monde.
Théorème
Un théorème est une proposition vraie (et en tout cas démontrée comme telle).
Corollaire
Un corollaire à un théorème est un théorème qui est conséquence de ce théorème.
Lemme
Un lemme est un théorème préparatoire à l’établissement d’un théorème de plus grande
importance.
Conjecture
Une conjecture est une proposition que l’on suppose vraie sans parvenir à la démontrer.
Définition
Une définition est un énoncé dans lequel on décrit les particularités d’un objet. On doit avoir
conscience que le mot « axiome » est quelquefois synonyme de « définition ».
P Non P
V F
F V
P Q P OU Q
V V V
V F V
F V V
F F F
P Q P ET Q
V V V
V F F
F V F
F F F
L’implication logique
Si P et Q sont deux propositions, on définit l’implication logique : P ⇒ Q par sa table de
vérité.
P Q P⇒Q
V V V
V F F
F V V
F F V
L’équivalence logique
Deux propositions équivalentes P et Q sont deux propositions simultanément vraies et
simultanément fausses.
Ainsi, la table de vérité de l’équivalence logique P ⇔ Q est :
Les quantificateurs ∀ et ∃
On se donne un ensemble E et P(x) une proposition dont les valeurs de vérité sont fonction
des éléments x de E.
• La proposition : « Pour tous les éléments x de E, la proposition P(x) est vraie »
s’écrit : « ∀x ∈ E, P(x) »
• La proposition : « il existe au moins un élément x de E tel que la proposition P(x) est
vraie » s’écrit : « ∃x ∈ E/ P(x) » ou aussi « ∃x ∈ E, P(x) »
• La proposition : « il existe un et un seul élément x de E tel que la proposition P(x) est
vraie » s’écrit : « ∃!x ∈ E, P(x) »
Remarque :
P(x, y) désigne une proposition dont les valeurs de vérité dépendent de deux variables x et y
comme par exemple la proposition 2x + y > 0 pour x et y réels donnés.
Cette affirmation est vraie si le point de coordonnées (x, y) est strictement au-dessus de la
droite d’équation y = −2x et fausse dans les autres cas.
1) ((∀x ∈ E), (∀y ∈ E), P(x, y)) ⇔ ((∀y ∈ E), (∀x ∈ E), P(x, y))
2) ((∃x ∈ E), (∃y ∈ E), P(x, y)) ⇔ ((∃y ∈ E), (∃x ∈ E), P(x, y))
➢ On peut permuter des quantificateurs de même nature mais on ne peut pas permuter
des quantificateurs de natures différentes.
Flowcharting Symbols
When writing pseudocode, each step of the algorithm is written as a separate line. There is
usually a one-o-one relationship between a flowchart and its corresponding pseudocode.
Sequential Processing
Conditional Processing
A conditional process involves one or more conditions that control the actual sequence of
steps preformed as the task is done. Conditional processing can either be a BRANCH or a
SELECTION
BRANCH IF – THEN
ELSE
F T
ELSE T
F
T
ELSIF F
T
ELSE
F
T
F
T
Many of the things that are done by a computer involve the repetition of steps. There are two
Looping constructs: Standard loop and iteration loop.
Loop 1
Loop 2
Loop 3
Predefined Modules
In flowcharting, you will encounter situations where a certain set of steps are done at
different points of the algorithm. It is perfectly all right to put those steps as many times as
necessary, but the result will be a longer flowchart. In addition to that, it takes a lot of more
work to make sure that all of them have been changed if any modifications are needed. You
will also have to redraw the entire flowchart again.
To simplify the flowchart and also make it easier to modify, it is better to create predefined
modules. This is done by drawing a separate flowchart for the module and then just using the
predefined module in the main flowchart.
Consignes générales :
1) Chaque algorithme est bien identifié.
2) Les mots clés sont généralement des verbes à l’infinitif et sont en lettres
majuscules.
3) La disposition doit être observée. Les énoncés sont alignés sur la gauche et selon
leur niveau. Lorsqu'il y a "décalage" d'une ligne par rapport à la précédente, ce
décalage est constant (ex : 4 ou 6 caractères)
4) Le nom des variables et des méthodes débute par une lettre minuscule et s'il
utilise plus d'un mot, ceux-là débutent par une majuscule.
Exemples : compteur, DegreFahrenheit.
5) Le nom des constantes est en majuscules.
1. Opérations d'entrée/sortie
2. Arrêt du programme
FIN (module)
EXEMPLE
Algorithme : Produire un résultat
Variables locales :
donnée (entier)
résultat (entier)
Instructions :
DEBUT
LIRE donnée
[énoncé(s) du traitement]
ÉCRIRE résultat
FIN (produireResultat)
Variables locales :
nombre1, nombre2 (entiers)
somme (entier)
fichier (fichier de texte)
Instructions :
DEBUT
OUVRIR fichier en LECTURE ("données.dat")
LIRE dans fichier nombre1 nombre2
somme ← nombre1 + nombre2
ÉCRIRE somme
FERMER fichier
FIN (somme2nombres)
4. Structures alternatives
SI condition
ALORS énoncé(s)(la condition est vraie)
Variable locale :
nombre (entier)
Instructions :
DEBUT
LIRE nombre
SI nombre >0
ALORS ÉCRIRE "posilif"
FIN (Afficher)
SI condition
ALORS énoncé(s) (la condition est vraie)
SINON énoncé(s) (la condition est fausse)
EXEMPLE Afficher "positif" si le nombre lu est plus grand que 0 sinon afficher "négatif"
Variables locales :
nombre (enter)
résultat (chaîne de 7 caractères)
Instructions :
DEBUT
LIRE nombre
Sl nombre > 0
SI condition
ALORS SI condition
ALORS énoncé(s)
SINON SI condition
ALORS énoncé(s)
SINON énonce(s)
SINON énoncé(s)
EXEMPLE : Vérifier quelle est la plus petite valeur parmi 3 valeurs différentes
Variables locales :
donnée1, donnée2, donnée3 (entiers)
résultat (entier)
Instructions :
...
SELON expression
valeur 1 : action(s) correspondante(s)
valeur 2 : action(s) correspondante(s)
valeur 3 : action(s) correspondante(s)
Variables locales :
donnée, résultai (entiers)
Instructions :
DEBUT
LIRE donnée
SELON donnée
0: résultat ← 1
1: résultat ← 0
2: résultat ← 5
SINON: résultat ←10
ÉCRIRE résultat
FIN
5.1 Boucle
5.1.2 RÉPÉTER
Enoncé(s)
TANT QUE (condition)
5.1.3 RÉPÉTER
Enoncé(s)
JUSQU'A (condition)
EXEMPLE Compter combien de données ont été lues. La lecture se termine si la valeur lue
est plus petite ou égale à 0.
Variables locales :
compteur, donnée (entiers)
Instructions :
DEBUT
Compteur ← 0
LIRE tonnée
TANT QUE donnée>0
Compteur ← compteur + 1
LIRE donnée
ÉCRIRE compteur
FIN (compterValeurs)
Variante :
Variables locales :
compteur, donnée (entiers)
Instructions :
(Utiliser RÉPÉTER)
Variables locales :
Somme, compteur, nombre (entiers)
Instructions :
DEBUT
somme ← 0
POUR compteur ← 1, 10, PAS 1
LIRE nombre
somme ← somme + nombre
ÉCRIRE somme
FIN (obtenirSomme)
6. Appel de méthode :
Appel de méthode :
Nom_de_l’objet_de_la_méthode (paramètres)
Nom de la méthode ()
Description (ligne de commentaire qui explique ce que fait le module)
Entête : avec paramètres et valeur de retour
Corps
Variables locales
énoncé(s)
RETOURNER Valeur ( ou RETOUR seul si pas de valeur retournée)
EXEMPLE :
Nom de la méthode() : Somme
Description : Fonction servant à fournir une somme à partir de deux entiers.
En tête : Entier Somme (nombre1, nombre2)
Variables locales :
somme (entier)
Instructions :
somme ← nombrel + nombre2
RETOURNER somme
Exercice 1 :
Considérons la situation décrite par les affirmations suivantes :
1) Si le train arrive en retard et il n’y a pas de taxis à la gare alors l’invité arrive en
retard.
2) L’invité n’est pas en retard.
3) Le train est arrivé en retard.
Quelle est donc la déduction ?
Exercice 2 :
Considérons la situation suivante :
1) Si il pleut et l’invité a oublié son parapluie alors l’invité est trempé.
2) L’invité n’est pas trempé.
3) Il pleut.
Démontrez que la déduction est la suivante : l’invité n’a pas oublié son parapluie.
Exercice 3 :
Traduisez les raisonnements suivants en formules de la logique propositionnelle :
1) S’il pleut, alors je prends mon parapluie ; il pleut ; par conséquent je prends mon
parapluie.
2) S’il pleut, alors je prends mon parapluie ; il ne pleut pas ; par conséquent je ne
prends pas mon parapluie.
3) S’il pleut, alors je prends mon parapluie ; je ne prends pas mon parapluie ; par
conséquent il ne pleut pas.
4) S’il pleut, alors je prends mon parapluie ; je prends mon parapluie ; par conséquent il
pleut.
Exercice 4 :
En interprétant p par "je pars", q par "tu restes" et r par "il n’y a personne", traduisez les
formules logiques suivantes en phrases de langage naturel :
1) (p ^ non q ) ⇒ r
2) (p ^ non q) v (non p ^ q)
3) (p ^ q) v (non p ^ non q) ⇒ non r