Documente Academic
Documente Profesional
Documente Cultură
Programmation structure
Algorithme
Principe de base de la programmation structure
Les structures
Traduction en Java
Richard Grin
Programmation structure
page 2
Objectif
Matriser la complexit lors de lcriture de
programmes/algorithmes comportant de
nombreuses instructions
Richard Grin
Programmation structure
Algorithme
page 3
Richard Grin
Algorithme
Programmation structure
Programme et algorithme
Richard Grin
Programmation structure
Richard Grin
Programmation structure
page 6
Richard Grin
Richard Grin
Programmation structure
page 7
PGCD de 18 et de 14 (a = 18 et b = 14)
b 0 ; r = 18 modulo 14 = 4 ; a = 14 ; b = 4
b 0 ; r = 14 modulo 4 = 2 ; a = 4 ; b = 2
b 0 ; r = 4 modulo 2 = 0 ; a = 2 ; b = 0
b = 0 donc on sarrte
2 est le PGCD de 18 et de 14
Programmation structure
page 8
Exemple de pseudo-langage
Richard Grin
Programmation structure
page 9
Entrer a, b
tant que (b 0) rpter {
r := a modulo b
a := b
b := r
}
Afficher a
Richard Grin
Programmation structure
page 10
Preuve de programme/dalgorithme
Richard Grin
Richard Grin
Programmation structure
page 11
Programmation structure
page 12
Calcul de la complexit
Notation O()
Richard Grin
Programmation structure
page 13
Richard Grin
Classes de complexit
Programmation structure
page 14
Exemple
Richard Grin
Programmation structure
page 15
Richard Grin
Programmation structure
page 16
Principe de la
programmation structure
Richard Grin
Programmation structure
page 17
Richard Grin
Programmation structure
page 18
Programmation structure
Principe
Richard Grin
Richard Grin
Programmation structure
page 19
Programmation structure
page 20
Programmation structure
page 21
Richard Grin
Programmation structure
page 22
Exemple de spcification
Richard Grin
Programmation structure
page 23
Richard Grin
Programmation structure
page 24
Structures de la
programmation structure
Chaque module a une des ces 3 structures :
suite de modules
alternative
rptition
Les structures de la
programmation structure
Richard Grin
Programmation structure
page 25
Richard Grin
Suite
Programmation structure
page 27
Richard Grin
page 28
si (x > y) {
max = x;
}
sinon {
max = y;
}
Variante (pour les cas o on ne fait rien si la
condition est fausse) :
si (x > max) {
max = x;
}
Programmation structure
Exemple
Alternative
Richard Grin
page 26
Exemple
Programmation structure
page 29
Richard Grin
Programmation structure
page 30
Rptition jusqu
Exemple
rpter {
x = x + 10;
} jusqu (x < y)
Rpter Traitement
jusqu ce que la condition ( de fin ) soit vraie
Richard Grin
Programmation structure
page 31
Richard Grin
Programmation structure
page 32
Exemple
tant que (x < y) rpter {
x = x + 10;
}
Richard Grin
Programmation structure
page 33
Richard Grin
Diffrence importante
entre jusqu et tant que
Programmation structure
page 34
Exemple
rpter {
x = x + 10;
} jusqu (x >= y)
Programmation structure
page 35
Richard Grin
Programmation structure
page 36
Rptition pour
Exemple
pour i de 1 20 rpter {
s = s + i;
}
Richard Grin
Richard Grin
Programmation structure
page 37
Programmation structure
page 39
Richard Grin
Programmation structure
page 40
Invariant de boucle
Richard Grin
page 38
Richard Grin
Programmation structure
page 41
Programmation structure
page 42
Preuve de la boucle
Invariant de boucle
Entrer a, b
a0 = a; b0 = b
tant que (b 0) rpter {
r := a modulo b
a := b
b := r
}
Afficher a
Richard Grin
Invariant de boucle :
les diviseurs de a0
et de b0 sont les
mmes que ceux de
a et de b.
a0 et b0 ont t
introduits pour
faciliter lexpression
de linvariant de
boucle
Programmation structure
page 43
Programmation structure
page 44
Suite de traitements
Suite dinstructions lmentaires :
int x = 3;
int y = x + 8;
Traduction en Java
Richard Grin
Programmation structure
page 45
Richard Grin
Programmation structure
Alternative
Alternative
if (x >= 0) {
x = x + 1;
}
else {
x = -x + 1;
y++;
}
Variante :
if (x >= 0) {
x = x + 1;
}
Richard Grin
page 46
>= 0)
x + 1;
-x + 1;
>= 0)
x + 1;
Programmation structure
page 47
Richard Grin
Programmation structure
page 48
Alternative
Exemple
Richard Grin
Programmation structure
page 49
x = 3;
y = 8;
if (x == y)
if (x > 10)
x = x + 1;
else
x = x + 2;
Richard Grin
Exemple
x = 3;
y = 8;
if (x == y) {
if (x > 10) {
x = x + 1;
}
}
else {
x = x + 2;
}
Richard Grin
51
Programmation structure
50
Richard Grin
Programmation structure
page 52
x >= 0
(x != 0) && (y / x > 2.3) // raccourci
(x == 0) || (y / x > 2.3) // raccourci
! ((x == 0) || (y / x > 2.3))
Richard Grin
Programmation structure
Exemples
Facile de se tromper
si on ne met pas
daccolades,
surtout si on indente
mal son code !
Expressions boolennes
Programmation structure
page 53
Richard Grin
Programmation structure
page 54
Exemple de switch
switch
switch(expression) {
case val1: instructions;
break;
...
case valn: instructions;
break;
default: instructions;
}
Programmation structure
55
Rptition jusqu
char lettre;
int nbVoyelles = 0, nbA = 0,
nbT = 0, nbAutre = 0;
. . .
switch (lettre) {
case 'a' : nbA++;
case 'e' :
// pas dinstruction !
case 'i' : nbVoyelles++;
break;
case 't' : nbT++;
break;
default : nbAutre++;
}
Richard Grin
Programmation structure
do {
x++;
} while (x < 8)
while (x < 8) {
x++;
}
Richard Grin
Programmation structure
56
page 57
Richard Grin
Programmation structure
page 58
Rptition pour
Rptition pour
En Java :
for (initialisations ; test ; modifications) {
instructions dans la boucle
}
Richard Grin
Programmation structure
page 59
Richard Grin
Programmation structure
page 60
10
Richard Grin
Programmation structure
page 61
Richard Grin
Programmation structure
page 62
Richard Grin
Exercice
page 63
int somme = 0;
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) continue;
if (somme > 4) break;
somme = somme + i;
}
System.out.println(somme);
Quaffiche ce code ?
Richard Grin
Programmation structure
64
11