cycle 3 : alternatives faire des choix dans un programme en c 1- aiguillage simple sur condition :...

Post on 03-Apr-2015

103 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CYCLE 3 : AlternativesFaire des choix dans un programme en C

1- AIGUILLAGE SIMPLE sur CONDITION :

if-else

2-AIGUILLAGE MULTIPLE sur CONDITIONS

if-else if

INTRODUCTION : Pourquoi les instructions alternatives ?

CYCLE 3 : AlternativesFaire des choix dans un programme en C

INTRODUCTION : Pourquoi les instructions alternatives ?

3

Pourquoi les instructions Alternatives ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

DONNEES en Entrée

PROGRAMME

4

Pourquoi les instructions Alternatives ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

DECLARER les DONNEES

(Variables et/ou Constantes)

INITIALISER des Variables

AFFICHER à l’écran les demandes de valeurs

SAISIR au clavier les valeurs de Variables

5

Pourquoi les instructions Alternatives ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

TRAITEMENTDONNEES en Entrée

PROGRAMME

6

Pourquoi les instructions Alternatives ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

DECLARER les DONNEES

(Variables et/ou Constantes)

INITIALISER des Variables

AFFICHER à l’écran les demandes de valeurs

SAISIR au clavier les valeurs de Variables

FAIRE des CALCULS

7

Pourquoi les instructions Alternatives ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

TRAITEMENTDONNEES en Entrée

DONNEES en Sortie

(résultats du programme)

PROGRAMME

8

Pourquoi les instructions Alternatives ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

DECLARER les DONNEES

(Variables et/ou Constantes)

INITIALISER des Variables

AFFICHER à l’écran les demandes de valeurs

SAISIR au clavier les valeurs de Variables

AFFICHER à l’écran les résultats du programme

FAIRE des CALCULS

Exécution LINEAIRE

Très limitée

9

Pourquoi les instructions Alternatives ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

int main()

{ unsigned short nbProduit; // nombre produits achetés

float prixTotal; // prix à payer

const float PRIX_UNIT= 10.; //10 E/produit

// saisie du nombre de produits achetés

printf("\nNombre de produits achetés : ");

scanf("%hu",&nbProduit);

// calcul du prix à payer

prixTotal= nbProduit * PRIX_UNIT;

printf("\nPrix Total : %.2f",prixTotal);

}

Exécution LINEAIRE

UN SEUL CHEMIN

10

Pourquoi les instructions Alternatives ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

COMMENT ECRIRE les INSTRUCTIONS

POUR PRENDRE en COMPTE un CHOIX POSSIBLE ?1. Si le client n’a pas droit a réduction : calcul standard

2. Si le client a droit à réduction : autre calcul

?PLUSIEURS CHEMINS avec AIGUILLAGES

CALCUL 1 CALCUL 2

11

Pourquoi les instructions Alternatives ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

AIGUILLAGE SIMPLE

Avec CONDITION

AIGUILLAGE MULTIPLE

Avec CONDITION

SI (droit à réduction) alors

Calcul 1

SINON

Calcul 2

FSI

ALTERNATIVES

SI (droit à réduction) alors

Calcul 1

SINON SI (pas droit à réduction)

Calcul 2

FSI

12

Les conditions logiquesINTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Pourquoi se servir d’une expression logique ?

SI (a > b) ALORS Afficher("Le maximum est a")

(a>b) : expression logique à évaluer comme tout calcul

soit a= 3 et b=2 ; dans ce cas, (a>b) VRAI

Les expressions logiques donnent une valeur VRAIE ou FAUSSE : elles serviront donc à faire du raisonnement dans le programme.

13

Les conditions logiquesINTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Expression logique

Pour les conditions Opérateurs Logiques a, b, c : tous les types Résultat : VRAI/FAUX

a≠b

a==b

c<b

NON(a)

b ET c

14

Les conditions logiquesINTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

15

Les conditions logiquesINTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Opérateur

Nom En C

== Egal ==

≠ Différent !=

> Strictement supérieur

>

Supérieur ou égal

>=

< Strictement inférieur

<

Inférieur ou égal

