Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Éléments d’informatique – Cours 6. Boucle while, expressions booléennes. Algorithmes
élémentaires.
Pierre Boudes
18 octobre 2011
This work is licensed under theCreative Commons Attribution-NonCommercial-ShareAlike 3.0 License.
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
semestre
L’instruction de contrôle while Syntaxe
Trace
For ou while ? Expressions booléennes
Syntaxe Constantes
Algorithmique élémentaire
Recherche d’un diviseur (test de primalité)
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Ce semestre
• Éléments d’architecture des ordinateurs (+mini-assembleur)
• Éléments de systèmes d’exploitation
• Programmation structurée impérative (éléments de langage C)
• Structure d’un programme C
• Variables : déclaration (et initialisation), affectaction
• Évaluation d’expressions,expressions booléennes
• Instructions de contrôle : if, for,while
• Types de données :entiers,caractères, réels,tableaux,struct
• Fonctions d’entrées/sorties (scanf/printf)
• Écriture et appel de fonctions
• Débogage
• Notions de compilation
• Analyse lexicale, analyse syntaxique, analyse sémantique ; préprocesseur du C (include, define) ; Édition de lien
• Algorithmes élémentaires
• Méthodologie de résolution, manipulation sous linux
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
L’instruction de contrôle while
Syntaxe :
while (condition) {bloc}.
Code source
/* avant */ while ( ... ) {
... }
/* après */
Schéma de traduction avant
saut bloc
évalue la condition saute si elle est vraie après
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
L’instruction de contrôle while
Syntaxe :
while (condition) {bloc}.
Code source
/* avant */
while ( ... ) {
...
}
/* après */
Schéma de traduction avant
saut bloc
évalue la condition saute si elle est vraie après
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
L’instruction de contrôle while
Syntaxe :
while (condition) {bloc}.
Code source
/* avant */
while ( ... ) {
...
Schéma de traduction avant
saut bloc
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
13 nb = nb + 1; /* c o m p t e r un c h i f f r e de p l u s */
14 }
15 p r i n t f( " ce ␣ n o m b r e ␣ a ␣ % d ␣ c h i f f r e s ␣ d e c i m a u x \ n " , nb);
16
17 /* V a l e u r f o n c t i o n */
18 r e t u r n E X I T _ S U C C E S S; 19 }
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
L’utilisateur saisit 6071.
ligne x nb sortie écran
initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
13 nb = nb + 1; /* c o m p t e r un c h i f f r e de p l u s */
14 }
15 p r i n t f( " ce ␣ n o m b r e ␣ a ␣ % d ␣ c h i f f r e s ␣ d e c i m a u x \ n " , nb);
16
17 /* V a l e u r f o n c t i o n */
18 r e t u r n E X I T _ S U C C E S S; 19 }
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
13 nb = nb + 1; /* c o m p t e r un c h i f f r e de p l u s */
14 }
15 p r i n t f( " ce ␣ n o m b r e ␣ a ␣ % d ␣ c h i f f r e s ␣ d e c i m a u x \ n " , nb);
16
17 /* V a l e u r f o n c t i o n */
18 r e t u r n E X I T _ S U C C E S S; 19 }
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071
12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
13 nb = nb + 1; /* c o m p t e r un c h i f f r e de p l u s */
14 }
15 p r i n t f( " ce ␣ n o m b r e ␣ a ␣ % d ␣ c h i f f r e s ␣ d e c i m a u x \ n " , nb);
16
17 /* V a l e u r f o n c t i o n */
18 r e t u r n E X I T _ S U C C E S S; 19 }
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
13 nb = nb + 1; /* c o m p t e r un c h i f f r e de p l u s */
14 }
15 p r i n t f( " ce ␣ n o m b r e ␣ a ␣ % d ␣ c h i f f r e s ␣ d e c i m a u x \ n " , nb);
16
17 /* V a l e u r f o n c t i o n */
18 r e t u r n E X I T _ S U C C E S S; 19 }
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
13 nb = nb + 1; /* c o m p t e r un c h i f f r e de p l u s */
14 }
15 p r i n t f( " ce ␣ n o m b r e ␣ a ␣ % d ␣ c h i f f r e s ␣ d e c i m a u x \ n " , nb);
16
17 /* V a l e u r f o n c t i o n */
18 r e t u r n E X I T _ S U C C E S S; 19 }
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Trace
1 int m a i n() 2 {
3 /* D e c l a r a t i o n et i n i t i a l i s a t i o n des v a r i a b l e s */
4 int x;
5 int nb = 1; /* n o m b r e de c h i f f r e s */
6
7 p r i n t f( " E n t r e r ␣ un ␣ n o m b r e ␣ p o s i t i f ␣ " );
8 s c a n f( " % d " , &x);
9
10 w h i l e (x > 9) /* t a n t que x a p l u s d ’ un c h i f f r e */
11 {
12 x = x / 10; /* e n l e v e r un c h i f f r e a x */
13 nb = nb + 1; /* c o m p t e r un c h i f f r e de p l u s */
14 }
15 p r i n t f( " ce ␣ n o m b r e ␣ a ␣ % d ␣ c h i f f r e s ␣ d e c i m a u x \ n " , nb);
16
17 /* V a l e u r f o n c t i o n */
18 r e t u r n E X I T _ S U C C E S S; 19 }
L’utilisateur saisit 6071.
ligne x nb sortie écran initialis. ? 1
7 Entrer...
8 6071 12 607
13 2
12 60
13 3
12 6
13 4
15 ce nombre a 4...
18 RenvoieEXIT_SUCCESS
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
For ou while ?
• Un for peut toujours être simulé par un whileet le code machine sera identique. Il suffit d’introduire un compteur de boucle(la variable de boucle du for).
• Par convention, les programmeurs préfèrent utiliser un for lorsque le nombre d’itérations est connu à l’avance. Par exemple, pour faire la somme des éléments d’un tableau. Dans le cas contraire, les programmeurs utilisent un while. Par exemple, pour chercher un élément dans un tableau.
• Maintenant que nous avons le while, il est possible qu’un programme ne termine jamais (Ctrl-C).
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
For ou while ?
• Un for peut toujours être simulé par un whileet le code machine sera identique. Il suffit d’introduire un compteur de boucle(la variable de boucle du for).
• Par convention, les programmeurs préfèrent utiliser un for lorsque le nombre d’itérations est connu à l’avance. Par exemple, pour faire la somme des éléments d’un tableau. Dans le cas contraire, les programmeurs utilisent un while. Par exemple, pour chercher un élément dans un tableau.
• Maintenant que nous avons le while, il est possible qu’un programme ne termine jamais (Ctrl-C).
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
For ou while ?
• Un for peut toujours être simulé par un whileet le code machine sera identique. Il suffit d’introduire un compteur de boucle(la variable de boucle du for).
• Par convention, les programmeurs préfèrent utiliser un for lorsque le nombre d’itérations est connu à l’avance. Par exemple, pour faire la somme des éléments d’un tableau. Dans le cas contraire, les programmeurs utilisent un while. Par exemple, pour chercher un élément dans un tableau.
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Expressions booléennes
Lesconditions employées dans les structures de contrôle (if,for ouwhile) sont desexpressions booléennes, pouvant être Vrai, Fauxou :
• des inégalités entre expressions arithmétiques inégalité:=e1<e2|e1>e2 |e1 !=e2
|e1 <=e2 |e1 >=e2|e1==e2
• ou des combinaisons logiques d’expressions booléennes : condition:= (condition)&&(condition) (et)
|(condition)||(condition) (ou)
|!(condition) (non)
|Vrai|Faux|inégalité (cas de base)
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Expressions booléennes
Lesconditions employées dans les structures de contrôle (if,for ouwhile) sont desexpressions booléennes, pouvant être Vrai, Fauxou :
• des inégalités entre expressions arithmétiques inégalité:=e1<e2|e1>e2 |e1 !=e2
|e1 <=e2 |e1 >=e2|e1==e2
• ou des combinaisons logiques d’expressions booléennes : condition:= (condition)&&(condition) (et)
|(condition)||(condition) (ou)
|!(condition) (non)
|Vrai|Faux|inégalité (cas de base)
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Expressions booléennes
Lesconditions employées dans les structures de contrôle (if,for ouwhile) sont desexpressions booléennes, pouvant être Vrai, Fauxou :
• des inégalités entre expressions arithmétiques inégalité:=e1<e2|e1>e2 |e1 !=e2
|e1 <=e2 |e1 >=e2|e1==e2
• ou des combinaisons logiques d’expressions booléennes : condition:= (condition)&&(condition) (et)
|(condition)||(condition) (ou)
|!(condition) (non)
|Vrai|Faux|inégalité (cas de base)
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Constantes booléennes
• Certains langages possédent un type booléen (admettant deux valeurs trueet false) pour les expressions booléennes.
• En langage C, les expressions booléennes sont de type entier (int), l’entierzérojoue le rôle du Faux, l’entier unjoue le rôle du Vrai et tout entier différent de zéro est évalué a vrai.
• On se donne deux constantes symboliques :
/* D e c l a r a t i o n des c o n s t a n t e s et t y p e s u t i l i s a t e u r */
# d e f i n e T R U E 1
# d e f i n e F A L S E 0
int m a i n() {
int c o n t i n u e r = T R U E; /* faut - il c o n t i n u e r ? */
w h i l e (c o n t i n u e r) {
...
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Constantes booléennes
• Certains langages possédent un type booléen (admettant deux valeurs trueet false) pour les expressions booléennes.
• En langage C, les expressions booléennes sont de type entier (int), l’entierzérojoue le rôle du Faux, l’entier unjoue le rôle du Vrai et tout entier différent de zéro est évalué a vrai.
• On se donne deux constantes symboliques :
/* D e c l a r a t i o n des c o n s t a n t e s et t y p e s u t i l i s a t e u r */
# d e f i n e T R U E 1
# d e f i n e F A L S E 0
int m a i n() {
int c o n t i n u e r = T R U E; /* faut - il c o n t i n u e r ? */
w h i l e (c o n t i n u e r) {
...
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Constantes booléennes
• Certains langages possédent un type booléen (admettant deux valeurs trueet false) pour les expressions booléennes.
• En langage C, les expressions booléennes sont de type entier (int), l’entierzérojoue le rôle du Faux, l’entier unjoue le rôle du Vrai et tout entier différent de zéro est évalué a vrai.
• On se donne deux constantes symboliques :
/* D e c l a r a t i o n des c o n s t a n t e s et t y p e s u t i l i s a t e u r */
# d e f i n e T R U E 1
# d e f i n e F A L S E 0
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
• boucles (parcourir/générer)
• accumulateur(à initialiser) 3’. Dénombrer des cas
• boucles (parcourir/générer)
• compteur(à initialiser à 0)
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser)
2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
• boucles (parcourir/générer)
• accumulateur(à initialiser) 3’. Dénombrer des cas
• boucles (parcourir/générer)
• compteur(à initialiser à 0)
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
• boucles (parcourir/générer)
• accumulateur(à initialiser) 3’. Dénombrer des cas
• boucles (parcourir/générer)
• compteur(à initialiser à 0)
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux
3. Composer des cas
• boucles (parcourir/générer)
• accumulateur(à initialiser) 3’. Dénombrer des cas
• boucles (parcourir/générer)
• compteur(à initialiser à 0)
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
• boucles (parcourir/générer)
• accumulateur(à initialiser) 3’. Dénombrer des cas
• boucles (parcourir/générer)
• compteur(à initialiser à 0)
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
3’. Dénombrer des cas
• boucles (parcourir/générer)
• compteur(à initialiser à 0)
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
• boucles (parcourir/générer)
• accumulateur(à initialiser) 3’. Dénombrer des cas
• boucles (parcourir/générer)
• compteur(à initialiser à 0)
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
• boucles (parcourir/générer)
• accumulateur(à initialiser) 3’. Dénombrer des cas
• boucles (parcourir/générer)
• compteur(à initialiser à 0)
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter)
5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
• boucles (parcourir/générer)
• accumulateur(à initialiser) 3’. Dénombrer des cas
• boucles (parcourir/générer)
• compteur(à initialiser à 0)
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
• boucles (parcourir/générer)
• accumulateur(à initialiser) 3’. Dénombrer des cas
• boucles (parcourir/générer)
• compteur(à initialiser à 0)
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=)
7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
• if else(différencier)
• #defineconstantes symboliques (nommer)
• arbre de décision (organiser) 2. Parcourir/générer des cas
• bouclefor(rarement while)
• tableaux 3. Composer des cas
• boucles (parcourir/générer)
• accumulateur(à initialiser) 3’. Dénombrer des cas
• boucles (parcourir/générer)
• compteur(à initialiser à 0)
4. Sélectionner des cas
• boucles (parcourir/générer)
• if(sélectionner/traiter) 5. Rechercher un cas
• bouclewhile, conditions booléennes,if
2’. Parcourir/générer : uneligne mais aussi unesurface, un volume...
• imbriquer les boucles (var.6=) 6. Boucle événementielle
• bouclewhile 7. Attente active
• bouclewhile
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Recherche d’un diviseur (test de primalité)
Exemple
Le programme cherche un entier supérieur à 1 qui divisen, s’il n’en trouve pas de plus petit quen, alorsn est premier (ou bien n=1).
31 /* t e s t de p r i m a l i t e */
32 d = 2;
33 w h i l e ( p r e m i e r && (d < n) ) /* s a n s d i v i s e u r < d */
34 {
35 if (n % d == 0) /* d d i v i s e n */
36 {
37 p r i n t f( " d i v i s i b l e ␣ par ␣ % d \ n " , d);
38 p r e m i e r = F A L S E;
39 }
40 d = d + 1; /* c a n d i d a t d i v i s e u r s u i v a n t */
41 }
42
43 if (p r e m i e r)
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Boucle principale en programmation événementielle
Le programme lit les événements (les actions de l’utilisateur) et les traite, continuellement, dans une boucle.
Remarque
scanfest un appel système bloquant (processus en attente).
Exemple
Jeu de calcul mental (additionner deux nombres au hasard)
16 int c o n t i n u e r = T R U E; /* T R U E s ’ il f a u t c o n t i n u e r a j o u e r */
31 w h i l e(c o n t i n u e r) /* le j o u e u r v e u t f a i r e un n o u v e l e s s a i */
32 {
53 p r i n t f( " C o n t i n u e r ␣ (1) ␣ ou ␣ a r r e t e r ␣ (0) ␣ ?\ n " );
54 s c a n f( " % d " , &c h o i x);
55 if (c h o i x == 0)
56 {
57 c o n t i n u e r = F A L S E;
58 }
59 }
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Boucle principale en programmation événementielle
Le programme lit les événements (les actions de l’utilisateur) et les traite, continuellement, dans une boucle.
Remarque
scanfest un appel système bloquant (processus en attente).
Exemple
Jeu de calcul mental (additionner deux nombres au hasard)
16 int c o n t i n u e r = T R U E; /* T R U E s ’ il f a u t c o n t i n u e r a j o u e r */
22 /* i n i t i a l i s a t i o n du g e n e r a t e u r de n o m b r e s pseudo - a l e a t o i r e s */
23 s r a n d(t i m e(N U L L)); /* a ne f a i r e qu ’ une f o i s */
31 w h i l e(c o n t i n u e r) /* le j o u e u r v e u t f a i r e un n o u v e l e s s a i */
32 {
34 /* t i r a g e de x */
35 x = r a n d() % N B M A X + 1; /* e n t r e 1 et N B M A X i n c l u s */
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Boucle d’attente active
La boucle sert à attendre qu’une condition externe devienne vraie, le programme teste continuellement cette condition.
Exemple
Tic tac boum, est-ce que 10 secondes sont écoulées ?
19 p r i n t f( " Auto - d e s t r u c t i o n ␣ en ␣ cours , ␣ ctrl - C ␣ p o u r ␣ d e s a m o r c e r ␣ !\ n " ); 20 d e b u t = t i m e(N U L L); /* d a t e de d e b u t ( s e c o n d e s d e p u i s 1 / 1 / 1 9 7 0 ) */ 21 w h i l e(d u r e e < 10) /* pas e n c o r e 10 s e c o n d e s */
22 {
23 d u r e e = t i m e(N U L L) - d e b u t; /* d u r e e d e p u i s d e b u t ( s e c o n d e s ) */ 42 } /* fin des 10 s e c o n d e s */
43 p r i n t f( " ** ␣ B O U M ␣ ! ␣ **\ n " );
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Boucle d’attente active
La boucle sert à attendre qu’une condition externe devienne vraie, le programme teste continuellement cette condition.
Exemple
Tic tac boum, est-ce que 10 secondes sont écoulées ?
19 p r i n t f( " Auto - d e s t r u c t i o n ␣ en ␣ cours , ␣ ctrl - C ␣ p o u r ␣ d e s a m o r c e r ␣ !\ n " );
20 d e b u t = t i m e(N U L L); /* d a t e de d e b u t ( s e c o n d e s d e p u i s 1 / 1 / 1 9 7 0 ) */
21 w h i l e(d u r e e < 10) /* pas e n c o r e 10 s e c o n d e s */
22 {
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel