2 0 21- 2 0 22 | F a s c i c u l e d e T P : A t e l i e r Programmation
TP 3 : Les structures répétitivesDurée : 3h
Objectif
Le but de ce TP est d'apprendre à utiliser les différentes structures conditionnelles dans un
programmeC
Manipulation 3.1 : La structure répétitive WHILE
Il s'agit de l'instruction:
Tant que (expression vraie) Faire
< BLOC D'INSTRUCTIONS >
FinTantQue
oui non
condition
vraie
bloc
d’instructions
1
S.REFAI & N.DAGHFOUS
2 0 21- 2 0 22 | F a s c i c u l e d e T P : A t e l i e r Programmation
Syntaxe 3.1.1 Exemple 3.1.1
While (<expression>) /*Afficher 10 fois ”
<bloc d’instructions> Bonjour ” */
int cpt = 0;
while (cpt < 10)
{
printf (”
▪ <expression> peut désigner : Bonjour\n”);
cpt ++;
∙ une variable numérique. }
∙ une expression fournissant un
Autre possibilité :
résultat numérique.
/* Afficher 10 fois ”
▪ <bloc d’instructions> : Bonjour ” */
int cpt = 1;
∙ Une suite d’instructions comprise while (cpt <= 10)
{
entre {}. printf (”
∙ Une seule instruction. Bonjour\n”);
cpt ++;
▪ Tant que l ’<expression> donne une valeur }
différente de 0 le <bloc
d’instructions> est exécuté.
▪ Si l ’<expression> donne 0, l’exécution continue
avec l’instruction qui suit le
bloc.
▪ Le <bloc d’instructions> est exécuté 0 ou n fois.
Exercice 3.1.1
Ecrire un programme C qui permet de saisir un entier positif (en utilisant
« while »)
Exercice 3.1.2
Ecrire un programme C qui permet de répéter l’affichage de la question «
Voulez vous Continuez ? » jusqu’à ce que la réponse soit la lettre o ou O
pour oui et la lettre n ou N pour non, il s’arrêtera. ( en utilisant « while »)
Manipulation 3.2 : La structure répétitive do WHILE
Il s'agit de l'instruction:
Repeter
< BLOC D'INSTRUCTIONS >
TantQue (expression vraie)
2
S.REFAI & N.DAGHFOUS
2 0 21- 2 0 22 | F a s c i c u l e d e T P : A t e l i e r Programmation
oui condition vraie non
bloc d'
instructions
suite du programme
Syntaxe 3.2.1 Exemple 3.2.1
do #include <stdio.h>
<bloc d’instructions> #include <conio.h>
#include <math.h>
While (<expression>); /* Calcul de la racine
carrée */
int main ( )
{
float Nbre ;
▪ Le <bloc d ’instructions> est exécuté au moins une do
fois et aussi longtemps que l ’<expression> {
printf (”Entrez un
fournit une valeur différente de 0. entier positif : ”);
scanf (”%d”, &Nbre);
▪ La structure do while est comme la structure while } while (Nbre < 0);
printf (”La racine
avec la différence: carrée de %.2f est
%.2f\n ”,Nbre, sqrt(Nbre));
∙ while
évalue la condition avant
getch();
d’exécuter le bloc d’instructions. }
∙ do while évalue la condition après
avoir exécuté le bloc d’instructions.
▪ En pratique, la structure do - while n'est pas si
fréquente que while; mais dans certains cas, elle
fournit une solution plus élégante.
Exercice 3.2.1
Ecrire un programme C qui permet de saisir un entier positif. (en utilisant « do
…while »)
3
S.REFAI & N.DAGHFOUS
2 0 21- 2 0 22 | F a s c i c u l e d e T P : A t e l i e r Programmation
Exercice 3.2.2
Ecrire un programme C qui permet de répéter l’affichage de la question «
Voulez vous Continuez ? » jusqu’à ce que la réponse soit la lettre o ou O pour
oui et la lettre n ou N pour nom, il s’arrêtera. (en utilisant « do …while »)
Manipulation 3.3 : La structure répétitive for
Il s'agit de l'instruction:
Pour i =1 à n Faire
< BLOC D'INSTRUCTIONS >
FinPour
initialisation
condition de
continuité vraie
non
oui
bloc d'instructions
modification suite du programme
Syntaxe 3.3.1 Exemple 3.3.1
for (<expr1>,<expr2>;<expr3>) int n ,total=0;
<bloc d’instructions> for (n=1 ;n<11;n++)
▪ L’instruction for est équivalent à : total+=n;
<expr1>); printf(“la somme des nombres de 1 a 10 est %d\
While (<expr2>) n”,total):
{
<bloc d’instructions>
<expr3>);
4
S.REFAI & N.DAGHFOUS
2 0 21- 2 0 22 | F a s c i c u l e d e T P : A t e l i e r Programmation
}
▪ <expr1> est évaluée une fois avant le passage de la
boucle (pour initialiser les données de la boucle). ▪
<expr2> est évaluée avant chaque passage de la
boucle (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 (pour réinitialiser les données de la
boucle)
REMARQUE :
▪ <expr1> et <expr3> peuvent contenir plusieurs
initialisations ou réinitialisations séparées par des
virgules.
▪ Les 3 expressions <expr1>, <expr2> et <expr3> ne
portent pas forcément sur la même variable. ▪ Les 3
expressions peuvent être omises, mais pas les ‘;’.
Exercice 3.3.1
Ecrire un programme C qui permet de calculer le factoriel d’un entier n saisi au
clavier.
Exercice 3.3.2
Ecrire un programme C qui permet d’afficher les nombre pairs compris entre 0
et 100
Manipulation 3.4 : Choix de la structure répétitive
Choisir la structure qui reflète le mieux l’idée du programme :
▪ Si le bloc d’instructions ne doit pas être exécuté si la condition est fausse, alors utilisez while ou
for.
▪ Si le bloc d’instructions doit être exécuté au moins une fois, alors utilisez do while
▪ Si le nombre d’exécutions du bloc d’instructions dépend d’une ou plusieurs variables qui sont
modifiées à la fin de chaque répétition, alors utilisez for.
▪ Si le bloc d’instructions doit être exécuté aussi longtemps qu’une condition extérieure est vraie,
alors utilisez while.
5
S.REFAI & N.DAGHFOUS
2 0 21- 2 0 22 | F a s c i c u l e d e T P : A t e l i e r Programmation
Exercice 3.4.1
Ecrire un programme C qui permet d’afficher les nombres premiers inferieurs à 100.
Exercice 3.4.2
1- Afficher le triangle isocèle suivant formé de plusieurs lignes en utilisant les
instructions de contrôle. Exemple d’exécution:
Donner le nombre de lignes : 6
*
***
*****
*******
*********
***********
2. Modifier le programme pour qu’il affiche ce triangle dans le sens inverse :
***********
*********
*******
*****
***
*
Exercice 3.4.3
Écrire un programme C qui permet de déterminer si un entier naturel donné par l'utilisateur
est un nombre parfait. On rappelle qu'un nombre est parfait s'il est égal à la somme de ses
diviseurs stricts (sauf lui-même). Ainsi par exemple, l'entier 6 est parfait car 6 = 1 + 2 + 3.
Exercice 3.4.5
Écrire un programme C qui lit deux entiers a et b puis calcule et afficha leur PGCD( Plus
grand Commun Diviseur) en utilisant la méthode suivante :
-si a= b ; PGCD(a,b) = a
-si a > b ; PGCD(a,b) = PGCD(a-b,b)
-si b > a ; PGCD(a,b) = PGCD(a,b-a)
Exemple :
PGCD(18,45)=PGCD(18,27)=PGCD(18,9)=PGCD(9,9)=9
6
S.REFAI & N.DAGHFOUS
2 0 21- 2 0 22 | F a s c i c u l e d e T P : A t e l i e r Programmation
7
S.REFAI & N.DAGHFOUS