<=

Opérateurs logiques

Opérateur

Nom En C

NON Non logiqu

e

!

OU Ou logiqu

e

||

ET Et logiqu

e

&&

16

Les conditions logiquesINTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Les opérateurs Logiques BOOLEENS

FAUX FAUX FAUXFAUX VRAI VRAIVRAI FAUX VRAIVRAI VRAI VRAI

expression1 expression2 expression1 OU expression2

17

Les conditions logiquesINTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Les opérateurs Logiques BOOLEENS

FAUX FAUX FAUXFAUX VRAI FAUXVRAI FAUX FAUXVRAI VRAI VRAI

expression1 expression2 expression1 ET expression2

18

Les conditions logiquesINTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Les opérateurs Logiques BOOLEENS

VRAI FAUXFAUX VRAI

expression NON(expression)

19

Les conditions logiquesINTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Exemple d’évaluation d’expression Logique

r est un réel qui vaut 3.5 et d est un réel qui vaut 30.

NON(r==3.5) OU (d>30.)

3.5r

30.d

QUE VAUT l’expression Logique ?

VRAI

r==3.5 d>30. NON(r==3.5)

FAUX FAUX FAUX

CYCLE 3 : AlternativesFaire des choix dans un programme en C

1.1- Comment écrire l’instruction

SI - (SINON) ?

if { } else { }

1.2- Comment marche cette instruction ?

1- AIGUILLAGE SIMPLE sur CONDITION

Instruction alternative SI - SINON

CYCLE 3 : AlternativesFaire des choix dans un programme en C

1.1- Comment écrire l’instruction

SI - (SINON) ?

if { } else { }

Instruction alternative SI - SINON

22

1.1- Comment écrire l’instruction SI - (SINON) ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

int main()

{ /* Aiguillage en fonction d’une condition logique :

if (condition)

{ instructions 1;

}

else

{ instructions 2;

} */

}

Instruction : SI - (SINON)

23

1.1- Comment écrire l’instruction SI - (SINON) ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

int main()

{ if (condition)

{ instructions 1;

}

else

{ instructions 2;

}

}

À NOTER !!

Règle de programmation : lisibilité code Indentations dans les

accolades du if et du else

PAS de ; à la fin du if(condition) et du else

24

1.1- Comment écrire l’instruction SI - (SINON) ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Rôle de l’Instruction :

SI - SINON

Le SI - SINON réalise un aiguillage à 2 voies exclusives (l’une ou l’autre, mais pas les 2).

Le SI réalise un filtre, une protection contre certaines erreurs prévisibles.

25

1.1- Comment écrire l’instruction SI-(SINON) ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

int main()

{ unsigned short nbProduit; // nombre produits achetés

float prixTotal; // prix à payer

const float PRIX_UNIT= 10.; //10 E/produit

// saisie du nombre de produits achetés

printf("\nNombre de produits achetés : "); scanf("%hu",&nbProduit);

// calcul du prix en fonction du droit à réduction (20% pour plus de 10 produits)

if (nbProduit<10) { prixTotal= nbProduit * PRIX_UNIT; }

else { prixTotal= nbProduit * PRIX_UNIT * 0.8; }

printf("\nPrix Total : %.2f",prixTotal);

}

Exemple SI - SINON

26

1.1- Comment écrire l’instruction SI - (SINON) ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

int main()

{ unsigned short nbProduit; // nombre produits achetés

float prixTotal; // prix à payer

const float PRIX_UNIT= 10.; //10 E/produit

// saisie du nombre de produits achetés

printf("\nNombre de produits achetés : "); scanf("%hu",&nbProduit);

// calcul du prix en fonction du droit à réduction (20% pour plus de 10 produits)

prixTotal= nbProduit * PRIX_UNIT;

if (nbProduit>=10) { prixTotal= prixTotal * 0.8; }

printf("\nPrix Total : %.2f",prixTotal);

}

Exemple SI

27

1.1- Comment écrire l’instruction SI -(SINON) ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Bilan du rôle du SI - SINON

Aiguillage à 2 chemins :

