Vous êtes sur la page 1sur 74

iUT

ORSAY
Universit Paris XI
I.U.T. d'Orsay
Dpartement Informatique
Anne scolaire 2003-2004
Algorithmique : Volume 1
Introduction
Instructions de base
Logique propositionnelle
Ccile Balkanski, Nelly Bensimon, Grard Ligozat
Algorithmique 1 : Introduction 1
Pourquoi un cours d " Algo" ?
Objectif : obtenir de la machine quelle effectue
un travail notre place
Problme : expliquer la machine comment
elle doit s'y prendre
Mais... comment le lui dire ?
Comment le lui apprendre ?
Comment s'assurer qu'elle fait ce travail aussi
bien que nous ?
Mieux que nous?
Algorithmique 1 : Introduction 2
Objectif de cet enseignement
rsoudre des problmes comme une
machine
savoir expliciter son raisonnement
savoir formaliser son raisonnement
concevoir (et crire) des algorithmes :
- squence dinstructions qui dcrit comment rsoudre
un problme particulier
Algorithmique 1 : Introduction 3
Thmes abords en Algo
Apprentissage dun langage
Notions de base
- algorithmes de base pour problmes lmentaires
Structures de donnes
- des plus simples aux plus complexes
Rsolution de problmes complexes
- algorithmes astucieux et efficaces
Algorithmique 1 : Introduction 4
L'algorithmique, vous la pratiquez tous les
jours et depuis longtemps...
Briques de LEGO Camion de pompiers
suite de dessins
Meuble en kit Cuisine quipe
notice de montage
Cafetire Expresso
instructions
Laine Pull irlandais
modle
Farine, oeufs, chocolat, etc.... Fort noire
recette
Algorithmique 1 : Introduction 5
De l'importance de l'algorithme
Informations
parses
Machine
Donnes
structures
Traitement
Obtention
de rsultats
Rsultats
mis en forme
Un algorithme, traduit dans un langage comprhensible par lordinateur
(ou langage de programmation, ici le C++), donne un programme, qui
peut ensuite tre excut, pour effectuer le traitement souhait.
Algorithmique 1 : Introduction 6
Savoir expliquer comment faire un travail sans
la moindre ambigut
- langage simple : des instructions (pas lmentaires)
- suite finie d'actions entreprendre en respectant une
chronologie impose
Lcriture algorithmique : un travail de
programmation vise universelle
un algorithme ne dpend pas
- du langage dans lequel il est implant,
- ni de la machine qui excutera le programme correspondant.
Algorithmique 1 : Introduction 7
Les problmes fondamentaux
en algorithmique
Complexit
- En combien de temps un algorithme va -t-il atteindre le
rsultat escompt?
- De quel espace a-t-il besoin?
Calculabilit :
- Existe-t-il des tches pour lesquelles il n'existe aucun
algorithme ?
- Etant donne une tche, peut-on dire s'il existe un
algorithme qui la rsolve ?
Correction
- Peut-on tre sr qu'un algorithme rponde au problme
pour lequel il a t conu?
Algorithmique 1 : Instructions de
base
8
Les instructions de base
Algorithmique 1 : Instructions de base 9
Un premier algorithme
Algorithme ElveAuCarr
{Cet algorithme calcule le carr du nombre que lui fournit l'utilisateur}
variables unNombre, sonCarr: entiers {dclarations: rservation
d'espace-mmoire}
dbut
{prparation du traitement}
afficher("Quel nombre voulez-vous lever au carr?")
saisir(unNombre)
{traitement : calcul du carr}
sonCarr unNombre unNombre
{prsentation du rsultat}
afficher("Le carr de ", unNombre)
afficher("c'est ", sonCarr)
fin
Algorithmique 1 : Instructions de base 10
Les trois tapes dun algorithme
Prparation du traitement
- donnes ncessaires la rsolution du problme
Traitement
- rsolution pas pas, aprs dcomposition en sous-
problmes si ncessaire
Edition des rsultats
- impression lcran, dans un fichier, etc.
Algorithmique 1 : Instructions de base 11
Dclarer une variable
variable <liste didentificateurs> : type
Fonction :
Instruction permettant de rserver de lespace mmoire
pour stocker des donnes (dpend du type de ces
donnes : entiers, rels, caractres, etc.)
Exemples :
variables val, unNombre : entiers
nom, prnom : chanes de caractres
Algorithmique 1 : Instructions de base 12
Saisir une donne
saisir(<liste de noms de variables>)
Fonction :
Instruction permettant de placer en mmoire les
informations fournies par l'utilisateur.
Exemples:
saisir(unNombre)
saisir(nom, prnom)
saisir(val)
Algorithmique 1 : Instructions de base 13
Afficher une donne, un rsultat
afficher(<liste de noms de variables, de
constantes ou d expressions>)
Fonction:
Instruction permettant de visualiser les informations
places en mmoire.
Exemples:
afficher(unNombre, "est diffrent de 0")
afficher("La somme de", unNombre, "et" , val , "est",
unNombre + val)
Algorithmique 1 : Instructions de base 14
Dclarer une constante
constante (<identificateur> : type) <expression>
Fonction:
Instruction permettant de rserver de lespace mmoire
pour stocker des donnes dont la valeur est fixe pour tout
lalgorithme
Exemples:
constantes (MAX : entier) 100
(DOUBLEMAX : entier) MAX 2
Algorithmique 1 : Instructions de base 15
Saisies et affichages : exemples
Algorithme ParExemple
{Saisit un prix HT et affiche le prix TTC correspondant}
constantes (TVA : rel) 20.6
(Titre : chane) "Rsultat"
variables prixHT, prixTTC : rels {dclarations}
dbut {prparation du traitement}
afficher("Donnez-moi le prix hors taxe :")
saisir(prixHT)
prixTTC prixHT * (1+TVA/100) {calcul du prix TTC}
afficher(Titre) {prsentation du rsultat}
afficher(prixHT, euros H.T. devient ", prixTTC, euros T.T.C.")
Fin
Affichage :
Algorithmique 1 : Instructions de base 16
Affecter une valeur une variable
<identificateur> <expression> ou
<constante> ou <identificateur>
Fonction :
Instruction permettant dattribuer la variable identifie
par l'lment plac gauche du symbole la valeur
de l'lment plac droite de ce symbole.
Exemple:
nom "Venus"
val 50
val val 2
Algorithmique 1 : Instructions de base 17
Affectation : exemples
constante (SEUIL : rel) 13.25
variables valA, valB : rels
compteur : entier
mot , tom : chanes
valA 0.56
valB valA tableau de simulation :
valA valA (10.5 + SEUIL) valA valB comp- mot tom
compteur 1 teur
compteur compteur + 10
mot " Bonjour "
tom "Au revoir ! "
Algorithmique 1 : Instructions de base 18
Affectation : exemples (suite)
afficher(mot)
afficher(" valA = ", valA)
afficher(" valB = ", valB)
afficher(" compteur =", compteur )
afficher(tom)
Affichage :
Algorithmique 1 : Instructions de base 19
Simulation d'un algorithme
Algorithme CaFaitQuoi?
{Cet algorithme .........................................}
variables valA, valB : rels {dclarations}
dbut {prparation du traitement}
afficher("Donnez-moi deux valeurs :")
saisir (valA, valB)
afficher("Vous m'avez donn ", valA, " et ", valB)
{traitement mystre}
valA valB
valB valA {prsentation du rsultat}
afficher("Maintenant , mes donnes sont : ", valA, " et ", valB)
Fin
Affichage :
Algorithmique 1 : Instructions de base 20
Ce quil fallait faire
Dclarer une variable supplmentaire
variables valA, valB, valTemp : entiers
Utiliser cette variable pour stocker provisoirement
une des valeurs
saisir(valA, valB)
valTemp valA
valA valB
valB valTemp
Algorithmique 1 : Instructions de base 21
Traitement faire si
Algorithme SimpleOuDouble
{Cet algorithme saisit une valeur entire et affiche son double si cette
donne est infrieure un seuil donn.)
constante (SEUIL : entier) 10
variable val : entier
dbut
afficher("Donnez-moi un entier : ") { saisie de la valeur entire}
saisir(val)
si val < SEUIL { comparaison avec le seuil}
alors afficher ("Voici son double :" , val 2)
sinon afficher ("Voici la valeur inchange :" , val)
fsi
fin
Algorithmique 1 : Instructions de base 22
Linstruction conditionnelle
si <expression logique>
alors instructions
[sinon instructions]
fsi
Si lexpression logique (la condition) prend la valeur vrai,
le premier bloc dinstructions est excut; si elle prend la
valeur faux, le second bloc est excut (sil est prsent,
sinon, rien).
Algorithmique 1 : Instructions de base 23
Une autre criture
Algorithme SimpleOuDouble
{Cet algorithme saisit une valeur entire et affiche son double si cette
donne est infrieure un seuil donn.)
constante (SEUIL : entier) 10
variable val : entier
dbut
afficher("Donnez-moi un entier : ") { saisie de la valeur entire}
saisir(val)
si val < SEUIL
alors val val 2 {comparaison avec le seuil }
fsi
afficher("Voici la valeur finale : ", val)
fin
Algorithmique 1 : Instructions de base 24
Quand la condition se complique :
les conditionnelles embotes
Problme : afficher "Reu avec mention" si une note est
suprieure ou gale 12, "Passable" si elle est suprieure
10 et infrieure 12, et "Insuffisant" dans tous les autres cas.
si note 12
alors afficher( "Reu avec mention" )
sinon si note 10
alors afficher( "Passable" )
sinon afficher( "Insuffisant" )
fsi
fsi
Algorithmique 1 : Instructions de base 25
La slection sur choix multiples
selon <identificateur>
(liste de) valeur(s) : instructions
(liste de) valeur(s) : instructions

[autres : instructions]
Sil y a plus de deux choix possibles, linstruction selon
permet une facilit dcriture.
Algorithmique 1 : Instructions de base 26
Linstruction selon : exemple
selon abrviation
"M" : afficher( " Monsieur " )
"Mme" : afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
autres : afficher( " Monsieur, Madame " )
Comparer : si abrviation = "M"
alors afficher( "Monsieur" )
sinon si abrviation = "Mme"
alors afficher("Madame")
sinon si abrviation = "Mlle"
alors afficher( "Mademoiselle" )
sinon afficher( "Monsieur,Madame " )
fsi
fsi
fsi
Algorithmique 1 : Instructions de base 27
Quand il faut rpter un traitement ...
Algorithme FaitLeTotal
{Cet algorithme fait la somme des nbVal donnes qu'il saisit}
variables nbVal, cpt : entiers
valeur, totalValeurs : rels
dbut
{initialisation du traitement}
afficher("Combien de valeurs voulez-vous saisir ?")
saisir(nbVal)
{initialisation du total 0 avant cumul}
totalValeurs 0
{traitement qui se rpte nbVal fois}
pour cpt 1 nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurs totalValeurs + valeur {cumul}
fpour
{dition des rsultats}
afficher("Le total des ", nbVal, "valeurs est " ,
fin
Algorithmique 1 : Instructions de base 28
Simulation de la boucle pour
Donnes : 3 3 -1 10
Tableau de simulation :
Affichage :
Algorithmique 1 : Instructions de base 29
La boucle pour
pour <var> valInit valfin [par <pas>] faire
traitement {suite dinstructions}
fpour
Fonction:
rpter une suite dinstructions un certain nombre de fois
Algorithmique 1 : Instructions de base 30
Les champs de la boucle pour
pour <variable> <valeur <valeur par <valeur faire
initiale> finale> du " pas" >
traitement
type entier ou
rel,
le mme pour
ces 4
informations
constante, variable,
ou expression arithmtique
valeur dont varie la variable de boucle
entre deux passages dans la boucle,
1 par dfaut (peut tre ngatif)
Algorithmique 1 : Instructions de base 31
Smantique de la boucle pour
Implicitement, linstruction pour:
- initialise une variable de boucle (le compteur)
- incrmente cette variable chaque pas
- vrifie que cette variable ne dpasse pas la borne
suprieure
Attention :
- le traitement ne doit pas modifier la variable de boucle
pour cpt 1 MAX faire
si () alors cpt MAX Interdit !
fpour
Algorithmique 1 : Instructions de base 32
Quand le nombre d'itrations
nest pas connu...
Algorithme FaitLeTotal
{Cet algorithme fait la somme des donnes quil saisit, arrt la lecture de -1)
constante (STOP : entier) -1
variables val, totalValeurs : entiers
dbut
totalValeurs 0
afficher("Donnez une valeur, " , STOP, " pour finir.") {amorage}
saisir(val)
tant que val STOP faire
totalValeurs totalValeurs + val {traitement}
afficher("Donnez une autre valeur, " , STOP, " pour finir.")
saisir(val) {relance}
ftq
afficher("La somme des valeurs saisies est " , totalValeurs)
fin
Algorithmique 1 : Instructions de base 33
Simulation de la boucle tant que
Donnes : 3 -3 10 -1
Tableau de simulation :
STOP = 1
Affichage :
Algorithmique 1 : Instructions de base 34
La boucle tant que faire
amorage {initialisation de la (des) variable(s) de condition}
tant que <expression logique (vraie)> faire
traitement {suite dinstructions}
relance {r-affectation de la (des) variable(s) de condition}
ftq
Fonction:
- rpter une suite dinstructions tant quune condition est
remplie
remarque : si la condition est fausse ds le dpart, le
traitement nest jamais excut
Algorithmique 1 : Instructions de base 35
Smantique de la boucle tant que
saisir(val)
tant que val STOP faire
totalValeurs totalValeurs + val
afficher("Donnez une autre valeur, " , STOP, " pour finir. " )
saisir(val)
ftq
afficher("La somme des valeurs saisies est " , totalValeurs)
amorage: initialisation
de la variable de condition
condition d'excution
du traitement
traitement
excuter
si la condition
est vrifie
relance:
r-affectation
de la variable
de condition
affichage
rsultats
Algorithmique 1 : Instructions de base 36
Comparaison boucles pour et tant que
pour cpt 1 nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurs totalValeurs + valeur {cumul}
fpour
cpt 0
tant que cpt <nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurs totalValeurs + valeur {cumul}
cpt cpt + 1 {compte le nombre de valeurs traites}
ftq
...quivaut :
Algorithmique 1 : Instructions de base 37
Comparaison boucles pour et tant que
(suite)
Implicitement, linstruction pour:
- initialise un compteur
- incrmente le compteur chaque pas
- vrifie que le compteur ne dpasse pas la borne suprieure
Explicitement, linstruction tant que doit
- initialiser un compteur {amorage}
- incrmenter le compteur chaque pas {relance}
- vrifier que le compteur ne dpasse pas la borne suprieure
{test de boucle}
Algorithmique 1 : Instructions de base 38
Choisir pour... Choisir tant que...
si le nombre ditrations est connu lavance,
choisir la boucle pour
si la boucle doit s'arrter quand survient un
vnement ,
choisir la boucle tant que
Algorithmique 1 : Instructions de base 39
La boucle rpter : un exemple
Algorithme Essai
{Cet algorithme a besoin dune valeur positive paire}
variables valeur : entier
dbut
rpter
afficher("Donnez une valeur positive non nulle : ")
saisir(valeur)
tant que valeur 0
afficher("La valeur positive non nulle que vous avez saisie est ")
afficher( valeur )
{traitement de la valeur saisie}
fin
Algorithmique 1 : Instructions de base 40
Simulation de la boucle rpter
Donnes : -2 0 4
Tableau de simulation :
Affichage :
Algorithmique 1 : Instructions de base 41
La boucle rpter ...tant que
rpter
(r)affectation de la (des) variable(s) de
condition
traitement {suite dinstructions}
tant que <expression logique (vraie)>
Fonction:
- excuter une suite dinstructions au moins une fois et
la rpter tant quune condition est remplie
Remarque: le traitement dans lexemple prcdent se
limite la r-affectation de la variable de condition
Algorithmique 1 : Instructions de base 42
Comparaison boucles
rpter et tant que
rpter
afficher("Donnez une valeur positive paire :")
saisir(valeur)
tant que (valeur < 0 ou (valeur % 2) 0)
...quivaut :
afficher("Donnez une valeur positive paire :")
saisir(valeur)
tant que (valeur < 0 ou (valeur % 2) 0) faire
afficher("Donnez une valeur positive paire:")
saisir(valeur)
ftq
Algorithmique 1 : Instructions de base 43
Comparaison boucles
rpter et tant que (suite)
boucle tant que
- condition vrifie avant chaque excution du traitement
- le traitement peut donc ne pas tre excut
- de plus : la condition porte surtout sur la saisie de nouvelles
variables (relance)
boucle rpter tant que
- condition vrifie aprs chaque excution du traitement
- le traitement est excut au moins une fois
- de plus : la condition porte surtout sur le rsultat du
traitement
Remarque : la boucle rpter est typique pour les saisies avec vrification.
Algorithmique 1 : Instructions de base 44
Choisir pour... tant que rpter
Boucle tant que
Nombre
ditrations
connu ?
Traitement
excut au moins
une fois ?
n
o
n
o
u
i
n
o
n
o
u
i
Boucle rpter
Boucle pour
Algorithmique 1 : Instructions de base 45
Remarque
fsi, ftq et fpour peuvent tre omis si le corps
se limite une seule instruction
Exemples:
si val > 0 alors afficher( fini! )
pour i 1 MAX faire afficher(i val)
Algorithmique 1 : Instructions de base 46
Le problme dune boucle : il faut en sortir!
tant que A faire B
rpter B tant que A
quelque chose dans la suite dinstructions B doit
amener A prendre la valeur Faux.
la suite dinstructions B doit modifier au moins une variable de
lexpression logique A
(mauvais) exemple : val1 2 ; val2 3
tant que val1 < 100 faire
val2 val2 val1
ftq
cest lexpression logique A (et elle seule!) qui en
prenant la valeur Faux provoque larrt de la boucle.
Algorithmique 1 : Instructions de base 47
De l'nonc la boucle
saisir(val)
tant que val 0 faire
afficher(val val)
saisir(val)
ftq
afficher le carr des
valeurs saisies tant
quon ne saisit pas 0
saisir(val)
somme val
tant que somme 500 faire
saisir(val)
somme somme + val
ftq
saisir des donnes
et s'arrter ds que
leur somme
dpasse 500
Algorithmique 1 : Instructions de base 48
De l'nonc la boucle (suite)
saisir des donnes
et s'arrter ds que
leur somme
dpasse 500
somme 0
rpter
saisir(val)
somme somme + val
tant que somme 500
saisir des donnes
tant que leur somme
ne dpasse un seuil
donn
Algorithmique 1 : Instructions de base 49
Exemple dun mauvais choix de boucle
Algorithme Somme
{Cet algorithme fait la somme dune suite de nombres tant que cette somme
ne dpasse un seuil donn)
constante (SEUIL : entier) 1000
variables val, somme : entiers
dbut
somme 0
rpter
afficher( "Entrez un nombre")
saisir(val)
somme somme + val
tant que somme SEUIL
afficher( "La somme atteinte est" , somme - val)
fin
Algorithmique 1 : Instructions de base 50
Version corrige
Algorithme Somme
{Cet algorithme fait la somme dune suite de nombres tant que cette somme
ne dpasse un seuil donn)
constante (SEUIL : entier) 1000
variables val, somme : entiers
dbut
Algorithmique 1 : Instructions de base 51
Quand utiliser la boucle tant que?
Structure itrative "universelle"
n'importe quel contrle d'itration peut se traduire par le
"tant que "
Structure itrative irremplaable ds que la
condition d'itration devient complexe
Exemple:
saisir des valeurs, les traiter, et sarrter la saisie de
la valeur darrt 1 ou aprs avoir saisi 5 donnes.
Algorithmique 1 : Instructions de base 52
Exemple
constantes (STOP : entier) -1
(MAX : entier) 5
variables nbVal , val : entiers
dbut
nbVal 0 {compte les saisies traites}
saisir(val) {saisie de la 1
re
donne}
tant que val STOP et nbVal < MAX faire
nbVal nbVal + 1
{traitement de la valeur saisie}
saisir(val) {relance}
ftq
afficher(val, nbVal) {valeurs en sortie de boucle}

Attention :
La valeur darrt nest jamais traite (et donc, jamais comptabilise)
Algorithmique 1 : Instructions de base 53
Simulation de la boucle
test 1 : 3 5 -1 test 3 : 3 5 -6 4 0 1
test 2 : 3 5 -6 4 0 8 test 4 : -1
Algorithmique 1 : Instructions de base 54
Interprter l'arrt des itrations
nbVal 0 {compte les saisies traites}
saisir(val) {saisie de la 1
re
donne}
tant que val STOP et nbVal < MAX faire
nbVal nbVal + 1
{traitement de la valeur saisie}
saisir(val) {relance}
ftq
si val = STOP
alors {la dernire valeur teste tait la valeur darrt}
afficher( Sortie de boucle car saisie de la valeur darrt;
toutes les donnes significatives ont t traites. )
sinon {il y avait plus de 5 valeurs tester}
afficher( Sortie de boucle car nombre maximum de valeurs
traiter atteint; des donnes significatives nont pas
pu t traites. ")
fsi
Algorithmique 1 : Instructions de base 55
De limportance du test de sortie
de boucle ( et donc de la logique)
tant que val STOP et nbVal < MAX faire
dans la boucle : val STOP et nbVal < MAX est vrai
la sortie de boucle :
soit val STOP est faux val = STOP
soit nbVal < MAX est faux nbVal MAX
que tester la sortie de boucle?
si val = STOP alors voir transparent prcdent.
si nbVal MAX alors mauvais test car message dpend
de la dernire valeur saisie.
Algorithmique 1 : Instructions de base 56
Conclusion: Quelques leons retenir
Le moule d'un algorithme
Algorithme AuNomEvocateur
{Cet algorithme fait..............en utilisant telle et telle donne.........}
constantes
variables
dbut
{prparation du traitement : saisies,....}
{traitements, si itration, la dcrire }
{prsentation des rsultats: affichages,... }
fin
Il faut avoir une criture rigoureuse
Il faut avoir une criture soigne : respecter lindentation
Il est ncessaire de commenter les algorithmes
Il existe plusieurs solutions algorithmiques un problme pos
Il faut rechercher lefficacit de ce que lon crit
Algorithmique 1 : Logique 57
Logique propositionnelle
Algorithmique 1 : Logique 58
En quoi la logique est-elle utile au
programmeur ?
La logique : une faon de formaliser notre
raisonnement
Il ny a pas une logique mais DES logiques
La logique propositionnelle : modle
mathmatique qui nous permet de raisonner sur la
nature vraie ou fausse des expressions logiques
Algorithmique 1 : Logique 59
Retour sur les conditions d'itration
tant que somme SEUIL faire...
tant que val STOP et nbVal < MAX faire
tant que valeur < 0 ou (valeur % 2) 0 faire...
Proposition :
expression qui peut prendre la valeur VRAI ou FAUX
Exemples de propositions:
2 et 2 font 4
1 et 1 font 10
il pleut
x > y
Algorithmique 1 : Logique 60
Elments de logique propositionnelle
Formule :
- expression logique compose de variables
propositionnelles et de connecteurs logiques
Variable propositionnelle :
- une proposition considre comme indcomposable
Connecteurs logiques:
- ngation non, - conjonction et,
- implication - disjonction ou,
Exemple : p et q variables propositionnelles
(( p q) q) (p q)
Algorithmique 1 : Logique 61
Reprsentations d'une formule
(p q) ((p r) p )
Par un arbre syntaxique :
En utilisant la notation prfixe (polonaise) :
p q p r p
En utilisant la notation postfixe :
p q p r p
p


p
p
r

Algorithmique 1 : Logique 62
Tables de vrit
Reprsentation des valeurs de vrit
associes une expression logique
Ngation Conjonction Disjonction Implication
p
p
p q
pq
p q
pq
p q
pq
V F V V V V V V V V V
F V V F F V F V V F F
F V F F V V F V V
F F F F F F F F V


p et q : variables propositionnelles
Algorithmique 1 : Logique 63
Equivalences classiques
Commutativit
- p q quivalent q p
- p q quivalent q p
Associativit
- p (q r) quivalent (p q) r
- p (q r) quivalent (p q) r
Distributivit
- p (q r) quivalent (p q) (p r)
- p (q r) quivalent (p q) (p r)
Algorithmique 1 : Logique 64
Equivalences classiques (suite)
Lois de Morgan
(p q) quivalent ( p) ( q)
(p q) quivalent ( p) ( q)
p q
p q (p q) p q p q
Algorithmique 1 : Logique 65
Formules :
quelques classes et relations
Les tautologies :
- vraies pour toute assignation de valeurs de vrit aux
variables. p p p p
- exemple : p p
Les formules contradictoires :
- fausses pour toute assignation de valeurs de vrit aux
variables. p p p p
- exemple : p p
Algorithmique 1 : Logique 66
Formules :
quelques classes et relations (suite)
Les formules quivalentes:
- mme valeur de vrit pour toute assignation de la mme
valeur de vrit aux variables.
- exemples : p q est quivalent p q
p q est quivalent q p
p q p q p q p q
Algorithmique 1 : Logique 67
Du bon usage de la logique
Vrification de l'quivalence de deux formules
"tre mineur (p) ou majeur (p) non imposable (q) "
quivaut "tre mineur (p) ou non imposable (q) "
p q
pq p( pq) pq





Algorithmique 1 : Logique 68
Applications l'algorithmique
Interprter (et bien comprendre!) larrt des itrations
la sortie dune boucle.
tant que <cond> faire
la sortie : non(<cond>) est vrai
donc si cond = p et q
la sortie : non (p et q)
cest a dire non p ou non q
Exemple : avec <cond> gal : val STOP et nbVal < MAX
non(<cond>) gal : val =STOP ou nbVal MAX
Algorithmique 1 : Logique 69
Applications l'algorithmique (suite)
Simplifier une criture par substitution d'une formule
quivalente
si (Age = "Mineur"
ou (non (Age = "Mineur") et non (Fisc = "Imposable"))) alors...
Equivalent :
si (Age = "Mineur" ou non (Fisc = "Imposable")) alors...
Vrifier la validit d'une condition
si Valeur< 10 et Valeur >100 alors cas improbable
Ecrire la ngation dune condition
si on veut P et Q et R :
rpter . tant que non P ou non Q ou non R ou
Algorithmique 1 : Logique 70
Le Type BOOLEEN
Deux constantes boolennes :
VRAI , FAUX
Des variables de type boolens :
variables ok, continuer : boolen
ok (rep = O ou rep = o )
continuer (val > O et val < 9)
Dans les conditionnelles et itratives :
tant que ok faire
si continuer alors ...
Algorithmique 1 : Logique 71
Le Type BOOLEEN : exemple
Algorithme Logique
constantes (MAX : entier) 5
(STOP : entier) -1
variables nbVal, val : entiers
ok : boolen
dbut
nbVal 0
saisir (val)
ok val STOP et nbVal < MAX {initialisation de la variable
tant que ok faire de boucle boolenne }
nbVal nbVal + 1
saisir(val)
ok val STOP et nbVal < MAX {relance}
ftq
si val = STOP alors ...
Algorithmique 1 : Logique 72
Boolens : encore des exemples
variables val : entier
encore : boolen
dbut
encore faux
val 0
rpter
afficher( "bonjour " )
val val 1
encore val > 0
tant que encore
afficher( "fini " )
fin
encore faux
val 0
tant que non encore faire
val val + 1
afficher(val )
encore val > 2
ftq
afficher( "fini " )
Algorithmique 1 73
fin Volume 1

Vous aimerez peut-être aussi