Académique Documents
Professionnel Documents
Culture Documents
Coursalgo V1 PDF
Coursalgo V1 PDF
Algorithmique : Volume 1
Introduction
Instructions de base
Logique propositionnelle
Algorithmique 1 : Introduction 2
Thmes abords en Algo
Algorithmique 1 : Introduction 3
L'algorithmique, vous la pratiquez tous les
jours et depuis longtemps...
Cafetire Expresso
instructions
Algorithmique 1 : Introduction 4
De l'importance de l'algorithme
Informations Rsultats
parses mis en forme
Machine
Donnes Obtention
structures de rsultats
Traitement
Algorithmique 1 : Instructions de 8
base
Un premier algorithme
Algorithme ElveAuCarr
{Cet algorithme calcule le carr du nombre que lui fournit l'utilisateur}
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.
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
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 12
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)
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 14
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}
Affichage :
Algorithmique 1 : Instructions de base 15
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 16
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 ! "
afficher(mot)
afficher(" valA = ", valA)
afficher(" valB = ", valB)
afficher(" compteur =", compteur )
afficher(tom)
Affichage :
Affichage :
Algorithmique 1 : Instructions de base 19
Ce quil fallait faire
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
si <expression logique>
alors instructions
[sinon instructions]
fsi
si note 12
alors afficher( "Reu 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]
Donnes : 3 3 -1 10
Tableau de simulation :
Affichage :
Fonction:
rpter une suite dinstructions un certain nombre de fois
traitement
type entier ou
rel,
le mme pour valeur dont varie la variable de boucle
ces 4 entre deux passages dans la boucle,
informations 1 par dfaut (peut tre ngatif)
Donnes : 3 -3 10 -1
Tableau de simulation :
STOP = 1
Affichage :
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 34
Smantique de la boucle tant que
amorage: initialisation
de la variable de condition
condition d'excution
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)
excuter
relance: si la condition
r-affectation est vrifie
affichage de la variable
rsultats 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 traites}
ftq
Algorithmique 1 : Instructions de base 36
Comparaison boucles pour et tant que
(suite)
Donnes : -2 0 4
Tableau de simulation :
Affichage :
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 41
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 42
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 43
Choisir pour... tant que rpter
ou
Nombre
Boucle rpter
i
ditrations
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
quon ne saisit pas 0 afficher(val val)
saisir(val)
ftq
saisir(val)
saisir des donnes
et s'arrter ds que somme val
leur somme tant que somme 500 faire
dpasse 500 saisir(val)
somme somme + val
ftq
Algorithmique 1 : Instructions de base 47
De l'nonc la boucle (suite)
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
Attention :
La valeur darrt nest jamais traite (et donc, jamais comptabilise)
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
Algorithmique 1 : Logique 57
En quoi la logique est-elle utile au
programmeur ?
Algorithmique 1 : Logique 58
Retour sur les conditions d'itration
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
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 60
Reprsentations d'une formule
(p q) ((p r) p )
p q
Par un arbre syntaxique :
r
p p
En utilisant la notation prfixe (polonaise) :
pqprp
Algorithmique 1 : Logique 61
Tables de vrit
Reprsentation des valeurs de vrit
associes 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
- pq quivalent qp
- pq quivalent qp
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
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 :
- vraies pour toute assignation de valeurs de vrit aux
variables. p p pp
- exemple : p p
Algorithmique 1 : Logique 65
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 pq p q pq
Algorithmique 1 : Logique 66
Du bon usage de la logique
Vrification de l'quivalence de deux formules
p q pq p( pq) pq
Algorithmique 1 : Logique 67
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
Algorithmique 1 : Logique 69
Le Type BOOLEEN
Algorithmique 1 : Logique 70
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 71
Boolens : encore des exemples
Algorithmique 1 : Logique 72
fin Volume 1
Algorithmique 1 73