4-Chapitre N°4
4-Chapitre N°4
4-Chapitre N°4
CHAPITRE 4
STRUCTURES DE CONTRÔLE ITÉRATIVES
Objectifs
Eléments de contenu
La structure « Tant que ….. Faire »
La structure « Faire ….. tant que »
La structure « Pour ….. Faire »
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 :
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.
En algorithmique
Principe :
Traduction en C
Syntaxe
while ( <expression> )
<bloc d'instructions>
La condition de poursuite est évaluée avant le premier tour de boucle. Il est donc
Application 1 :
Algorithme Saisie_entier_positif
Variables
n : entier
Début
Lire(n)
Lire(n)
Fin
#include <stdio.h>
void main()
{
int n;
printf(“saisir un entier strictement positif”);
scanf(“%i”, &n);
while (n<= 0) {
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
Lire(n)
Lire(n)
i1
Finsi
ii+1
Fin
#include <stdio.h>
void main()
{
int n, i;
printf(“saisir un entier strictement positif”);
scanf(“%i”, &n);
while (n<= 0) {
while (i < n / 2) {
if ( n % i==0 ) {
printf(“%i est un diviseur de %i”, i, n);
}
i++
}
}
En algorithmique
Faire
instruction 1
instruction 2
...
Tant que <expression booléenne>
Principe :
Traduction en C
Syntaxe
do
<bloc d'instructions>
while ( <expression> );
Application 1 :
Algorithme Saisie_entier_positif
Variables
n : entier
Début
Faire
Lire(n)
Fin
#include <stdio.h>
void main()
{
int n;
do {
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).
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
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.
<expr1>;
while ( <expr2> )
{
<bloc d'instructions>
<expr3>;
}
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
Début
Lire (N)
S<- 0
Pour i de 1 à N faire
Lire (moy)
S<- S+moy
Fin pour
Fin
#include <stdio.h>
void main()
{
int n,i;
float moy, MC, S;
MC=moy/n;