Cours C (Séance 2)

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 21

Les structures de contrôle

Les structures de contrôle 55

Introduction

▪ Les structures de contrôles permettent de réaliser des tests, et suivant le résultat de ces tests, d’exécuter des parties de code différentes.

▪ Il existe trois catégories de structures de contrôle :

1) Les instructions conditionnelles.

2) Les instructions inconditionnelles.

3) Les instructions répétitives.

1
Les structures de contrôle 56

1) Les instructions conditionnelles

► Définition

❑ Les instructions conditionnelles sont des structures de contrôle qui permettent à un programme d'effectuer des actions différentes en

fonction de la valeur d'une expression booléenne.

❑ Il existe trois types d’instructions conditionnelles :

• Les instructions conditionnelles simples

• Les instructions conditionnelles imbriquées

• Les instructions conditionnelles multiples

Les structures de contrôle 57

1) Les instructions conditionnelles

► Les instructions conditionnelles simples

L’instruction conditionnelle « if »
Cette structure de contrôle permet d'exécuter une instruction ou une suite d'instructions seulement si une condition est vraie.
❑ Organigramme

Les conditions s'expriment avec des opérateurs


logiques ou des opérateurs de comparaisons.

Suite du programme

2
Les structures de contrôle 58

1) Les instructions conditionnelles

► Les instructions conditionnelles simples

L’instruction conditionnelle « if »
Cette structure de contrôle permet d'exécuter une instruction ou une suite d'instructions seulement si une condition est vraie.
❑ Syntaxe

En Algorithmique En langage C Toutes les conditions sont


entre des parenthèses
Si (condition) alors if (condition)
Si la condition est vraie alors
{
Instruction1 Instruction1 l'instruction ou le bloc d'instructions
Instruction2 Instruction2 qui suit le "if" est exécuté
…… ……

Finsi } S'il y a plusieurs instructions après le "if",


on les encadre par des accolades : { }

Les structures de contrôle 59

1) Les instructions conditionnelles

► Les instructions conditionnelles simples

L’instruction conditionnelle « if »
Cette structure de contrôle permet d'exécuter une instruction ou une suite d'instructions seulement si une condition est vraie.
❑ Exemple

int a; // Déclaration d’une variable d’identificateur « a » de type « int »


printf(" Tapez la valeur de a : ") ;
scanf ("%d", &a) ; // Lecture de la variable a
if (a > 5) { // Tester si a est (a > 5)
printf("a est plus grand que 5" ) ; // message affiché si la condition est vraie
}

3
Les structures de contrôle 60

1) Les instructions conditionnelles

► Les instructions conditionnelles simples

L’instruction conditionnelle « if ... else »


Cette structure de contrôle permet d'exécuter une instruction si une condition est vraie, ou une autre instruction si elle est fausse.
❑ Organigramme

Les conditions s'expriment avec des


Condition opérateurs logiques ou des opérateurs de
Vrai? comparaisons.
Oui Non

instruction1’ instruction1’
instruction2’ instruction2’
…… ……

Suite du programme

Les structures de contrôle 61

1) Les instructions conditionnelles

► Les instructions conditionnelles simples

L’instruction conditionnelle « if ... else »


Cette structure de contrôle permet d'exécuter une instruction si une condition est vraie, ou une autre instruction si elle est fausse.
❑ Syntaxe
En Algorithmique En langage C Si la condition est vraie alors
Si (condition) alors l'instruction ou le bloc d'instructions
if (condition)
{ qui suit le "if" est executé
Instruction1
Instruction2 Instruction1
sinon ou le bloc d'instructions qui suit le
…… Instruction2
…… "else" est exécuté
Sinon }
else
{ S'il y a plusieurs instructions après le "if",
Instruction1
Instruction2 Instruction1 ou après "else" , on les encadre par des
…… Instruction2
…… accolades : { }
Fin si }

4
Les structures de contrôle 62

1) Les instructions conditionnelles

► Les instructions conditionnelles simples

L’instruction conditionnelle « if ... else »


