• Aucun résultat trouvé

[PDF] Support de cours Algorithme les Boucles en PDF | Cours informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Support de cours Algorithme les Boucles en PDF | Cours informatique"

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

(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

(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

(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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 Renvoie EXIT_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 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).

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

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

(23)

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)

(24)

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)

(25)

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)

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

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

(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 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

(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

• 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

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

(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

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 }

(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

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

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

(49)

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

(50)

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.

(51)

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.

(52)

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

Références

Documents relatifs

Habiter les marais estuariens à l’âge du Fer Aquitania, 31, 2015 103 Éléments sous dr oit d’aut eur - © F édér ation A quitania mars 2016. La séquence de l’âge du

Os herbicidas constituem excelente método de controle, porém a falta de conhecimento sobre utilização e eficiência dos vários produtos registrados para as lavouras cafeeiras (Tabela

La recherche a eu pour objectif principal une compréhension approfondie des trajectoires socioprofessionnelles de travailleurs qualifiés durant leur processus d’intégration au

This explains the fact that the macro-cell load is first increasing (see figure 6). At this time instant, SBSs are indeed starting serving users, alleviating some load from the

3.20 Fluctuations de vitesse longitudinale et verticale mesurées par (a) 1’ADV et (b) le PC-ADP pour les mesures de vitesses dii 25 juillet ((1 70cms1) du faisceau 3 tIn PC-ADP à 21

Deux enjeux cruciaux de la recherche en éducation sont pointés par le rapport Prost : d’une part, celui du caractère cumulatif des recherches et, donc, de

Les participants à l’étude étaient 12 étudiants de licence STAPS, représentatifs de différents niveaux de performance en gymnastique (niveau débutant à niveau régional

اعباس : :جاحلا نب ناميلس يديس نم لجر ءايلوأ ظ نيحلاصلا يدلايملا رشع سماخلا نرقلا يف ره ( 3 ) ، عم شاع هيبأ هتايح يف و وه نم ءايلولأا مهل دوهشملا و