le choix entre instructions 1 et instructions 2 dépend de la valeur de la condition logique.

Instructions 1

Instructions 2

Condition

VRAIE

Condition FAUSSE

CYCLE 3 : AlternativesFaire des choix dans un programme en C

1.2- Comment marche cette instruction ?

Instruction alternative SI - SINON

29

1.2- Comment marche le SI - (SINON) ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Principe d’exécution du SI - SINON :

if (condition)

{ instructions 1;

}

else

{ instructions 2;

}

• Si la condition logique est VRAIE, les instructions 1 du if sont exécutées.

• Si la condition logique est FAUSSE, le CPU exécute les instructions 2 du else.

30

1.2- Comment marche le SI - (SINON) ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

condition logique ?

Bloc d’instructions 1

VRAI

Suite du programme

Principe d’exécution d’une instruction SI - SINON :

if (condition)

{ instructions 1;

}

else

{ instructions 2;

}

FAUX

Bloc d’instructions 2

31

1.2- Comment marche le SI - (SINON) ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

condition logique ?

Bloc d’instructions 1

VRAI

Suite du programme

Principe d’exécution d’une instruction SI :

if (condition)

{ instructions 1;

}

FAUX

32

1.2- Comment marche le SI - (SINON) ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Simulations d’exécution du SI - SINON :

INSTRUCTION PROCESSEUR

1- if évaluation condition logique : FAUX

INSTRUCTION PROCESSEUR

1- if évaluation condition logique : VRAI2- { exécution bloc d’instructions 13- } suite du programme après la fin du SI

3- } suite du programme après la fin du SI2- else{ exécution bloc d’instructions 2

Le programme effectue une division protégée :

– CAS 1 : diviseur non nul– CAS 2 : diviseur nul

34

1.2- Comment marche le SI - (SINON) ?

INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

{ float a, b, div;

// saisie des 2 réels

printf("\n\t\tDonner les 2 reels : "); scanf("%f%f",&a,&b);

// protection division par 0

if (b != 0) // division possible

{ div= a/b; printf("\n\n\t\tResultat de la division : %.2f",div);

}

else // message d'erreur : division impossible

{ printf("\n\n\t\tERREUR ! Le diviseur est nul !");

}

}

Exemple DIVISION PROTEGEE :

35

resu&resu a&a b&b 1- Déclaration

variables  

 Réservation mémoire

 

a&a5.2

b&b0.0

2- Saisies 

Attente, conversion, affectation

  3-    if  Evaluation

(b0.): FAUX

 

5-  } FSI-FIN   

 

Instruction Processeur

