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
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
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
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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 while et 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 while et 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 while et 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
Les conditions employées dans les structures de contrôle (if, for ou while) sont desexpressions booléennes, pouvant être Vrai, Faux ou :
• 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)
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Expressions booléennes
Les conditions employées dans les structures de contrôle (if, for ou while) sont desexpressions booléennes, pouvant être Vrai, Faux ou :
• 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)
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Expressions booléennes
Les conditions employées dans les structures de contrôle (if, for ou while) sont desexpressions booléennes, pouvant être Vrai, Faux ou :
• 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)
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 true et false) pour les expressions booléennes.
• En langage C, les expressions booléennes sont de type entier (int), l’entier zéro joue le rôle du Faux, l’entier un joue 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 true et false) pour les expressions booléennes.
• En langage C, les expressions booléennes sont de type entier (int), l’entier zéro joue le rôle du Faux, l’entier un joue 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 true et false) pour les expressions booléennes.
• En langage C, les expressions booléennes sont de type entier (int), l’entier zéro joue le rôle du Faux, l’entier un joue 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
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
7. Attente active
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
• boucle for(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 : une ligne mais aussi une surface, un volume...
• imbriquer les boucles (var. 6=)
6. Boucle événementielle
• bouclewhile 7. Attente active
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 divise n, s’il n’en trouve pas de plus petit que n, alors n 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
scanf est unappel 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
scanf est unappel 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 */
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Premier partiel
• Au premier partiel, il est probable que vous ayez :
• à compléter un programme fourni et question de cours • simuler l’exécution (faire une trace) d’un programme fourni et
question de compréhension
• Deux exercices avec des boucles (for ou while)
• Un autre sur if et constantes symboliques (arbre de décision)
• Au second partiel(au moins la moitié de votre note d’UE) :
• mêmes types d’exercices avec différents types de données (int, char, double, struct) et des fonctions
• le programme à modifier et la trace sont avec fonctions • un exercice porte spécialement sur les structures
• exercice supplémentaire : déclarer/définir des fonctions avec 1
2pt par déclaration juste et 1
2pt par définition juste.
• Gérez votre temps, apprenez à lire un sujet et ne rien oublier.
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Premier partiel
• Au premier partiel, il est probable que vous ayez :
• à compléter un programme fourni et question de cours • simuler l’exécution (faire une trace) d’un programme fourni et
question de compréhension
• Deux exercices avec des boucles (for ou while)
• Un autre sur if et constantes symboliques (arbre de décision)
• Au second partiel(au moins la moitié de votre note d’UE) :
• mêmes types d’exercices avec différents types de données (int, char, double, struct) et des fonctions
• le programme à modifier et la trace sont avec fonctions • un exercice porte spécialement sur les structures
• exercice supplémentaire : déclarer/définir des fonctions avec 1
2pt par déclaration juste et 1
2pt par définition juste.
• Gérez votre temps, apprenez à lire un sujet et ne rien oublier.
Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel
Premier partiel
• Au premier partiel, il est probable que vous ayez :
• à compléter un programme fourni et question de cours • simuler l’exécution (faire une trace) d’un programme fourni et
question de compréhension
• Deux exercices avec des boucles (for ou while)
• Un autre sur if et constantes symboliques (arbre de décision)
• Au second partiel(au moins la moitié de votre note d’UE) :
• mêmes types d’exercices avec différents types de données (int, char, double, struct) et des fonctions