Vous êtes sur la page 1sur 19

UNIVERSITE ADVENTISTE ZURCHER

Département de l’Informatique

DESCRIPTIF & SYLLABUS


Pour le cours de

Logique Et Algorithme

INAL 211

2021

Enseignant : Dr Rindra RAKOTOMAHEFA


UNIVERSITE ADVENTISTE ZURCHER
Département de l’Informatique
Descriptif du cours INAL 211 – Logique et Algorithme
Premier semestre, Année académique 2021

Information concernant le cours

Heures créditées : Trois


Prérequis :-
UE : Algorithmes
ECUE : INAL 211 – Logique et Algorithme
Enseignant : Dr Rindra Rakotomahefa
Mail : rindrarakotomahefa@zurcher.edu.mg
Contact : 034 07 056 20 – 033 08 641 91
Facebook : Thylacine Doux
Langue : Français
Heures de classe : Mardi de 08h10 à 10h

Description du cours et Objectifs visés

Ce cours initie les étudiants à la méthodologie de la programmation. Ils apprennent à


analyser les problèmes et à les résoudre en utilisant la démarche prescrite.
À la fin du semestre, l'étudiant pourrait :
• Avoir les connaissances en matière de logique pour traiter un problème informatique
• Connaître tous les symboles utilisés pour la construction d’un diagramme de
succession des tâches et actions
• Ecrire un algorithme pour résoudre un problème informatique
• Ecrire les pseudocodes correspondant à un algorithme
• Construire le diagramme correspondant aux pseudocodes
• Maitriser la méthode de base pour résoudre un problème informatique

Contenu du cours

Partie 1 : Notion de logique


Chapitre 1 : Vocabulaire usuel
a. Axiome
b. Proposition
c. Théorème
d. Corollaire
e. Lemme
f. Conjecture
g. Définition
Chapitre 2 : Calculs propositionnels
a. Négation d’une proposition
b. Les connecteurs logiques
c. L’implication logique
d. L’équivalence logique
e. Les quantificateurs

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 2


Partie 2 : Méthodologie de la programmation
Chapitre 1 : Introduction
a. Terminologies
b. Symboles utilisés
c. Principe de construction d’un diagramme
Chapitre 2 : Résolution d’un problème
a. Principe de résolution d’un problème
b. Algorithmes
c. Pseudocodes
Chapitre 3 : Types de processus
a. Processus séquentiel
b. Processus conditionnel
c. Processus à tâches répétitives
Chapitre 4 : Modules prédéfinies

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 :

Tests ................................................. 10%


Projets............................................... 20%
Examen mi-semestriel....................... 30%
Examen final ..................................... 40%

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.

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 3


Plan du cours

Date Activité Exigence

09 février 2021 Partie 1 : Notion de la logique

16 février 2021 Chapitre 1 : Vocabulaire usuel Projet/recherche #1

23 février 2021 Chapitre 2 : Calculs propositionnels


Partie 2 : Méthodologie
02 mars 2021 Chapitre 1 : Introduction Test #1
Chapitre 2 : Résolution d’un problème
Chapitre 3 : Types de processus
09 mars 2021 Test #2
a. Processus séquentiel
16 mars 2021 b. Processus conditionnel Projet/recherche #2

23 mars 2021 b. Processus conditionnel (suite)

30 mars 2021 Semaine d’examen Examen semestriel


Correction de l’examen
06 avril 2021
b. Processus conditionnel (suite)
13 avril 2021 c. Processus répétitif Test #3

20 avril 2021 c. Processus répétitif (suite) Projet/recherche #3

27 avril 2021 c. Processus répétitif (suite)

04 mai 2021 c. Processus répétitif (suite) Test #4

11 mai 2021 Chapitre 4 : Modules prédéfinies

18 mai 2021 Récapitulation et synthèse Projet/recherche #4

25 mai 2021 Préparation & semaine d'examen final Examen final

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 4


Logique – Vocabulaire usuel
Introduction

Les logiques sont utilisées en informatique pour :

- MODELISER de manière formelle des “objets” rencontrés par les informaticiens


(exemple : bases de données, bases de connaissances, pré-post conditions d’une
procédure, etc.)
- RAISONNER Après une phase de modélisation, l’informaticien doit être capable de se
servir du modèle et raisonner sur celui-ci. (exemple : validation d’un modèle de
données, prise de décision à partir de faits et d’une base de connaissances, preuve de
correction d’une procédure/d’un programme)

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.

Proposition (ou assertion ou affirmation)


Une proposition est un énoncé pouvant être vrai ou faux. Le mot proposition est clair : on
propose quelque chose, mais cela reste à démontrer.

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

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 5


Logique – Calculs Propositionnels
Négation d’une proposition
Soit P une proposition. On définit sa négation, notée P (ou aussi nonP ou ⌉P), à partir de sa
table de vérité.

P Non P
V F
F V

Les connecteurs logiques


Le connecteur logique OU / OR

Soient P et Q deux propositions.


On peut définir les propositions « P ou Q », notée P v Q, et « P et Q », notée P ^Q par la
table de vérité :

P Q P OU Q
V V V
V F V
F V V
F F F

Le connecteur logique ET / AND

Soient P et Q deux propositions.


On peut définir les propositions « P et Q », notée P ^ Q par la table de vérité :

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 :

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 6


P Q P ⇔Q
V V V
V F F
F V F
F F V

Remarque : C.N.S, ssi, il faut et il suffit

Les expressions « Condition nécessaire et suffisante (CNS) », « si et seulement si (ssi) », « il


faut et il suffit » signifient toutes « logiquement équivalent » ou encore « ⇔». Mais plus
précisément, dans chacune de ces expressions, quel morceau correspond à « ⇒ » et quel
autre morceau correspond à « ⇐ » ? La réponse est fournie par le tableau suivant :

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

∀ s’appelle le quantificateur universel et ∃ s’appelle le quantificateur existentiel

Propriétés des quantificateurs avec une variable

1) (∀x ∈ E, P(x) ^ Q(x)) ⇔ ((∀x ∈ E/ P(x)) ^ (∀x ∈ E, Q(x))).


2) (∀x ∈ E, P(x) v Q(x)) ⇐ ((∀x ∈ E/ P(x)) v (∀x ∈ E, Q(x))).
3) (∃x ∈ E, P(x) ^ Q(x)) ⇒ ((∃x ∈ E, P(x)) ^ (∃x ∈ E, Q(x))).
4) (∃x ∈ E, P(x) v Q(x)) ⇔ ((∃x ∈ E, P(x)) v (∃x ∈ E, Q(x))).
5) non(∀x ∈ E, P(x)) ⇔ (∃x ∈ E, nonP(x))
6) non(∃x ∈ E, P(x)) ⇔ (∀x ∈ E, nonP(x))

Remarque :

La négation de ∀ x > 0 est ∃ x > 0 et non pas ∃ x ≤ 0


De manière générale, la négation de ∀x ∈ E, . . . est ∃x ∈ E, . . .

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 7


Propriétés des quantificateurs avec deux variables

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.

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 8


Definition of term
Program
Programming
Algorithm
Construct
Logic
Input
Output
Pseudocode
Flowchart

Principles of Problem Solving


Identify
Diagram
Test
Debug
Code

Flowcharting Symbols

Symbols Name Description


Flow lines Used to connect the symbols of the flowchart
Flow Indicators Used to indicate the sequence of steps
represented by the symbols

Process Used to indicate an assignment statement,


wherein a computed value or a constant is
stored in a variable
Input/Output Indicate the data entering (input operation)
and the data being produced (output
operation)
Decision Used to indicate which one of two actions will
be done, depending on whether a specified
condition is True or False
Predefined Process Used to indicate the insertion of a process that
is used several times in the entire task being
described.
Initialization Used to indicate the setting up of operational
controlling values just before entering a code
construct
Terminator Used to indicate the starting point and ending
point of a process

On page connector Used to connect different parts of a task on a


page, in order to avoid the crossing of flow
lines.
Off page connector Used to connect different parts of a task which
have been printed on multiple pages.

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 9


Writing Pseudocode

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

A sequential Process is a set of steps that indicates ALL of the


required actions without using any code constructs.

Symbols used: terminator, process, input/output, on-page and


off-page connectors

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

Conditional Process Pseudocode Flowchart

BRANCH IF – THEN

SIMPLE SELECTION IF – THEN

ELSE

F T

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 10


COMPLEX SELECTION IF – THEN

with single ELSIF section ELSIF

ELSE T

F
T

COMPLEX SELECTION IF – THEN

with multiple ELSIF ELSIF


sections
ELSIF T

ELSIF F

T
ELSE

F
T

F
T

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 11


Looping Constructs

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.

Standard Loops (Condition-based)

Loop Pseudocode Flowchart

Loop 1

Condition is tested at the top, WHILE NOT


