Coursalgorithmique Volume 1
Coursalgorithmique Volume 1
Coursalgorithmique Volume 1
Algorithmique : Volume 1
• Introduction
• Instructions de base
• Logique propositionnelle
Algorithmique 1 : Introduction 2
www.mathonec.com
Thèmes abordés en «Algo»
Algorithmique 1 : Introduction 3
www.mathonec.com
L'algorithmique, vous la pratiquez tous les
jours et depuis longtemps...
Cafetière Expresso
instructions
Algorithmique 1 : Introduction 4
www.mathonec.com
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
www.mathonec.com
Un premier algorithme
Algorithme ElèveAuCarré
{Cet algorithme calcule le carré du nombre que lui fournit l'utilisateur}
• 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
www.mathonec.com
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 :
constantes (MAX : entier) ← 100
(DOUBLEMAX : entier) ← MAX × 2
Algorithmique 1 : Instructions de base 14
www.mathonec.com
Saisies et affichages : exemples
Algorithme ParExemple
{Saisit un prix HT et affiche le prix TTC correspondant}
constantes (TVA : réel) ← 20.6
(Titre : chaîne) ← "Résultat"
variables prixHT, prixTTC : réels {déclarations}
Affichage :
Algorithmique 1 : Instructions de base 15
www.mathonec.com
Affecter une valeur à une variable
<identificateur> ← <expression> ou
<constante> ou <identificateur>
• Fonction :
Instruction permettant d’attribuer à la variable identifiée
par l'élément placé à gauche du symbole ← la valeur
de l'élément placé à droite de ce symbole.
• Exemple:
nom ← "Venus"
val ← 50
val ← val × 2
Algorithmique 1 : Instructions de base 16
www.mathonec.com
Affectation : exemples
constante (SEUIL : réel) ← 13.25
variables valA, valB : réels
compteur : entier
mot , tom : chaînes
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 ! "
afficher(mot)
afficher(" valA = ", valA)
afficher(" valB = ", valB)
afficher(" compteur =", compteur )
afficher(tom)
Affichage :
Affichage :
Algorithmique 1 : Instructions de base 19
www.mathonec.com
Ce qu’il fallait faire …
Algorithme SimpleOuDouble
{Cet algorithme saisit une valeur entière et affiche son double si cette
donnée est inférieure à un seuil donné.)
constante (SEUIL : entier) ← 10
variable val : entier
début
afficher("Donnez-moi un entier : ") { saisie de la valeur entière}
saisir(val)
si val < SEUIL { comparaison avec le seuil}
alors afficher ("Voici son double :" , val × 2)
sinon afficher ("Voici la valeur inchangée :" , val)
fsi
fin
si <expression logique>
alors instructions
[sinon instructions]
fsi
si note ≥ 12
alors afficher( "Reçu avec mention" )
sinon si note ≥ 10
alors afficher( "Passable" )
sinon afficher( "Insuffisant" )
fsi
fsi
selon <identificateur>
(liste de) valeur(s) : instructions
(liste de) valeur(s) : instructions
…
[autres : instructions]
• 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)
• 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
www.mathonec.com
Sémantique de la boucle tant que
amorçage: initialisation
de la variable de condition
condition d'exécution
du traitement
saisir(val)
tant que val ≠ STOP faire
totalValeurs ← totalValeurs + val
afficher("Donnez une autre valeur, " , STOP, " pour finir. " )
saisir(val)
ftq traitement
afficher("La somme des valeurs saisies est " , totalValeurs)
à exécuter
relance: si la condition
ré-affectation est vérifiée
affichage de la variable
résultats de condition
...équivaut à :
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 traitées}
ftq
Algorithmique 1 : Instructions de base 36
www.mathonec.com
Comparaison boucles pour et tant que
(suite)
• 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
www.mathonec.com
Comparaison boucles
répéter et tant que
répéter
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 42
www.mathonec.com
Comparaison boucles
répéter et tant que (suite)
• boucle tant que
- condition vérifiée avant chaque exécution du traitement
- le traitement peut donc ne pas être exécuté
- de plus : la condition porte surtout sur la saisie de nouvelles
variables (relance)
• boucle répéter tant que
- condition vérifiée après chaque exécution du traitement
- le traitement est exécuté au moins une fois
- de plus : la condition porte surtout sur le résultat du
traitement
Remarque : la boucle répéter est typique pour les saisies avec vérification.
Algorithmique 1 : Instructions de base 43
www.mathonec.com
Choisir pour... tant que… répéter…
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)
saisir(val)
afficher le carré des
valeurs saisies tant tant que val ≠ 0 faire
qu’on ne saisit pas 0 afficher(val × val)
saisir(val)
ftq
saisir(val)
saisir des données
et s'arrêter dès que somme ← val
leur somme tant que somme ≤ 500 faire
dépasse 500 saisir(val)
somme ← somme + val
ftq
Algorithmique 1 : Instructions de base 47
www.mathonec.com
De l'énoncé à la boucle (suite)
Algorithme Somme
{Cet algorithme fait la somme d’une suite de nombres tant que cette somme
ne dépasse un seuil donné)
constante (SEUIL : entier) ← 1000
variables val, somme : entiers
début
somme ← 0
répéter
afficher( "Entrez un nombre")
saisir(val)
somme ← somme + val
tant que somme ≤ SEUIL
afficher( "La somme atteinte est" , somme - val)
fin
Attention :
La valeur d’arrêt n’est jamais traitée (et donc, jamais comptabilisée)
Algorithmique 1 : Instructions de base 52
www.mathonec.com
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 : Logique 57
www.mathonec.com
En quoi la logique est-elle utile au
programmeur ?
Algorithmique 1 : Logique 58
www.mathonec.com
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
www.mathonec.com
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:
- négation non, ¬ - conjonction et, ∧
- implication ⇒ - disjonction ou, ∨
• Exemple : p et q variables propositionnelles
((¬ p ∨ q) ∧ ¬ q) ∨ (p ∨ ¬ q)
Algorithmique 1 : Logique 60
www.mathonec.com
Représentations d'une formule
∨
(p ∧ q) ∨ ((¬p ∧ r) ∨ ¬p ) ∧ ∨
p q ∧ ¬
Par un arbre syntaxique :
¬ r
p p
En utilisant la notation préfixée (polonaise) :
∨∧pq∨∧¬pr¬p
Algorithmique 1 : Logique 61
www.mathonec.com
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
www.mathonec.com
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 63
www.mathonec.com
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
www.mathonec.com
Formules :
quelques classes et relations
• Les tautologies :
- vraies pour toute assignation de valeurs de vérité aux
variables. p ¬p p∨¬p
- exemple : p ∨ ¬ p
Algorithmique 1 : Logique 65
www.mathonec.com
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
www.mathonec.com
Du bon usage de la logique
Vérification de l'équivalence de deux formules
Algorithmique 1 : Logique 67
www.mathonec.com
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
www.mathonec.com
Le Type BOOLEEN
Algorithmique 1 : Logique 70
www.mathonec.com
Le Type BOOLEEN : exemple
Algorithme Logique
constantes (MAX : entier) ← 5
(STOP : entier) ← -1
variables nbVal, val : entiers
ok : booléen
début
nbVal ← 0
saisir (val)
ok ← val ≠ STOP et nbVal < MAX {initialisation de la variable
tant que ok faire de boucle booléenne }
nbVal ← nbVal + 1
saisir(val)
ok ← val ≠ STOP et nbVal < MAX {relance}
ftq
si val = STOP alors ...
Algorithmique 1 : Logique 71
www.mathonec.com
Booléens : encore des exemples
Algorithmique 1 : Logique 72
www.mathonec.com
fin Volume 1
Algorithmique 1 73
www.mathonec.com