Académique Documents
Professionnel Documents
Culture Documents
Algorithmique : Volume 1
• Introduction
• Instructions de base
• Logique propositionnelle
Algorithmique 1 : Introduction 2
Thèmes abordés en «Algo»
Algorithmique 1 : Introduction 3
L'algorithmique, vous la pratiquez tous les
jours et depuis longtemps...
Cafetière Expresso
instructions
Algorithmique 1 : Introduction 4
De l'importance de l'algorithme
Informations Résultats
éparses mis en forme
Machine
Données Obtention
structurées de résultats
Traitement
Algorithmique 1 : Instructions de 8
base
Un premier algorithme
Algorithme ElèveAuCarré
{Cet algorithme calcule le carré du nombre que lui fournit l'utilisateur}
{présentation du résultat}
afficher("Le carré de ", unNombre)
afficher("c'est ", sonCarré)
fin
Algorithmique 1 : Instructions de base 9
Les trois étapes d’un algorithme
• Préparation du traitement
- données nécessaires à la résolution du problème
• Traitement
- résolution pas à pas, après décomposition en sous-
problèmes si nécessaire
• Edition des résultats
- impression à l’écran, dans un fichier, etc.
• Fonction :
Instruction permettant de réserver de l’espace mémoire
pour stocker des données (dépend du type de ces
données : entiers, réels, caractères, etc.)
• Exemples :
variables val, unNombre : entiers
nom, prénom : chaînes de caractères
• Fonction :
Instruction permettant de placer en mémoire les
informations fournies par l'utilisateur.
• Exemples:
saisir(unNombre)
saisir(nom, prénom)
saisir(val)
Algorithmique 1 : Instructions de base 12
Afficher une donnée, un résultat
afficher(<liste de noms de variables, de
constantes ou d ’expressions>)
• Fonction:
Instruction permettant de visualiser les informations
placées en mémoire.
• Exemples:
afficher(unNombre, "est différent de 0")
afficher("La somme de", unNombre, "et" , val , "est",
unNombre + val)
• Fonction:
Instruction permettant de réserver de l’espace mémoire
pour stocker des données dont la valeur est fixée pour tout
l’algorithme
• Exemples:
(MAX : entier) ← 100
(DOUBLEMAX : entier) ← MAX × 2
constantes
Affichage :
Algorithmique 1 : Instructions de base 15
Affecter une valeur à une variable
<identificateur> ← <expression> ou
<constante> ou <identificateur>
• Fonction :
compteur ← 1
valA valB comp- mot tom
compteur ← compteur + 10
teur
afficher(mot)
afficher(" valA = ", valA)
afficher(" valB = ", valB)
afficher(" compteur =", compteur )
afficher(tom)
Affichage :
valA ← valB
{traitement mystère}
Affichage :
Algorithmique 1 : Instructions de base 19
Ce qu’il fallait faire …
Algorithme SimpleOuDouble
{Cet algorithme saisit une valeur entière et affiche son double si cette
si <expression logique>
alors instructions
[sinon instructions]
fsi
si note ≥ 12
sinon si note ≥ 10
alors afficher( "Reçu avec mention" )
selon <identificateur>
(liste de) valeur(s) : instructions
(liste de) valeur(s) : instructions
…
[autres : instructions]
totalValeurs ← 0
{initialisation du total à 0 avant cumul}
• Données :3 3 -1 10
• Tableau de simulation :
• Affichage :
• Fonction:
répéter une suite d’instructions un certain nombre de fois
traitement
type entier ou
réel,
le même pour valeur dont varie la variable de boucle
ces 4 entre deux passages dans la boucle,
informations à 1 par défaut (peut être négatif)
(STOP : entier) ← -1
{Cet algorithme fait la somme des données qu’il saisit, arrêt à la lecture de -1)
constante
variables val, totalValeurs : entiers
totalValeurs ← 0
début
• Données :3 -3 10 -1
• Tableau de simulation :
STOP = −1
• Affichage :
• Fonction:
- répéter une suite d’instructions tant qu’une condition est
remplie
remarque : si la condition est fausse dès le départ, le
traitement n’est jamais exécuté
Algorithmique 1 : Instructions de base 34
Sémantique de la boucle tant que
amorçage: initialisation
de la variable de condition
condition d'exécution
du traitement
...équivaut à :
cpt ← 0
tant que cpt < nbVal faire
afficher("Donnez une valeur :")
cpt ← cpt + 1
{cumul}
{compte le nombre de valeurs traitées}
ftq
Algorithmique 1 : Instructions de base 36
Comparaison boucles pour et tant que
(suite)
afficher("La valeur positive non nulle que vous avez saisie est ")
afficher( valeur )
… {traitement de la valeur saisie}
fin
Algorithmique 1 : Instructions de base 39
Simulation de la boucle répéter
• Données : -2 0 4
• Tableau de simulation :
• Affichage :
répéter
(ré)affectation de la (des) variable(s) de
condition
traitement {suite d’instructions}
tant que <expression logique (vraie)>
• Fonction:
- exécuter une suite d’instructions au moins une fois et
la répéter tant qu’une condition est remplie
Remarque: le traitement dans l’exemple précédent se
limite à la ré-affectation de la variable de condition
Algorithmique 1 : Instructions de base 41
Comparaison boucles
répéter et tant que
répéter
afficher("Donnez une valeur positive paire :")
...équivaut à :
afficher("Donnez une valeur positive paire :")
ou
Nombre
Boucle répéter
i
d’itérations
connu ?
oui
Boucle pour
Exemples:
si val > 0 alors afficher(« fini! »)
pour i ← 1 à MAX faire afficher(i × val)
→ (mauvais) exemple :
l’expression logique A
val1 ä 2 ; val2 ä 3
tant que val1 < 100 faire
val2 ä val2 × val1
ftq
• c’est l’expression logique A(et elle seule!) qui en
prenant la valeur Faux provoque l’arrêt de la boucle.
Algorithmique 1 : Instructions de base 46
De l'énoncé à la boucle
somme ← val
saisir(val)
saisir des données
tant que somme ≤ 500 faire
et s'arrêter dès que
leur somme
somme ← somme + val
dépasse 500 saisir(val)
ftq
Algorithmique 1 : Instructions de base 47
De l'énoncé à la boucle (suite)
somme ← 0
saisir des données
et s'arrêter dès que
leur somme répéter
dépasse 500
somme ← somme + val
saisir(val)
Algorithme Somme
{Cet algorithme fait la somme d’une suite de nombres tant que cette somme
somme ← 0
début
répéter
afficher( "Entrez un nombre")
nbVal ← nbVal + 1
… {traitement de la valeur saisie}
saisir(val) {relance}
ftq
afficher(val, nbVal) {valeurs en sortie de boucle}
…
Attention :
La valeur d’arrêt n’est jamais traitée (et donc, jamais comptabilisée)
Algorithmique 1 : Instructions de base 52
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
nbVal ← nbVal + 1
… {traitement de la valeur saisie}
saisir(val) {relance}
ftq
si val = STOP
alors {la dernière valeur testée était la valeur d’arrêt}
afficher(« Sortie de boucle car saisie de la valeur d’arrêt;
toutes les données significatives ont été traitées. »)
sinon {il y avait plus de 5 valeurs à tester}
afficher(« Sortie de boucle car nombre maximum de valeurs
à traiter atteint; des données significatives n’ont pas
pu été traitées. ")
fsi
Algorithmique 1 : Instructions de base 54
De l’importance du test de sortie
de boucle (… et donc de la logique)
tant que val ≠ STOP et nbVal < MAX faire
Algorithmique 1 : Logique 57
En quoi la logique est-elle utile au
programmeur ?
Algorithmique 1 : Logique 58
Retour sur les conditions d'itération
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 59
Eléments de logique propositionnelle
• Formule :
- expression logique composée de variables
propositionnelles et de connecteurs logiques
• Variable propositionnelle :
- une proposition considérée comme indécomposable
• Connecteurs logiques:
non, ¬ - conjonction et, ∧
⇒ - disjonction ou, ∨
- négation
- implication
• Exemple : p et q variables propositionnelles
((¬ p ∨ q) ∧ ¬ q) ∨ (p ∨ ¬ q)
Algorithmique 1 : Logique 60
Représentations d'une formule
∨
(p ∧ q) ∨ ((¬p ∧ r) ∨ ¬p ) ∧ ∨
∧ ¬
¬
Par un arbre syntaxique : p q
r p
p
∨∧pq∨∧¬pr¬p
En utilisant la notation préfixée (polonaise) :
p q ∧p ¬ r ∧ p ¬ ∨ ∨
En utilisant la notation postfixée :
Algorithmique 1 : Logique 61
Tables de vérité
Représentation des valeurs de vérité
associées à une expression logique
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 62
Equivalences classiques
• Commutativité
- p∧q q∧p
- p∨q q∨p
équivalent à
équivalent à
• Associativité
- p ∧ (q ∧ r) (p ∧ q) ∧ r
- p ∨ (q ∨ r) (p ∨ q) ∨ r
équivalent à
équivalent à
• Distributivité
- p ∧ (q ∨ r) (p ∧ q) ∨ (p ∧ r)
- p ∨ (q ∧ r) (p ∨ q) ∧ (p ∨ r)
équivalent à
équivalent à
Algorithmique 1 : Logique 63
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 64
Formules :
quelques classes et relations
• Les tautologies :
p ¬p p∨¬p
- vraies pour toute assignation de valeurs de vérité aux
variables.
- exemple : p ∨ ¬ p
p ¬p p∧¬p
- fausses pour toute assignation de valeurs de vérité aux
variables.
- exemple : p ∧ ¬ p
Algorithmique 1 : Logique 65
Formules :
quelques classes et relations (suite)
• Les formules équivalentes:
- même valeur de vérité pour toute assignation de la même
valeur de vérité 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 66
Du bon usage de la logique
Vérification de l'équivalence de deux formules
Algorithmique 1 : Logique 67
Applications à l'algorithmique
• Interpréter (et bien comprendre!) l’arrêt des itérations
à la sortie d’une boucle.
tant que <cond> faire
À la sortie : non(<cond>) est vrai
donc si cond = p et q
à la sortie : non (p et q)
c’est a dire non p ou non q
Algorithmique 1 : Logique 69
Le Type BOOLEEN
ok ← (rep = ‘ O ’ ou rep = ‘ o ’)
variables ok, continuer : booléen
Algorithmique 1 : Logique 70
Le Type BOOLEEN : exemple
(MAX : entier) ← 5
Algorithme Logique
(STOP : entier) ← -1
constantes
nbVal ← 0
début
nbVal ← nbVal + 1
tant que ok faire de boucle booléenne }
encore ← faux
début
encore ← faux
val ← 0 val ← 0
répéter
val ← val + 1
tant que non encore faire
val ← val – 1
afficher( "bonjour " )
Algorithmique 1 : Logique 72
fin Volume 1
Algorithmique 1 73