Sie sind auf Seite 1von 36

2 – Les structures itératives

On distingue 3 schémas itératives:

a)POUR (for)

b)TANTQUE (while)

c) REPETER (do … while)


a) Le schéma Pour

Syntaxe

POUR Vble de Vi à Vf PAS = valeur FAIRE


<Actions>
FINPOUR

Vi: Valeur initiale

Vf: Valeur finale

PAS: entier relatif (par défaut le pas=1)


Exemple

i : entier

POUR i de 1 à 10 PAS = 1 FAIRE

Ecrire ("Bonjour")

FINPOUR

--------------------------------------------------
Bonjour sera affichée combien de fois?
Exemple

i : entier

POUR i de 1 à 10 PAS = 3 FAIRE

Ecrire ("Bonjour")

FINPOUR

--------------------------------------------------
Bonjour sera affichée combien de fois?
Exemple

i : entier

POUR i de 1 à 10 PAS = 7 FAIRE

Ecrire ("Bonjour")

FINPOUR

--------------------------------------------------
Bonjour sera affichée combien de fois?
Exemple

i : entier

POUR i de 1 à 8 FAIRE

Ecrire ("Bonjour")

FINPOUR

--------------------------------------------------
Bonjour sera affichée combien de fois?
Exemple

i : entier

POUR i de 5 à 0 PAS = -1 FAIRE

Ecrire ("Bonjour")

FINPOUR

--------------------------------------------------
Bonjour sera affichée combien de fois?
En langage C

for(i=ValeurDepart ; i<=ValeurArrivee ; i++)


{
instruction 1 ;
instruction 2 ;
...
}

i++; i=i+1; i+=3;


La boucle for
Compteur
Condition d’arrêt
Initialisation Incrémentation
for (i = ValeurDepart ; i<=ValeurArrivee ; i++)
{
…;
Bloc d’instructions
…; à répéter
…;
}

10
• Exemple: afficher le message « bonjour » 10 fois
Bonjour
Bonjour
Bonjour
for(i=0 ; i<10 ; i++ ) Bonjour
Bonjour
printf("Bonjour\n") ; Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
11
• Exemple: Calculer la somme des nombres de 1 à 100

S=0;
for(i=1 ; i<=100 ; i++)
{S+=i ;}
printf("La somme est %d", S ) ;
printf("Au revoir") ;

12
• L’incrémentation du compteur n’est pas
nécessairement de 1

Les
for(i=6 ; i<=100 ; i+=6) multiples de
6 inférieurs
printf("%d", i);
ou égale à
100

13
• Exemple: Utilisation du type caractère pour les
compteurs et affichages des lettres de l’alphabet

a
char y ; b
for(y='a' ; y<=‘z' ; y++) c
printf("%c\n", y); ˸
˸
z

14
Attention: Boucle infinie

int i,k=10;
...
for(i=1 ; i<=k ; i++)
{
k++;
...
}
b) Le schéma Tantque

Syntaxe

Initialiser <condition>

Tantque <condition> FAIRE

<Actions>
Modifier <condition>

FinTantque

Tant que la condition est vérifié alors on exécute les


actions
Exemple

i : entier i : entier
i 1
Tantque (i <=10) FAIRE POUR i de 1 à 10 PAS = 1 FAIRE

Ecrire ("Bonjour") Ecrire ("Bonjour")


ii+1

Fintantque FINPOUR
En langage C

while (expression)
{

suite d'instructions;

}

Si la boucle ne comporte qu’une instruction, les accolades sont superflues.


La structure while

Tant que l'expression fournit une valeur différente de zéro (vrai),


le bloc d'instructions est exécuté.

Si l'expression fournit la valeur zéro (faux), l'exécution continue


avec l'instruction qui suit le bloc d'instructions.

Pour que le traitement itératif se termine, l’une des instructions


doit contribuer à rendre la condition (expression) fausse
(sa valeur devient zéro).

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

19
Exemple
Calculer la moyenne de plusieurs étudiants.
#include <stdio.h>
void main()
{
float Note1, Note2, Moyenne;
char Continuer = ‘O‘;
while (Continuer == 'O')
{
printf ("Donner la note 1: "); scanf ("%f", &Note1);
printf ("Donner la note 2: "); scanf ("%f", &Note2);
Moyenne = (Note1 * 0.8) + (Note2 * 0.2);
printf (“Moyenne de l’étudiant: %f", Moyenne);
printf ("Voulez-vous calculer la moyenne d’un autre étudiant (O/N)");
scanf ("%c", &Continuer);
}
}
20
Boucle de contrôle

#include <stdio.h>
void main ()
{
float note;
while ( (note > 20) || (note < 0) )
{
printf (“Donner votre note : “);
scanf (“%f”, &note);
}
}

On ne veut accepter que les notes comprise entre 0 et 20

21
Equivalence for - while
for (initialisation; condition; compteur)
{
Bloc d’instructions;
}

--------------------------------------------------
initialisation;
while (condition)
{
Bloc d’instructions;
compteur;
}
Exemple
Affichage du mot “Bonjour” 5 fois.

#include<stdio.h> #include<stdio.h>
void main() void main()
{ {
int i = 0; int i;
while (i < 5) for (i=0 ; i < 5; i++)
{ printf(“Bonjour \n”);
printf(“Bonjour \n”); }
i++;
}
}

23
Boucle infinie …

int i = 1;
while (i == 1)
printf (“Que pensez vous de ma boucle ?”);

---------------------------------------------------------
for ( ; ;)
printf (“Et là, que pensez vous de ma boucle ?”);

----------------------------------------------------------

for ( ; 8 ;)
printf (“Et celle-ci ?”);

24
c) Le schéma Répéter … Jusqu’à

