Chapitre 4
Les structures répétitives
responsable: Dr.Fadoua BOUAFIF
1
ASD I
Dr.Fadoua BOUAFIF
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
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
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
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
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
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
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
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);
}
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
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)
Fac1
si(n!=0) alors
pour i de 1 à n faire
facfac*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);
}
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
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
i1
Répéter
Ecrire (i*10)
ii+i
Jusqu’à (i>5)
i=1;
do
{
printf(("%d",i*10);
i+=1;
}while (i<=5);
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
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)
Fac1
i0
repeter
facfac*i
ii+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);
}
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
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
i1
TantQue (i<=5)faire
Ecrire (i*10)
ii+i
FinTantQue
i=1;
While(i<=5)
{
printf(("%d",i*10);
i+=1;
}
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
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)
Fac1
i0
TantQue(i<=n) faire
facfac*i
ii+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);
}
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
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
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

Ch4- les structures répétitives.pdf

  • 1.
    Chapitre 4 Les structuresrépétitives responsable: Dr.Fadoua BOUAFIF 1 ASD I Dr.Fadoua BOUAFIF
  • 2.
    Objectifs  Connaitre lesdiffé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. Lestypes 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 oude 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 deStructures 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: Enalgorithmique 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: Enalgorithmique (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: enC 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) Fac1 si(n!=0) alors pour i de 1 à n faire facfac*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 i1 Répéter Ecrire (i*10) ii+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) Fac1 i0 repeter facfac*i ii+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 i1 TantQue (i<=5)faire Ecrire (i*10) ii+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) Fac1 i0 TantQue(i<=n) faire facfac*i ii+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 Instructionde 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 conditiondans 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 chapitrenous 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