Mémoire

 

  4-   else{ Afficher(“Erreur”)

Erreur

Simulation d’exécution du programme de Division protégée

36

resu&resu a&a b&b 1- Déclaration

variables  

 Réservation mémoire

 

Instruction Processeur

Mémoire

 

Simulation d’exécution du programme de Division protégée

a&a5.0

b&b2.0

2-     Saisies 

attente, conversion, affectation

 

  3-    if 

Evaluation (b0.): VRAI

 

    4-  { resu= a/b - calcul: 5./2. - affectation

resu&resu2.5

    5-  Afficher(resu) 2.5

CYCLE 3 : AlternativesFaire des choix dans un programme en C

2.1- Comment écrire l’instruction

SI - SINONSI - (SINON) ?

if { } else if { } else{ }

2.2- Comment marche cette instruction ?

2-AIGUILLAGE MULTIPLE sur CONDITIONS

Instruction alternative SI – SINON SI – SINON

CYCLE 3 : AlternativesFaire des choix dans un programme en C

2.1- Comment écrire l’instruction

SI - SINONSI - (SINON) ?

if { } else if { } else{ }

Instruction alternative SI – SINON SI – SINON

39

2.1- Comment écrire le

SI – SINON SI - (SINON) ?INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

{ /* Aiguillage en fonction d’une condition logique :

if (condition 1)

{ instructions 1;

}

else if (condition 2)

{ instructions 2;

}

...

else

{ instructions 3;

} */

40

2.1- Comment écrire le

SI - SINONSI - (SINON) ?INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

int main()

{ if (condition 1)

{ instructions 1;

}

else if (condition 2)

{ instructions 2;

}

else

{ instructions 3;

}

}

À NOTER !!

Règle de programmation : lisibilité code Indentations dans les accolades

des if et du else

PAS de ; à la fin du if(condition 1), du else if (condition 2) et du else

Le nombre de else if n’est pas limité

41

2.1- Comment écrire le

SI - SINONSI - (SINON) ?INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Rôle de l’Instruction :

SI - SINON SI – (SINON)

Le SI - SINON SI - SINON réalise un aiguillage à plusieurs voies exclusives (une seule voie est empruntée).

Le SI - SINON SI réalise un aiguillage à plusieurs voies également, mais il est possible de n’utiliser aucune des voies.

42

2.1- Comment écrire le

SI alors - SINONSI - (SINON) ?INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Exemple : DECOUPAGE D’INTERVALLES

Le programme affiche la mention obtenue à un examen

note [0 [10 [12 [14 [16 20]

VOIE 1

Refus

VOIE 2

Passable

VOIE 3

AB

VOIE 4

B

VOIE restante

TB

43

float note; printf("\n\t\tNote : "); scanf("%f",&note); // NOTE obtenue à l’examen

if (note < 10) // Aiguillage sur la MENTION en fonction de la note obtenue

{ printf("Refus"); // note<10

}

else if (note < 12) // note10 et note<12

{ printf("Passable"); // note [10,12[

}

else if (note < 14) // note 10 ET note 12 ET note<14

{ printf("AB"); // note [12,14[

}

else if (note < 16) // note 12 ET note 14 ET note<16

{ printf("B"); // note [14,16[

}

else // note 14 ET note 16

{ printf("TB"); // note 16

}

note [0 [10 [12 [14 [16 20]

44

2.1- Comment écrire le

SI alors - SINONSI - (SINON) ?INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Aiguillage à plusieurs chemins :

le choix entre les blocs d’instructions dépend des valeurs combinées des conditions logiques.

Bilan du rôle du SI - SINON SI - (SINON)

Instructions 1

Instructions 2

C1 Vrai

C1 Faux et C2 Vrai

C1 Faux et C2 Faux Instructions 3

CYCLE 3 : AlternativesFaire des choix dans un programme en C

2.2- Comment marche cette instruction ?

Instruction alternative SI – SINON SI – SINON

46

2.2- Comment marche le

SI - SINONSI - (SINON) ?INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Principe d’exécution du SI - SINON SI - SINON :

if (condition 1)

{ instructions 1;

}

else if (condition 2)

{ instructions 2;

}...

else

{ instructions 3;

}

1. Le CPU évalue successivement les conditions logiques des if, de haut en bas.

2. Dès qu’une condition est VRAIE, le CPU exécute les instructions associées.

3. A la fin de cette exécution, le CPU sort du SI.

4. Si aucune condition n’est VRAIE, le CPU exécute le dernier else.

47

2.2- Comment marche le

SI - SINONSI - (SINON) ?INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Principe d’exécution du SI - SINON SI - SINON :

if (condition 1)

{ instructions 1;

}

else if (condition 2)

{ instructions 2;

}...

else

{ instructions 3;

}

SINONFAUX

VRAI

Instruc 1VRAI

Instruc 2

Instruc 3

condition logique 2 ?

FAUXcondition logique 1?

Suite du programme

...

48

2.2- Comment marche le

SI – SINONSI - (SINON) ?INTRODUCTION

I) AIGUILLAGE SIMPLE / condition

II) AIGUILLAGE MULTIPLE / condition

Exécution du SI - SINON SI - SINON :

condition 1 condition 2Exécution instruc 1 si : V -- Exécution instruc 2 si : F V

Exécution instruc 3 si : F F

Le CPU n’arrive sur un else if que si les conditions des if précédents sont FAUSSES

Le programme affiche la mention à un examen en fonction de la note obtenue :– [0,10[ : REFUS– [10,12[ : PASSABLE– [12,14[ : AB– [14,16[: B– [16,20] : TB

top related