Vous êtes sur la page 1sur 23

République Tunisienne Université de Carthage

Ministère de l’Enseignement Supérieur et Ecole Nationale d’Ingénieurs de Bizerte


de la Recherche Scientifique

Algorithmique et Programmation

GI1, GM1 et GC1


(Semestre 1)

Safa Hachani & Islam ELLEUCH

Safa.hachani@enib.ucar.tn / elleuchislam@gmail.com

2023-2024
CHAPITRE 2

De l’algorithmique à
la programmation
en Langage C
Les structures de contrôle
Les structures de contrôle

➢ On appelle structure de contrôle, toute instruction qui permet de contrôler le

fonctionnement d’un programme.

➢ Parmi les instructions de contrôle, on distingue:

▪ Les structures conditionnelles

▪ Les structures itératives

4
Les structures conditionnelles
Les structures conditionnelles « if... else »

En algorithmigue En langage C

Si < Condition> Alors if (Condition)


Syntaxe
<Liste d'instructions> {

FinSi <Liste d'instructions>

Remarques :

➢ Si on a une seule opération dans le bloc d’instruction, on peut ne pas mettre les

accolades { }

➢ Les parenthèses sont obligatoires pour la condition

6
Les structures conditionnelles « if... else »

Structure conditionnelle simple : Une seule condition, si elle est vrai


le bloc instruction est exécuté.
if (age >=20)
printf ("Vous avez le droit de voter”) ;
Structure conditionnelle multiple :
➢ Forme alternative : si la condition est vraie on exécute la première
instruction sinon on passe au deuxième bloc.
if (annee %4 ==0)
printf ("Année bissextile ") ;
else
printf ("Année a 365 jours") ;
➢ Forme imbriquée: on peut choisir entre deux ou plusieurs traitements
possibles selon la condition.
if (salaire <= 5000)
impot = 0.01;
else if (salaire >5000 && salaire<=15000)
impot = 0.03;
else
impot = 0.05;
7
Application : Structures conditionnelles

Exercice :

Ecrire en C le programme qui permet de résoudre dans R l’équation


a X +b = 0, tels que a et b deux réels saisis au clavier.

Programme equation.c
#include <stdio.h>
void main() {
float a, b ;
printf ("Donner la valeur de a :") ;
scanf ("%f", &a) ;
printf ("Donner la valeur de b :") ;
scanf ("%f", &b);
if (a !=0)
printf ("La solution est : %f", (-b/a)) ;
}

8
Structures de choix « Switch »

Cette forme est utilisée lorsque l'on a plusieurs conditions qui expriment une égalité stricte (pas de

notion d’intervalles). Dans ce cas, on a recours à une structure qui traite les conditions une par une.

En algorithmigue En langage C
Selon <sélecteur> faire switch (sélecteur)
<val1>: liste 1 d'instructions {
<val2>: liste 2 d'instructions case<val1>:<instructions1> ; break;
Syntaxe <val3>: liste 3 d'instructions case<val2>:<instructions2> ; break;
… case<val3>:<instructions3> ; break;
Sinon …
Autre liste d'instructions default : <autres instructions> ;
FinSelon }