Syntaxe

Initialiser <condition>

Répéter

<Actions>

Jusqu’à <condition>

Si la condition est vraie alors on quitte la boucle


Exemple En langage C

i1 i = 1;

Répéter do

Ecrire ("Bonjour") printf ("Bonjour");


ii+1 i ++;

Jusqu’à (i = 5) while (i < 5);

Test d’arrêt Test de continuité


while ou do..while ?

int i;
printf(“Combien il vous reste de séances de cours aujourd’hui?” );
scanf(“%d”, &i);
do
{ printf(“Il reste %d séances ”, i );
i--;
}
while (i > 0);

int i;
printf(“Combien il vous reste de séances de cours aujourd’hui?” );
scanf(“%d”, &i);
while (i > 0)
{ printf(“Il reste %d séances ”, i );
i--;
}
27
while ou do..while

char c;
do
{
printf(“Entrer un caractère (s pour stop)” );
scanf(“%c”, &c);
}
while (c !=‘s’);

printf(“Entrer un caractère (s pour stop)” );


scanf(“%c”, &c);
while (c !=‘s’)
{
printf(“Entrer un caractère (s pour stop)” );
scanf(“%c”, &c);
}
28
while ou do..while (3)
int n, i=0;
printf(“Donner un entier: “); scanf(“%d”, &n);
while ( (n%2) != 0 )
{ printf(“L’entier impair est %d: “, n);
printf(“Donner un entier: “); scanf(“%d”, &n);
i++;
}
printf(“Le nombre d’entiers impairs saisis est %d”, i);
while

do
{ printf(“Donner un entier: “); scanf(“%d”, &n);
printf(“L’entier impair est %d: “, n);i++;
}
while ( (n%2) != 0);
printf(“Le nombre d’entiers impairs saisis est %d”, i);

29
Ecrire un algorithme et le traduire en langage C,
qui permet d’afficher la table de multiplication
par 9.

Ensuite afficher les 10 tables de multiplication

Utiliser les trois schémas itératifs,


#include <stdio.h>
Algorithme T9 void main ()
Var {
i: entier int i;
Début printf (" Bonjour voici la table de 9") ;
Ecrire (" Bonjour voici la table de 9") for (i=1 ; i<=10 ; i++)
POUR i DE 1 A 10 FAIRE printf ("9 x %d = %d", i,9*i);
Ecrire ("9 x" ,i, "=", 9*i) printf ("Au revoir");
FINPOUR }
Ecrire ("Au revoir")
Fin
#include <stdio.h>
void main ()
Algorithme T9 {
Var int i;
i: entier printf (" Bonjour voici la table de 9") ;
Début i=1;
Ecrire (" Bonjour voici la table de 9") while ( i<=10)
i1 {printf ("9 x %d = %d", i,9*i);
TANTQUE (i<=10) FAIRE i++;}
Ecrire ("9 x" ,i, "=", 9*i) printf ("Au revoir");
i  i+1 }
FINTQUE
Ecrire ("Au revoir")
Fin
#include <stdio.h>
Algorithme T9
void main ()
Var
{
i: entier
int i;
Début
printf (" Bonjour voici la table de 9") ;
Ecrire (" Bonjour voici la table de 9")
i=1;
i1
do
REPETER
{printf ("9 x %d = %d", i,9*i);
Ecrire ("9 x" ,i, "=", 9*i)
i++;}
i  i+1
while ( i<=10) ;
JUSQU’À (i >10)
printf ("Au revoir");
Ecrire ("Au revoir")
}
Fin
Algorithme T9 #include <stdio.h>
Var void main ()
i, j: entier {
Début int i,j;
Ecrire (" Bonjour voici les 10 tables ") printf (" Bonjour voici les 10 tables") ;
POUR i DE 1 A 10 FAIRE for (i=1 ; i<=10 ; i++)
POUR j DE 1 A 10 FAIRE {for (j=1 ; j<=10 ; j++)
Ecrire (i ,"x" ,j, "=", i*j) printf (« %d x %d = %d\n", i,j,i*j);}
FINPOUR printf ("Au revoir");
FINPOUR }
Ecrire ("Au revoir")
Fin
#include <stdio.h>
Algorithme T9
void main ()
Var
{
i,j: entier
int i,j;
Début
printf (" Bonjour voici les 10 tables") ;
Ecrire (" Bonjour voici les tables")
i=1;
i1
while ( i<=10)
TANTQUE (i<=10) FAIRE
{ j=1;
j 1
while (j<=10)
TANTQUE (j<=10) FAIRE
{printf ("%d x %d = %d", i,j,i*j);
Ecrire ( i ,"x" ,j, "=", i*j)
j++;}
j  j+1
i++;}
FINTQUE
printf ("Au revoir");
i i+1
}
FINTQUE
Ecrire ("Au revoir")
Fin
#include <stdio.h>
Algorithme T9
void main ()
Var
{
i,j: entier
int i,j;
Début
printf (" Bonjour voici les 10 tables") ;
Ecrire (" Bonjour voici les 10 tables")
i=1;
i1
do
REPETER
j=1;
j 1
do
REPETER
{printf ("%d x %d = %d", i,j,i*j);
Ecrire (i, "x" ,j, "=", i*j)
j++;}
j  j+1
while ( j<=10) ;
JUSQU’À (j>10)
i++;
i i+1
while (i<=10);
JUSQU’À (i >10)
printf ("Au revoir");
Ecrire ("Au revoir")
}
Fin

Das könnte Ihnen auch gefallen