• Aucun résultat trouvé

Boucle while, expressions booléennes (Algorithmes élémentaires) – Cours et formation gratuit

N/A
N/A
Protected

Academic year: 2022

Partager "Boucle while, expressions booléennes (Algorithmes élémentaires) – Cours et formation gratuit"

Copied!
52
0
0

Texte intégral

(1)

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.

(2)

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é)

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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).

(21)

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).

(22)

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.

(23)

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)

(24)

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)

(25)

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)

(26)

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) {

...

(27)

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) {

...

(28)

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

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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

(38)

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

(39)

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

(40)

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

(41)

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

(42)

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

(43)

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

(44)

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)

(45)

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 }

(46)

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 */

(47)

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 " );

(48)

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 {

(49)

Plan Plan du cours while Expressions booléennes Algorithmique élémentaire Démos Premier partiel

Démos

Références

Documents relatifs

end=etiq (read uniquement) permet de se positionner ` a l’´ etiquette etiq en cas de fin de fichier atteint pr´ ematur´ ement. eor=etiq (read uniquement) permet de se positionner `

– procédure empiler ( résultat Tpile * pile, valeur réel val) – procédure dépiler ( résultat Tpile * pile, résultat réel val) – fonction pilevide ( valeur Tpile *pile)

contrˆ ole sur la pr´ eparation des exercices de TD dur´ ee 10’ (en d´ ebut d’une s´ eance de TD). → note de contrˆ ole continu de laboratoire

La figure 3.3 montre les triangulations de Delaunay duales des diagrammes de Vo- rono¨ı de la figure 3.1 : dans le premier cas (2 points), la triangulation n’est constitu´ee que

On peut montrer que l’algorithme de Bellman-Ford (Algorithme 1) s’arrˆ ete apr` es au plus n − 1 executions de la boucle Tant que, dans le cas d’un graphe sans circuit de poids

Le plus souvent, cela signifie qu’un objet dont la classe reste immuable, peut, dans certaines conditions, ˆetre rang´e dans une variable dont le type est une autre classe.. Un

Même si cela signifie que vous devez explicitement boucler sur les lignes de votre (ou de vos) fichier(s) d’entrée, cela veut aussi dire que vous avez bien plus de contrôle sur

Dans la suite, nous utiliserons pour toutes les structures de contrôle la forme avec les ac- colades mais il existe la forme sans accolades (et donc avec une seule instruction) que