2. Objectifs
Connaitre les différents types de structures répétitives en
algorithmique et en C
Apprendre la manipulation les différents structures répétitives
2
ASD I
Dr.Fadoua BOUAFIF
3. Plan
1. Introduction
2. Les types de boucles
a. Les boucles à compteur ou définie
b. Les boucles à évènement ou indéfinie
3. Remarques en C
4. Synthèse
5. Conclusion
3
ASD I
Dr.Fadoua BOUAFIF
4. Introduction
Structures algorithmiques
4
Structure linéaire
Structures
conditionnelle
ou de choix
Structures itérative
La structure itérative (ou répétitive ou selon une condition ou boucle) est une suite d'instructions
exécutée répétitivement
Cette structure est utilisée:
Pour exécuter un ou plusieurs traitement(s) pour un certain nombre de fois jusqu'à ce qu'une
condition est remplit
Pour éviter de réécrire un même traitement plusieurs fois
ASD I
Dr.Fadoua BOUAFIF
5. Les types de Structures
5
On distingue 2 types de boucles:
Les structures à compteur ou définie
Le nombre d’itérations est connu à l’avance et une variable (le compteur ) compte les
répétitions
Exemple : Lire 10 nombres à partir du clavier. Ainsi, l’opération de lecture d’un nombre est
répétée 10 fois.
La structure Pour…Faire (for.. en C)
Les structures à événement ou indéfinie
Le nombre de fois que la boucle sera exécutée est inconnu à l’avance: Il peut dépendre du
nombre de données à traiter où du nombre d’essais que l’usager a effectués.
la structure Tantque ()… Faire (while.. en C )
la structure Répéter … jusqu’à () (Do…while en C )
ASD I
Dr.Fadoua BOUAFIF
6. Structure Pour…faire: définition
Cette structure permet d'exécuter un traitement pour un nombre fini de
répétitions.
La sortie de la boucle d'itérations s'effectue lorsque le nombre souhaité de
répétition est atteint.
Un indice de contrôle d'itérations est utilisé. Il est caractérisé par:
sa valeur initiale,
sa valeur finale,
et son pas d'incrémentation.
6
ASD I
Dr.Fadoua BOUAFIF
7. Structure Pour…faire: En algorithmique
Syntaxe:
L’indice ou compteur est identifié par un identificateur de variable. Il est initialisé à valeur-initiale et
qui s'incrémente (décrémente) jusqu'à atteindre valeur_finale.
Le traitement esrt épété ( |valeur_finale – valeur_initiale |+1) fois.
Le pas d'incrémentation est optionnel. C'est un entier relatif qui explicite le pas d'incrémentation
quand il est positif et de décrémentation quand il est négatif. Par défaut, il est égal à 1.
La condition de répétition du traitement est relative à la valeur d'indice et la valeur finale. Un test de
comparaison est effectué après chaque exécution du traitement et incrémentation de l'indice.
7
ASD I
Dr.Fadoua BOUAFIF
Pour ( indice/compteur ) de valeur_initiale à valeur_finale ( pas ) faire
Traitement
Fin pour
8. Structure Pour…faire: En algorithmique (suite)
8
ASD I
Dr.Fadoua BOUAFIF
Exemple1 :
Pour i de 1 à 5 pas 2 Faire
Ecrire (i*10)
FinPour
Pour i de 1 à 5 Faire
Ecrire (i*10)
FinPour
Exemple2 :
Exemple3 :
Pour i de 5 à 1 pas -1 Faire
Ecrire (i*10)
FinPour
9. Structure Pour…faire: en C
Syntaxe:
for ( initialisation; condition; incré/décrémentation )
{
Traitement;
}
Remarque :
- Tout comme en algorithmique, l'incrémentation dépend du problème: elle peut correspondre à un
pas positif (dans le cas d'une incrémentation) ou un pas négatif (décrémentation)
- Par défaut, le pas est égal à 1.
9
ASD I
Dr.Fadoua BOUAFIF
Exemple1:
for( i=1; i<=5;i++)
{
printf ("%d",i*10);
}
Exemple2:
for( i=5; i>=1;i--)
{
printf ("%d",i*10);
}
Exemple3:
for( i=1; i<=5;i+=2)
{
printf ("%d",i*10);
}
10. Ecrire un algorithme (programme en C ) qui lit un entier positif et affiche sa factorielle (0!=1)
10
Structure Pour…faire: Activité
En algorithmique En C
ASD I
Dr.Fadoua BOUAFIF
11. 11
Structure Pour…faire: Activité (solution)
ASD I
Dr.Fadoua BOUAFIF
Algorihme factorielle_pour
Var: n, fac, i: entier
Debut
ecrire ("donner un entier positif n")
Lire(n)
Fac1
si(n!=0) alors
pour i de 1 à n faire
facfac*i
finpour
finsi
Ecrire("factorielle de ", n, "=", fac)
fin
#include<stdio.h>
int main()
{ int n,i, fac;
printf(“donner un entire positif n”);
scanf(“%d”,&n);
fac=1;
if(n!=0
{
for(i=1;i<=n;i++)
{
fac=fac*i;
}
}
printf(“le factorielle de %d =%d”,n,fac);
}
12. Structure Répéter.... Jusqu'à: définition
Dans cette structure, le traitement est exécuté une première fois puis une
répétition se poursuit jusqu’à ce que la condition soit vérifiée.
⇒ Le traitement est toujours exécuté au moins une fois.
12
ASD I
Dr.Fadoua BOUAFIF
13. Structure Répéter... Jusqu’à: déclaration
13
ASD I
En algorithmique En C
Répéter
Traitement
Jusqu'à ( condition )
do
{
Traitement ;
} while ( condition ) ;
Dr.Fadoua BOUAFIF
Syntaxes
Exemples
i1
Répéter
Ecrire (i*10)
ii+i
Jusqu’à (i>5)
i=1;
do
{
printf(("%d",i*10);
i+=1;
}while (i<=5);
14. Ecrire un algorithme (programme en C ) qui lit un entier positif et affiche sa factorielle (0!=1)
14
Structure Répéter... Jusqu'à: Activité
En algorithmique En C
Solutions:
ASD I
Dr.Fadoua BOUAFIF
15. 15
Structure Répéter... Jusqu'à: activité(solution)
ASD I
Dr.Fadoua BOUAFIF
Algorihme factorielle_repeter
Var: n, fac, i: entier
Debut
repeter
ecrire ("donner un entier positif n")
Lire(n)
jusqu’à (n>=0)
Fac1
i0
repeter
facfac*i
ii+1
jusqu’à (i>n)
Ecrire("la factorielle de ", n, "=", fac)
fin
#include<stdio.h>
int main()
{
int n,i, fac;
do
{ printf(“donner un entier positif ”);
scanf(“%d”,&n);
}while(n<0);
fac=1;
i=1;
do
{
fac=fac*i;
i+=1;
} while(i<=n);
printf(“la factorielle de %d =%d”,n,fac);
}
16. Structure Tant que ... Faire : définition
Dans cette structure, la condition est testée dès le départ:
Si elle est vérifiée, le traitement est exécuté jusqu’à ce que la condition
devienne fausse.
Sinon, les instructions qui suivent la boucle seront exécutées directement.
⇒ Le traitement peut ne jamais être exécutée.
L'exécution du traitement est effectuée 0 ou plusieurs fois puisque le
nombre de répétition n'est pas connu à l'avance.
16
ASD I
Dr.Fadoua BOUAFIF
17. Structure Tant que ... Faire: déclaration
17
ASD I
En algorithmique En C
TantQue ( condition ) faire
Traitement
FinTantQue
While ( condition )
{
Traitement ;
}
Dr.Fadoua BOUAFIF
Syntaxes
Exemples
i1
TantQue (i<=5)faire
Ecrire (i*10)
ii+i
FinTantQue
i=1;
While(i<=5)
{
printf(("%d",i*10);
i+=1;
}
18. Ecrire un algorithme (programme en C ) qui lit un entier positif et affiche sa factorielle (0!=1)
18
Structure Tant que ... Faire : Activité
En algorithmique En C
Solutions:
ASD I
Dr.Fadoua BOUAFIF
19. 19
Structure Tant que ... Faire : activité(solution)
ASD I
Dr.Fadoua BOUAFIF
Algorihme factorielle_TantQue
Var: n, fac, i: entier
Debut
repeter
ecrire ("donner un entier positif n")
Lire(n)
jusqu’à (n>=0)
Fac1
i0
TantQue(i<=n) faire
facfac*i
ii+1
finTantQue
Ecrire("la factorielle de ", n, "=", fac)
fin
#include<stdio.h>
int main()
{
int n,i, fac;
do
{ printf(“donner un entier positif ”);
scanf(“%d”,&n);
}while(n<0);
fac=1;
i=1;
while(i<=n)
{
fac=fac*i;
i+=1;
}
printf(“la factorielle de %d =%d”,n,fac);
}
20. Remarques en C
Instruction de contrôles
Ce sont des instructions qui permettent d'arrêter ou de continuer l'exécution d'une boucle. Il
existe deux instructions:
1. Break : sert à contrôler le déroulement d'une instruction (comme avec l'instruction switch).
Elle permet aussi d'arrêter le déroulement d'une boucle.
2. Continue : permet d'aller directement à la prochaine itération de la boucle sans exécuter le
reste des instructions internes.
Une boucle bien construite n'a pas besoin de l'usage de ces instructions. Il est alors
déconseillé de les utiliser avec les boucles.
20
ASD I
Dr.Fadoua BOUAFIF
21. Synthèse
La condition dans les deux structures Tant que et Répéter est une expression logique.
Le nombre de répétition dans la boucle Pour est connu à l'avance
Le nombre de répétition dans la boucle Tant que ou Répéter peut être inconnu qui
dépend de la condition d'arrêt.
La boucle Pour peut être remplacée par Tant que ou Répéter.
21
Tant que Répéter Pour
- La condition est évaluée
avant le traitement
- Le traitement est exécuté
au moins 0 fois
- La condition est évaluée
après le traitement
- Le traitement est exécuté
au moins 1 fois
- La condition est évaluée
avant le traitement
- Le traitement est exécuté
au moins 0 fois
ASD I
Dr.Fadoua BOUAFIF
22. Conclusion
Dans ce chapitre nous avons:
présenté et manipulé les différents types des structures répétitives :
Structure pour…faire (for en C)
Structure répeter …. jusqu’à (do…while en C )
Structure TantQue… faire (while en C)
ASD I
22
Dr.Fadoua BOUAFIF