Cette structure de contrôle permet d'exécuter une instruction si une condition est vraie, ou une autre instruction si elle est fausse.
❑ Exemple

int a; // Déclaration d’une variable d’identificateur « a » de type « int »


printf(" Tapez la valeur de a : ") ;
scanf ("%d",&a); // Lecture de la variable a
if (a > 5) { // Tester si a est (a > 5)
printf(" a est plus grand que 5 ") ; // message affiché si la condition est vraie
} else {
printf(" a est plus petit ou égal à 5 ") ; // message affiché si la condition est fausse
}

Les structures de contrôle 63

1) Les instructions conditionnelles

► Les instructions conditionnelles simples

L’instruction conditionnelle « if ... else if … else »


Cette structure de contrôle permet d’enchaîner un ensemble de tests pour examiner plusieurs valeurs possibles.
❑ Organigramme

Oui Condition 1 Non


Vrai?

Oui Condition 2 Non


Instruction 1’ Vrai?

Instruction 2’ Oui Condition n Non


Vrai?

Instruction n-1’ Instruction n’

Suite du programme

5
Les structures de contrôle 64

1) Les instructions conditionnelles

► Les instructions conditionnelles simples

L’instruction conditionnelle « if ... else if … else »


Cette structure de contrôle permet d’enchaîner un ensemble de tests pour examiner plusieurs valeurs possibles.
❑ Syntaxe
En Algorithmique En langage C
Les tests sont effectués chacun leur tour et s’ils
Si (condition 1) alors if (condition1) { ne sont pas satisfait, on passe au test suivant.
Instruction1
Instruction1 ……
…… }
Sinon si (condition 2) alors elseif (condition2) {
Instruction2 ▪ Si aucun test n’est satisfait, alors c’est la
Instruction2 …… dernière clause "else" qui est exécutée.
…… }
Sinon else {
▪ Ce dernier "else" est facultatif (donc si on
Instruction n
Instruction n ne le met pas, il est possible que rien ne soit
……
…… } exécuté)
Fin si

Les structures de contrôle 65

1) Les instructions conditionnelles

► Les instructions conditionnelles simples

L’instruction conditionnelle « if ... else if … else »


Cette structure de contrôle permet d’enchaîner un ensemble de tests pour examiner plusieurs valeurs possibles.
❑ Exemple

int a; // Déclaration d’une variable d’identificateur «a» de type «int»


printf(" Tapez la valeur de a : ") ;
scanf ("%d",&a); // Lecture de la variable a
if (a > 5) {
printf(" a est plus grand que 5 ") ; // message affiché si la condition (a > 5) est vraie
} else if (a < 5) {
printf(" a est plus petit que 5 ") ; // message affiché si la condition (a < 5) est vraie
} else {
printf(" a est égale à 5 ") ; // message affiché si les conditions 1 et 2 sont fausses
}

6
Les structures de contrôle 66

1) Les instructions conditionnelles

► Les instructions conditionnelles multiples

L’instruction conditionnelle « switch »


L'instruction switch permet de tester plusieurs valeurs pour une expression.
❑ Organigramme

Oui Expression Non


= valeur1?

Oui Expression Non


Instruction 1’
= valeur2?

Instruction 2’ Oui Expression Non


= valeur n?

Instruction n-1’ Instruction n’

Suite du programme

Les structures de contrôle 67

1) Les instructions conditionnelles

► Les instructions conditionnelles multiples

L’instruction conditionnelle « switch »


L'instruction switch permet de tester plusieurs valeurs pour une expression.
❑ Syntaxe
La valeur de l’expression doit être de type scalaire discret et
En Algorithmique En langage C non réel.
▪ un scalaire est une quantité qui est décrite uniquement par sa
Selon (Expression) faire switch (Expression) {
casevaleur1 : valeur numérique (Les types : char , short int , int , long int)

valeur1 : Instruction 1 Instruction1; break; ▪ discret signifie qu'il s'agit d'une valeur spécifique plutôt que
valeur2 : Instruction 2 casevaleur2 :
d'une plage continue de valeurs (1..5 × )
valeur3 : Instruction 3 Instruction2; break;
…… casevaleur3 :
Instruction3; break; Le mot clé "break" indique la sortie de la structure
Sinon conditionnelle.
……
Traitement par défaut default: Instruction
Fin si par défaut Le mot clé "default" précède la liste d'instructions qui sera
} exécutée si l'expression n'est jamais égale à une des valeurs.

7
Les structures de contrôle 68

1) Les instructions conditionnelles

► Les instructions conditionnelles multiples

L’instruction conditionnelle « switch »


L'instruction switch permet de tester plusieurs valeurs pour une expression.
❑ Exemple

int choix; // Déclaration d’une variable d’identificateur « choix » de type « int »


printf(" Tapez une valeur 1,2,3 ou 4 ") ;
scanf ("%d", &choix); // Lecture de la variable choix
switch (choix) { // Tester choix
case 1 : printf(" choix est égale 1 ") ; break;// message affiché si choix égale à 1 est vraie
case 2 : printf(" choix est égale 2 ") ; break; // message affiché si choix égale à 2 est vraie
case 3 : printf(" choix est égale 3 ") ; break; // message affiché si choix égale à 3 est vraie
default : printf(" choix est supérieur à 3 ") ; // message affiché si aucune des cases n’est vraie
}

Les structures de contrôle 69

1) Les instructions conditionnelles

► Exercice d’application

▪ Écrire un programme qui permet de saisir le n° de mois puis affiche la saison correspondante.

▪ Exemple :

n° mois=8 → affiche saison été

- 12,1,2 saison hiver

- 3,4,5 saison printemps

- 6,7,8 saison été

- 9,10,11 saison automne.


.

8
Les structures de contrôle 70

1) Les instructions conditionnelles

► Exercice d’application

▪ Écrire un programme qui permet de saisir le n° de mois puis affiche la saison correspondante.

▪ Solution en utilisant if ..elseif … else :

int mois;
printf(" Tapez un mois : ") ;
scanf ("%d", &mois);
if (mois==1 || mois==2 || mois==12) else if (mois==9 || mois==10 || mois==11 )

printf (" saison hiver") ; printf (" saison automne ") ;

else if (mois==3 || mois==4 || mois==5 ) else

printf (" saison printemps ") ; printf(" La valeur donnée n’est pas entre 1 ..12 ") ;

else if (mois==6 || mois==7 || mois==8 ) // message affiché si aucune des cases n’est vraie

printf (" saison été ") ;

Les structures de contrôle 71

1) Les instructions conditionnelles

► Exercice d’application

▪ Écrire un programme qui permet de saisir le n° de mois puis affiche la saison correspondante.

▪ Solution en utilisant switch:

int mois;
printf(" Tapez un mois : ") ;
scanf ("%d", &mois);
switch (mois) {
case 1 : case 2 : case 12: printf (" saison hiver") ; break;
case 3 : case 4 : case 5: printf (" saison printemps ") ; break;
case 6 : case 7 : case 8: printf (" saison été ") ; break;
case 9 : case 10 : case 11: printf (" saison automne ") ; break;
default : printf(" La valeur donnée n’est pas entre 1 ..12 ") ; // message affiché si aucune des cases n’est vraie
}

9
Les structures de contrôle 72

2) Les instructions répétitives

Le langage C dispose de trois structures pour le contrôle répétitif:

▪ La boucle while,

▪ La boucle do … while,

▪ La boucle for

Les structures de contrôle 73

2) Les instructions répétitives

► La boucle while

❑ Définition :

▪ La structure répétitive WHILE ou "TantQue… Faire " permet de répéter un traitement tant qu'une expression conditionnelle est vraie.

▪ Si d'emblée, la condition n'est pas vraie, le traitement ne sera pas exécuté.

▪ On voit donc que la structure répétitive "WHILE" a un point commun avec la structure conditionnelle: si la condition n'est pas vraie,

le traitement n'est pas exécuté.

