4-Chapitre N°4

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 11

Cours algorithmique 1 Chapitre3 : Structures de contrôle répétitives

CHAPITRE 4
STRUCTURES DE CONTRÔLE ITÉRATIVES

Objectifs

 Maîtriser les structures algorithmiques (les boucles) pour exprimer des


actions itératives (répétitives).

Eléments de contenu
 La structure « Tant que ….. Faire »
 La structure « Faire ….. tant que »
 La structure « Pour ….. Faire »

©Equipe pédagogique Algorithmique1- ISET Jendouba -1 -


Cours algorithmique 1 Chapitre3 : Structures de contrôle répétitives

CHAPITRE 4
STRUCTURES DE CONTRÔLE ITÉRATIVES

L'objectif est de prévoir par programme la répétition de certains traitements, sans avoir à les
répéter (recopier) dans l'écriture du programme. Recopier ne serait d'ailleurs pas possible si
l'on souhaite répéter un calcul autant de fois que nécessaire pour que le résultat satisfasse une
propriété donnée.

Tous les langages de programmation offrent divers moyens de répéter les traitements. Pour
l'écriture d'un algorithme (indépendant d'un langage particulier) on utilise les structures
suivantes :

 la structure : tant que....


 la structure : répéter... tant que...
 la structure : pour...

Ces structures sont ensuite illustrées sur plusieurs exemples, comportant ou non des
communications avec l'utilisateur. En effet, les traitements répétitifs sont utilisés à la fois pour
créer des "dialogues répétitifs" et pour programmer des calculs complexes où la répétition
n'est pas explicite pour l'utilisateur.

1- La structure "Tant que… Faire"

En algorithmique

Définition : tant que permet de construire une instruction complexe de la forme :

tant que (expression booléenne) faire


instruction 1
instruction 2
...
fin tant que

©Equipe pédagogique Algorithmique1- ISET Jendouba -2 -


Cours algorithmique 1 Chapitre3 : Structures de contrôle répétitives

Principe :

1. l'expression booléenne est tout d'abord calculée,


2. si le calcul de l'expression booléenne donne vrai, les instructions comprises entre tant
que et fin tant que sont exécutées,
3. puis l'exécution recommence au point 1,
4. la suite, s'il y en a une après fin tant que, est exécutée dès que le calcul de l'expression
booléenne, effectué au point 1, donne faux.

Traduction en C

Syntaxe

while ( <expression> )
<bloc d'instructions>

La partie <expression> peut désigner :

une variable d'un type numérique

une expression fournissant un résultat numérique.


La partie <bloc d'instructions> peut désigner :

un bloc d'instructions compris entre accolades,

une seule instruction terminée par un point-virgule.


Exécution de while :

Tant que l'<expression> fournit une valeur différente de zéro, le <bloc


d'instructions> est exécuté.
Si l'<expression> fournit la valeur zéro, l'exécution continue avec l'instruction qui suit le
bloc d'instructions.
Remarques :

Le <bloc d'instructions> est exécuté zéro ou plusieurs fois.

Pas de point virgule après while (…)

La condition de poursuite est évaluée avant le premier tour de boucle. Il est donc

©Equipe pédagogique Algorithmique1- ISET Jendouba -3 -


Cours algorithmique 1 Chapitre3 : Structures de contrôle répétitives

nécessaire que sa valeur soit définie

Application 1 :

Ecrire un algorithme et sa traduction en C permettant de lire un entier strictement positif et de


l’afficher à l’écran.

Algorithme Saisie_entier_positif

Variables

n : entier

Début

Ecrire ("donner un entier strictement positif")

Lire(n)

Tant que (n < = 0) faire

Ecrire ("donner un entier strictement positif")

Lire(n)

Fin Tant que

Ecrire ("l’entier strictement positif saisi est",n)

Fin

#include <stdio.h>
void main()
{
int n;
printf(“saisir un entier strictement positif”);
scanf(“%i”, &n);

while (n<= 0) {

printf(“saisir un entier strictement positif”);


scanf(“%i”, &n);
}
printf (“ l’entier strictement positif saisi est %i”,n);
}

©Equipe pédagogique Algorithmique1- ISET Jendouba -4 -


Cours algorithmique 1 Chapitre3 : Structures de contrôle répétitives

Application 2 :

Ecrire l’algorithme qui permet d’afficher les diviseurs d’un entier N et sa traduction en C.

Algorithme Diviseurs

Variables

i, n : entiers

Début

Ecrire ("donner un entier strictement positif")

Lire(n)

Tant que (n < = 0) faire

Ecrire ("donner un entier strictement positif")

Lire(n)

Fin Tant que

i1

Tant que (i < n DIV 2) faire

Si ( n MOD i =0) alors

Ecrire (i, "est un diviseur de ", n)

Finsi

ii+1

Fin Tant que

Fin

©Equipe pédagogique Algorithmique1- ISET Jendouba -5 -


Cours algorithmique 1 Chapitre3 : Structures de contrôle répétitives

#include <stdio.h>
void main()
{
int n, i;
printf(“saisir un entier strictement positif”);
scanf(“%i”, &n);
while (n<= 0) {

printf(“saisir un entier strictement positif”);


scanf(“%i”, &n);
}

while (i < n / 2) {

if ( n % i==0 ) {
printf(“%i est un diviseur de %i”, i, n);
}
i++
}
}

2- La structure : " Faire…Tant que"

En algorithmique

Définition : la structure répéter...tantque permet de construire une instruction complexe de


la forme :

Faire
instruction 1
instruction 2
...
Tant que <expression booléenne>
Principe :

1. les instructions comprises entre Faire et Tant que sont exécutées


2. l'expression booléenne est alors calculée,

©Equipe pédagogique Algorithmique1- ISET Jendouba -6 -


Cours algorithmique 1 Chapitre3 : Structures de contrôle répétitives

3. si le calcul de l'expression booléenne donne vrai, l'exécution recommence au point 1;


si le calcul de l'expression booléenne donne faux, l'exécution continue avec la suite,
s'il y en a une après tant que.

Traduction en C

Syntaxe

do
<bloc d'instructions>
while ( <expression> );

La structure do - while est semblable à la structure while, avec la différence suivante :


while évalue la condition avant d'exécuter le bloc d'instructions,
do - while évalue la condition après avoir exécuté le bloc d'instructions. Ainsi le
bloc d'instructions est exécuté au moins une fois.
Remarque
 do {…..} while (condition) Répète le bloc { } tant que la condition est vraie
 On ne sait pas a priori combien de fois une telle boucle sera répétée
 Toutefois, elle est toujours parcourue au moins une fois

Application 1 :

Ecrire un algorithme et sa traduction en C permettant de lire un entier strictement positif et de


l’afficher à l’écran.

Algorithme Saisie_entier_positif

Variables

n : entier

Début

Faire

Ecrire ("donner un entier strictement positif")

Lire(n)

Tant que (n < = 0)

©Equipe pédagogique Algorithmique1- ISET Jendouba -7 -


Cours algorithmique 1 Chapitre3 : Structures de contrôle répétitives

Ecrire ("l’entier strictement positif saisi est",n)

Fin

#include <stdio.h>
void main()
{
int n;

do {

printf(“saisir un entier strictement positif”);


scanf(“%i”, &n);

} while (n<= 0);


printf (“ l’entier strictement positif saisi est %i”,n);
}

3- La structure : " Pour…faire"

En algorithmique

A la différence des deux structures précédentes, la structure « Pour » est destinée au cas
particulier où l'on connaît par avance le nombre de fois où l'on veut répéter certains
traitements..

La structure « Pour » permet de répéter n fois un traitement ; elle permet de plus de faire
évoluer une variable (appelée "compteur"), en lui affectant pour chacune des exécutions une
nouvelle valeur (augmentée de 1 à chaque fois).

Définition : la structure « Pour » permet de construire une instruction complexe de la


forme :

Pour <compteur> de <valeurdebut> à <valeurfin> [pas= x] faire


instruction 1
instruction 2
...
fin pour

©Equipe pédagogique Algorithmique1- ISET Jendouba -8 -


Cours algorithmique 1 Chapitre3 : Structures de contrôle répétitives

Principe :

1. les instructions comprises entre « pour et fin pour » sont exécutées une
première fois, avec la variable compteur valant valeurdebut
2. ces instructions sont ré -exécutées, avec la variable compteur valant valeur debut+1
3. les instructions sont exécutées une dernière fois, avec la variable compteur valant
valeurfin
4. les instructions suivant la structure « Pour » sont exécutées ensuite.

Les instructions sont exécutées autant de fois qu'il y a d'entiers entre valeurdebut et valeurfin :
c'est-à-dire en particulier 1 fois si valeurdebut=valeurfin, 0 fois si valeurdebut>valeurfin.

Traduction en C

Syntaxe

for ( [<expr1>] ; [<expr2>] ; [<expr3>] )


<bloc d'instructions>

Avec :
 <expr1> Elle est utilisée pour initialiser les données de la boucle. Elle est évaluée
une seule fois avant d’entrer dans la boucle
 <expr2> est évaluée avant chaque passage de la boucle. Elle est utilisée pour décider
si la boucle est répétée ou non.
 <expr3> est évaluée à la fin de chaque passage de la boucle. Elle est utilisée pour
réinitialiser les données de la boucle.

En pratique, les parties <expr1> et <expr2> contiennent souvent plusieurs initialisations ou


réinitialisations, séparées par des virgules.
Cette syntaxe est équivalente à la syntaxe suivante de while

<expr1>;
while ( <expr2> )
{
<bloc d'instructions>
<expr3>;
}

©Equipe pédagogique Algorithmique1- ISET Jendouba -9 -


Cours algorithmique 1 Chapitre3 : Structures de contrôle répétitives

Application

Ecrire l’algorithme et sa traduction en C qui permet de saisir les moyennes des N étudiants et
de calculer la moyenne générale de la classe.

Algorithme Moyenne

Variables

i, N: entiers

moy, MC, S : réels

Début

Ecrire ("Donner le nombre d’étudiants")

Lire (N)

S<- 0

Pour i de 1 à N faire

Ecrire (" Donner la moyenne de l’étudiant", i)

Lire (moy)

S<- S+moy

Fin pour

Ecrire (" la moyenne de la classe est :", MC)

Fin

©Equipe pédagogique Algorithmique1- ISET Jendouba -10 -


Cours algorithmique 1 Chapitre3 : Structures de contrôle répétitives

#include <stdio.h>
void main()
{
int n,i;
float moy, MC, S;

printf(“saisir le nombre des étudiants”);


scanf(“%i”, &n);

for (S=0, i=1 ; i<=n ; i++)


{
printf(“Donner la moyenne de l’etudiant %i”,i);
scanf(“%i”, &moy);
S=S+moy;
}

MC=moy/n;

printf("la moyenne de la classe est :%i\n", MC);

©Equipe pédagogique Algorithmique1- ISET Jendouba -11 -

Vous aimerez peut-être aussi