and
terminates if condition is TRUE LOOP
T

Loop 2

Condition is tested at the top, WHILE


and
terminates if condition is FALSE LOOP
F

Loop 3

Condition is tested at the REPEAT


bottom, and terminates if
condition is TRUE UNTIL

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 12


Loop 4

Condition is tested at the REPEAT


bottom, and terminates if
condition is FALSE UNTIL NOT

Iteration loop (counted-based)

The number of repetitions is already known at the


beginning and it is controlled by a Counter 1
variable. An iteration loop has four parts:
1. initialization
2. comparison
3. body 4 T
2
4. adjustment (iteration)
F
In pseudocode, this is written as a FOR – NEXT
statement

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.

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 13


REGLES POUR L'ECRITURE DES PSEUDO-CODES

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

LIRE / ÉCRIRE Nom de la variable dans Nom du fichier, Nom de la variable


OUVRIR Nom du fichier en LECTURE / ECRITURE ("fichier physique")
FERMER Nom du fichier

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)

3. Opérations d'affectation (transfert)

← : "prend la valeur de... "

var1 ← var2 le contenu de la variable var2 est affecté à


la variable var1. Donc, var1 prend la valeur de var2
var1 ← "Texte"
var1 ← nombre
var1 ← expression

EXEMPLE : Somme de 2 nombres entiers

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 14


Algorithme : Faire la somme de 2 nombres entiers

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

4.1 Structure alternative simple (un seul branchement)

SI condition
ALORS énoncé(s)(la condition est vraie)

EXEMPLE : Afficher "positif" si le nombre lu est plus grand que 0.

Algorithme : Afficher "positif" si nombre lu > 0

Variable locale :
nombre (entier)
Instructions :
DEBUT
LIRE nombre
SI nombre >0
ALORS ÉCRIRE "posilif"
FIN (Afficher)

4. 2 Structure alternative complexe

4. 2. 1 Sélection binaire simple

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"

Algorithme : Afficher "positif" si nombre lu > 0 sinon afficher "négatif"

Variables locales :
nombre (enter)
résultat (chaîne de 7 caractères)
Instructions :
DEBUT
LIRE nombre
Sl nombre > 0

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 15


ALORS résultat ← "positif"
SINON résultat ← "négatif"
ECRIRE résultat
FIN (Afficher)

4. 2. 2 Emboîtement des conditions

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

Algorithme : Afficher la dus petite valeur parmi 3 différentes

Variables locales :
donnée1, donnée2, donnée3 (entiers)
résultat (entier)
Instructions :
...

4.3 Structure alternative multiple

SELON expression
valeur 1 : action(s) correspondante(s)
valeur 2 : action(s) correspondante(s)
valeur 3 : action(s) correspondante(s)

SINON : action(s) correspondante(s)

EXEMPLE attribuer une valeur à la variable résultat selon la donnée lue.

Algorithme Attribuer une valeur à résultat

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

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 16


5. Structures itératives

5.1 Boucle

5.1.1 TANT QUE (condition)


Enoncé(s)

(les énoncés sont répétés tant que la condition est vraie)

5.1.2 RÉPÉTER
Enoncé(s)
TANT QUE (condition)

(les énoncés sont répétés tant que la condition est vraie)

5.1.3 RÉPÉTER
Enoncé(s)
JUSQU'A (condition)

(les énoncés sont répétés tant que la condition est fausse)

EXEMPLE Compter combien de données ont été lues. La lecture se termine si la valeur lue
est plus petite ou égale à 0.

Algorithme : Compter le nombre de valeurs lues

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 :

Algorithme : Compter le nombre de valeurs lues

Variables locales :
compteur, donnée (entiers)
Instructions :
(Utiliser RÉPÉTER)

5.2 Boucle avec variable de contrôle (compteur)

POUR compteur ← val.départ, val.finale, PAS val.incrément


énoncé(s)

EXEMPLE : Faire la somme de 10 nombres

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 17


Algorithme : Obtenir la somme de 10 nombres

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)

EXEMPLE aucun paramètre : calcul.afficher()


EXEMPLE avec paramètres : calcul.additionner(nombrel, nombre2)
Résultat ← nombres.calculer (nombre1, nombre2)

Appel de méthode statique :


Nom_de_la_classe_de_la_méthode (paramètres)

7. Pseudo-code d’une méthode

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

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 18


EXERCICES

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

Dr Rindra Rakotomahefa Logique et Algorithme | 2021 - 19

Vous aimerez peut-être aussi