10
Les structures de contrôle 74

2) Les instructions répétitives

► La boucle while

❑ Organigramme :

Les conditions s'expriment avec des


opérateurs logiques ou des opérateurs de
Condition comparaisons.
Vrai? Non

Oui

instruction1’
instruction2’
……

Suite du programme

Les structures de contrôle 75

2) Les instructions répétitives

► La boucle while

❑ Syntaxe :

En Algorithmique En langage C
Toutes les conditions sont entre deux parenthèses (……).

Tantque(condition) faire while ( condition)


{
Instruction1 Instruction1 Tant que la condition est vraie alors l'instruction ou le bloc
d'instructions qui suit le "While" est exécuté.
Instruction2 Instruction2
…… ……

Fin tanque } S'il y a plusieurs instructions après le "While" , on les


encadre par des accolades : { }

11
Les structures de contrôle 76

2) Les instructions répétitives

► La boucle while

❑ Exemple :

int i = 0 ; // Déclaration d’une variable d’identificateur « i » de type « int » Affichage ?


while (i<5) { // Tester si i < 5 La valeur de i est : 0
printf(" La valeur de i est : %d \n", i) ; // Message pour afficher la valeur courante de i La valeur de i est : 1
i++; // incrémentation de i La valeur de i est : 2
} La valeur de i est : 3
printf("\n La valeur finale de i est : %d ", i) ; // Message pour afficher la valeur finale de i La valeur de i est : 4

La valeur finale de i est : 5

Les structures de contrôle 77

2) Les instructions répétitives

► La boucle do ... while

❑ Définition :

▪ La structure répétitive "DO WHILE" ou "Répéter…Tant que " permet de répéter un traitement Tant qu'une condition est vraie.

▪ Le traitement est exécuté, puis la condition est vérifiée.

▪ On voit donc que la structure répétitive "DO WHILE" a aussi un point commun avec la structure conditionnelle: si la condition à la fin n'est

pas vraie, le traitement n'est pas exécuté.

12
Les structures de contrôle 78

2) Les instructions répétitives

► La boucle do ... while

❑ Organigramme :

instruction1’
instruction2’
……

Condition
= Vrai
Oui
Dans cette structure la condition est testée à la fin
Non pour garantir que le bloc d’instructions est
exécuté au moins une fois
Suite du programme

Les structures de contrôle 79

2) Les instructions répétitives

► La boucle do ... while

❑ Syntaxe :

En Algorithmique En langage C
Lorsque " do" est rencontré l'instruction ou le bloc d’instructions qui
suit le est exécutée, puis la condition est testée,
Répéter do si elle est vérifiée la boucle est répétée,
sinon l‘exécution continue à la première instruction après le "While"
{
Instruction1 Instruction1
Instruction2 Instruction2 S'il y a plusieurs instructions après le "do" , on les encadre
…… …… par des accolades : { }

Jusqu’à (condition) }while ( condition) ; Toutes les conditions sont entre deux parenthèses (……)
L’instruction "While (condition)" est suivie d'un point-virgule ;
(contrairement à la version de la structure répétitive WHILE)

13
Les structures de contrôle 80

2) Les instructions répétitives

► La boucle do ... while

❑ Exemple :

int i = 0 ; // Déclaration d’une variable d’identificateur « i » de type « int » Affichage ?


do { La valeur de i est : 0
printf("La valeur de i est : %d \n ", i) ; // Message pour afficher la valeur courante de i La valeur de i est : 1
i++; // incrémentation de i La valeur de i est : 2
} while (i<5); // Tester si i < 5 La valeur de i est : 3
printf("\n La valeur finale de i est : %d ", i) ; // Message pour afficher la valeur finale de i La valeur de i est : 4

La valeur finale de i est : 5

Les structures de contrôle 81

2) Les instructions répétitives

► La boucle for

❑ Définition :

▪ La structure répétitive FOR est une structure répétitive qui itère le même traitement pour une plage de valeurs entières comprises entre

une borne inférieure et une borne supérieure.