En langage C, le mot clé break est très important après chaque cas. Si on l’oublie, après
l’exécution des instructions du cas sélectionné, les instructions de tous les cas suivants sont
aussi exécutées ! Ceci semble être une défaillance mais au contraire, elle peut être utilisée à
profit (voir l'exemple suivant).

9
Structures de choix « Switch »

Selon (mois) faire switch (mois)


1: Ecrire (“Janvier”) {
2: Ecrire ("Février") case 1: printf ("Janvier") ; break;
Exemple … case 2: printf("Février") ; break;
12: Ecrire ("Décembre") …
Sinon case 12: printf("Décembre") ; break;
Ecrire ("numéro de default : printf("numéro de mois
mois erroné…") erroné…");
FinSelon }

➢ L’instruction Break permet d’interrompre le déroulement de la boucle et passe à la

première instruction qui suit de la boucle.

➢ L’instruction Default permet de traiter le cas qui n’est pas présent dans les

compartiment case.

10
Application sur l'instruction « break »
main ()
{
int i;
for (i=0; i<5; i++)
{
printf (“i=%d\n",i) ;
if (i==3)
break;
}
printf (“valeur de i à la sortie de la boucle=%d\n",i);
}
i=0
Imprime
i=1
i=2
à l’écran
i=3
Valeur de i à la sortir de la boucle=3
11
L'instruction « continue »

Contrairement à l’instruction break, l’instruction « continue » permet de passer

directement au tour de boucle suivant, sans exécuter les autres instructions de la boucle.

12
Application sur l'instruction « continue »
main ()
{
int i;
for (i=0; i<5; i++)
{
if (i==3)
continue;
printf (“i=%d\n",i) ;
}
printf (“valeur de i à la sortie de la boucle=%d\n",i);
}
i=0
Imprime
i=1
i=2
à l’écran
i=4
Valeur de i à la sortir de la boucle=5
13
Application : Structure de choix

Exercice :

Ecrire le programme C permettant de saisir le numéro de mois et d’afficher le


nombre de jours correspondant.

/**En langage C */
#include <stdio.h>
void main()
{
int mois ;
printf ("Entrer le mois en chiffre :") ;
scanf ("%i", &mois) ;
switch (mois) {
case 1, case 3, case 5, case 7, case 8, case 10, case 12:
printf("31 jours") ; break ;
case 2 : printf ("28 ou 29 jours") ; break ;
case 4, case 6, case 9, case 11 : printf{"30 jours") : break;
default : printf ("le numéro du mois est erroné") ;
}
}

14
Les structures itératives
Les structures itératives

➢ Les structures itératives (ou les boucles) permettent de répéter une série
d’instructions.

➢ Il existe deux familles de boucles en langage C:


▪ for (hombre d’itérations connu à l’avance)
▪ while et do ... while (nombre d’itérations non connu à l’avance).

16
Boucle « while» (Tant que .. Faire)

Syntaxe
Tant que (condition d’itération) faire
<Liste d’instructions>
En algorithmique FinTQ

while (condition d’itération)


En langage C {
<Liste d’instructions>
}

Remarque :

➢ Tant que l’expression vérifiée (Vrai), l’instruction est exécutée.

➢ Si expression n’est pas vérifiée au départ, l’instruction ne sera jamais exécutée

17
Boucle « do … while» (Répéter....tant que)

Attention: c’est différent de répéter... jusqu’à (n’existe pas en C) car la


condition d’arrêt est inversée.

Syntaxe
Répéter
<Liste d’instructions>
En algorithmique Jusqu’à (condition d’itération)

do
En langage C {
<Liste d’instructions>
}
while (condition d’itération);
Remarques :

➢ Dans ce cas, l’instruction sera exécutée tant que l’expression est vérifiée (Vrai),

➢ L’instruction est exécutée au moins une fois.

18
Boucle « for »

Pour < compteur> de <Valeur_Init> à <Valeur_Fin> [pas =p] Faire


En algorithmique
Liste d’instructions
FinPour

for (compteur=Valeur_Init ; compteur<=Valeur_Fin; compteur++)


{
En langage C
Liste d’instructions
}

Exemple :
En algorithmique En langage C
Pour i de 1 à 5 faire for (i=1 ; i<=5; i++)
Ecrire(i*10) printf("%d " , i*10);
FinPour

Cette boucle affiche respectivement les nombres 10, 20, 30, 40 et 50.

19
À RETENIR

➢ Si on connaît à l’avance le nombre de fois


Boucle for
que le traitement sera répété

➢ Si on ne connaît pas à l’avance le nombre


de fois que le traitement sera répété:

➢ Si le traitement doit être exécuté


Boucle do … while
au moins une fois

➢ Si le traitement peut ne pas être


Boucle while
exécuté du tout

20
Application : Les structures répétitives

Exercice :

Ecrire le programme C qui permet de lire un entier n puis calcule et affiche sa


factorielle.

Programme Facto.c
#include <stdio.h>
void main ()
{
int n, i, f;
printf ("Entrer un entier positif: ") ;
scanf ("%d", &n) ;
boucle for
f=1;
for (i=2 ; i<=n ; i++)
f*=i;
printf ("%d ! = %d" , n, f) ;
}

21
Application : Les structures répétitives

Exercice :

Ecrire un programme C qui permet de lire un entier n puis calcule et affiche sa


factorielle.

Programme Facto.c
#include <stdio.h>
void main ()
{
int n, i, f;
do {
printf ("Entrer un entier positif: ") ;
scanf ("%d", &n) ; boucle while
} while (n<0);
i=2;
f=1;
while(i<=n)
{
f*=i;
i++;
}
printf ("%d ! = %d" , n, f) ;
}
22
Application : Les structures répétitives

Exercice :

Ecrire un programme C qui permet de lire un entier n puis calcule et affiche sa


factorielle en utilisant la boucle do ... while.

Programme Facto.c
#include <stdio.h>
void main ()
{
int n, i, f;
do {
printf ("Entrer un entier positif: ") ;
scanf ("%d", &n) ; boucle do .. while
} while (n<0);
i=1;
f=1;
do{
f*=i;
i++;
} while(i<=n)
printf ("%d ! = %d \n" , n, f) ;
}

23

Vous aimerez peut-être aussi