cycle 3 : alternatives faire des choix dans un programme en c 1- aiguillage simple sur condition :...
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",¬e); // 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