▪ L’arrêt du traitement se réalise lorsqu’on dépasse l’une des bornes.

14
Les structures de contrôle 82

2) Les instructions répétitives

► La boucle for

❑ Organigramme :

instruction_d’initialisation
Les conditions s'expriment avec des
opérateurs logiques ou des opérateurs de
comparaisons.
Condition
Vrai? Non
Oui

instruction1’
instruction2’
……

instruction_d’incrémentation

Suite du programme

Les structures de contrôle 83

2) Les instructions répétitives

► La boucle for Le for prend trois arguments encadrés par deux


parenthèse (..) et séparés par des points-virgules.
❑ Syntaxe :

instruction_init : Une instruction


En Algorithmique En langage C d’initialisation. En général on initialise un
compteur avec cette instruction. Exemple i=0
Pour cde vi à vf faire for (instruction_init ; condition ; instruction_increment) condition : Une condition pour continuer la
{ boucle. En général on indique qu’un compteur
Instruction1 Instruction1 doit être inférieur à une certaine valeur
Instruction2 Instruction2 comme par exemple i<100
…… ……
} instruction_increment : Une instruction qui
Fin pour est exécutée à chaque fin de boucle, juste avant
de faire le test sur la condition pour continuer.
En général, on incrémente le compteur car ce
n’est pas automatique

C : compteur | vi : valeur initiale | vf: valeur finale

15
Les structures de contrôle 84

2) Les instructions répétitives

► La boucle for

❑ Exemple :

Affichage ?
int i ; // Déclaration d’une variable d’identificateur « i » de type « int »
La valeur de i est : 0
for (i=0 ; i<5 ; i++) {
La valeur de i est : 1
printf(" La valeur de i est : %d \n ", i) ; // Message pour afficher la valeur courante de i
La valeur de i est : 2
}
La valeur de i est : 3
La valeur de i est : 4
1 3
for (instruction_init ; condition ; instruction_increment){ 2/4

… 2
}
Suite du programme

Les structures de contrôle 85

2) Les instructions répétitives

► L’imbrication des boucles

❑ Définition :

▪ Il est possible de faire une imbrication pour tous les types de boucle. Cela consiste à placer une boucle dans le corps d'une autre boucle.

▪ On peut même imbriquer des boucles de types différents, comme une boucle for dans une boucle while.

▪ En théorie, il n'y a pas de limite au nombre d'imbrications possibles en C. Cependant, en pratique, le nombre d'imbrications est limité par

la taille de la pile d'exécution du programme.

Boucle for Boucle while

Boucle For Boucle For


… …
Fin Boucle For Fin Boucle For

Fin boucle for Fin while

Imbrication des boucles de même type Imbrication des boucles de type différent

16
Les structures de contrôle 86

2) Les instructions répétitives

► L’imbrication des boucles

❑ Syntaxe de l’imbrication des boucles (exp. Imbrication à 2 niveaux de la boucle for) :

En Algorithmique En langage C

Pour c1de vi1 à vf1 faire for (instruction_init1 ; condition1 ; instruction_increment1)


{
Pour c2 de vi2 à vf2 faire for (instruction_init2 ; condition2 ; instruction_increment2)
… {
Fin pour ……
}
Fin pour }

Les structures de contrôle 87

2) Les instructions répétitives

► L’imbrication des boucles

❑ Exemple:

1-1
int i, j; // Déclaration de deux variables « i » et « j » de type « int »
1-2
for (i = 1; i <= 3; i++) {
Résultat ? 1-3
for (j = 1; j <= 3; j++) {
2-1
printf("%d - %d \n", i, j); // Message pour afficher les valeurs courantes de i et j
2-2
}
2-3
}
3-1
3-2
3-3

17
Les structures de contrôle 88

2) Les instructions répétitives

► L’imbrication des boucles

❑ Précaution :
▪ Il est important de faire attention aux variables utilisées dans une boucle imbriquée.
▪ En effet, une variable déclarée dans la boucle externe est accessible dans la boucle interne.
▪ Il est donc important de ne pas modifier la valeur de cette variable dans la boucle interne.
→ cela pourrait affecter le comportement de la boucle externe.

int i, j; // Déclaration de deux variables « i » et « j » de type « int » Résultat ? 2-1


for (i = 1; i <= 3; i++) { 3-2
for (j = 1; j <= 3; j++) { 4-3
i = i + 1;
printf("%d - %d \n", i, j); // Message pour afficher les valeurs courantes de i et j
}
}

Les structures de contrôle 89

2) Les instructions répétitives

► Exercice d’application

Donner un programme qui permet d’afficher une pyramide ou un triangle rectangle de n lignes en étoiles.

▪ La hauteur du triangle est égale au nombre de lignes saisi par l’utilisateur.

▪ Le sommet de triangle doit être composé d’une seule étoile.

Exemple : n=5

*
**
***
****
*****

18
Les structures de contrôle 90

2) Les instructions répétitives

► Exercice d’application

Solution :
#include <stdio.h>
int main() {
int n, i , j;
printf("Donner le nombre de lignes : ") ; scanf ("%d", &n);
for (i = 1; i <= n; i++) { // Boucle externe (for) pour les lignes
for (j = 1; j <= i; j++) {// Boucle interne (for) pour les étoiles
printf("* ");
}
printf("\n");
}
return 0;
}

Les structures de contrôle 91

3) Les instructions inconditionnelles

Le langage C dispose de trois types d’instructions inconditionnelles :

▪ L'instruction break

▪ L'instruction continue

▪ L'instruction goto

19
Les structures de contrôle 92

3) Les instructions inconditionnelles

► L'instruction break
▪ L'instruction break peut être utilisée dans n'importe quelle boucle.
▪ Cette instruction provoque alors une interruption et une sortie immédiate de la boucle.
▪ Syntaxe : break ;

Exemple Exécution

int i; Début de l'itération 1


for(i=1 ; i <= 5 ; i++) { Bonjour
printf(" Début de l'itération %d \n", i) ; Fin de l'itération 1
printf(" Bonjour \n") ; Début de l'itération 2
if (i==3) Bonjour
break; Fin de l'itération 2
printf(" Fin de l'itération %d \n", i) ; Début de l'itération 3
} Bonjour
printf(" Après la boucle \n") ; Après la boucle

Les structures de contrôle 93

3) Les instructions inconditionnelles

► L'instruction continue
▪ L'instruction continue intervient également pour interrompre l'exécution des boucles
▪ Cette instruction ne provoque pas la sortie complète de la boucle, mais plutôt l'interruption de l'itération courante et le passage à
l'itération suivante de cette boucle.
▪ Syntaxe : continue ;

Exemple Exécution
int i; Début de l’itération 1
for(i=1 ; i <= 5 ; i++) { Début de l’itération 2
printf(" Début de l'itération %d \n", i) ; Début de l’itération 3
if (i < 3) Bonjour
continue ; Début de l’itération 4
printf(" Bonjour \n") ; Bonjour
} Début de l’itération 5
Bonjour

20
Les structures de contrôle 94

3) Les instructions inconditionnelles

► L'instruction goto
▪ L'instruction goto provoque un branchement immédiat du programme à un endroit prédéfini.
▪ Les boucles, les tests sont interrompus.
▪ L'endroit où reprend le programme est défini par une étiquette suivie du symbole.
▪ Syntaxe : goto NomEtiquette ; … NomEtiquette ;

Exemple Exécution
int i; Début de l'itération 1
for(i=1 ; i <= 5 ; i++) { Bonjour
printf(" Début de l'itération %d \n", i) ; Fin de l'itération 1
printf(" Bonjour \n") ; Début de l'itération 2
if (i == 3) Bonjour
goto Sortie ; Fin de l'itération 2
printf(" Fin de l'itération %d \n", i) ; Début de l'itération 3
} Bonjour
Sortie : printf(" Après la boucle \n") ; Après la boucle

21

Vous aimerez peut-être aussi