CYCLE 3 : Alternatives Faire des choix dans un programme en C INTRODUCTION : Pourquoi les instructions alternatives ? 1- AIGUILLAGE SIMPLE sur.

Download Report

Transcript CYCLE 3 : Alternatives Faire des choix dans un programme en C INTRODUCTION : Pourquoi les instructions alternatives ? 1- AIGUILLAGE SIMPLE sur.

CYCLE 3 : Alternatives
Faire des choix dans un programme en C
INTRODUCTION : Pourquoi les instructions alternatives ?
1- AIGUILLAGE SIMPLE sur CONDITION :
if-else
2-AIGUILLAGE MULTIPLE sur CONDITIONS
if-else if
CYCLE 3 : Alternatives
Faire des choix dans un programme en C
INTRODUCTION : Pourquoi les instructions alternatives ?
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Pourquoi les instructions
Alternatives ?
PROGRAMME
DONNEES
en Entrée
3
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Pourquoi les instructions
Alternatives ?
DECLARER les DONNEES
(Variables et/ou Constantes)
INITIALISER des Variables
AFFICHER à l’écran les demandes de valeurs
SAISIR au clavier les valeurs de Variables
4
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Pourquoi les instructions
Alternatives ?
PROGRAMME
DONNEES
en Entrée
TRAITEMENT
5
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Pourquoi les instructions
Alternatives ?
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
6
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Pourquoi les instructions
Alternatives ?
PROGRAMME
DONNEES
en Entrée
TRAITEMENT
DONNEES
en Sortie
(résultats du
programme)
7
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Pourquoi les instructions
Alternatives ?
DECLARER les DONNEES
(Variables et/ou Constantes)
Exécution LINEAIRE
INITIALISER des Variables
Très limitée
AFFICHER à l’écran les demandes de valeurs
SAISIR au clavier les valeurs de Variables
FAIRE des CALCULS
AFFICHER à l’écran les résultats du programme
8
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Pourquoi les instructions
Alternatives ?
int main()
{
unsigned short nbProduit; // nombre produits achetés
floatprixTotal; // 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);
Exécution LINEAIRE
UN SEUL CHEMIN
// calcul du prix à payer
prixTotal= nbProduit * PRIX_UNIT;
printf("\nPrix Total : %.2f",prixTotal);
}
9
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Pourquoi les instructions
Alternatives ?
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
CALCUL 1
CALCUL 2
PLUSIEURS CHEMINS avec AIGUILLAGES
?
10
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Pourquoi les instructions
Alternatives ?
ALTERNATIVES
AIGUILLAGE SIMPLE
AIGUILLAGE MULTIPLE
Avec CONDITION
Avec CONDITION
SI (droit à réduction) alors
Calcul 1
SINON
Calcul 2
FSI
SI (droit à réduction) alors
Calcul 1
SINON SI (pas droit à réduction)
Calcul 2
FSI
11
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Les conditions logiques
Pourquoi se servir d’une expression logique ?
Les expressions logiques donnent une valeur VRAIE
ou FAUSSE : elles serviront donc à faire du raisonnement
dans le programme.
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
12
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Les conditions logiques
Expression logique
a≠b




Pour les conditions
Opérateurs Logiques
a, b, c : tous les types
Résultat : VRAI/FAUX
a==b
c<b
NON(a)
b ET c
13
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Les conditions logiques
14
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Les conditions logiques
Opérateurs logiques
Opérateur
Nom
En C
==
Egal
==
≠
Différent
!=
>
Strictement supérieur
>

Supérieur ou égal
>=
<
Strictement inférieur
<

Inférieur ou égal
<=
Opérateur
Nom
En C
NON
Non logique
!
OU
Ou logique
||
ET
Et logique
&&
15
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Les conditions logiques
Les opérateurs Logiques BOOLEENS
expression1
expression2
expression1 OU expression2
FAUX
FAUX
VRAI
VRAI
FAUX
VRAI
FAUX
VRAI
FAUX
VRAI
VRAI
VRAI
16
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Les conditions logiques
Les opérateurs Logiques BOOLEENS
expression1
expression2
expression1 ET expression2
FAUX
FAUX
VRAI
VRAI
FAUX
VRAI
FAUX
VRAI
FAUX
FAUX
FAUX
VRAI
17
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Les conditions logiques
Les opérateurs Logiques BOOLEENS
expression
VRAI
FAUX
NON(expression)
FAUX
VRAI
18
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
Les conditions logiques
Exemple d’évaluation d’expression Logique
QUE VAUT l’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.)
r
3.5
d
30.
r==3.5
VRAI
NON(r==3.5)
FAUX
d>30.
FAUX
FAUX
19
CYCLE 3 : Alternatives
Faire des choix dans un programme en C
1- AIGUILLAGE SIMPLE sur CONDITION
Instruction alternative SI - SINON
1.1- Comment écrire l’instruction
SI - (SINON) ?
if { } else { }
1.2- Comment marche cette instruction ?
CYCLE 3 : Alternatives
Faire des choix dans un programme en C
Instruction alternative SI - SINON
1.1- Comment écrire l’instruction
SI - (SINON) ?
if { } else { }
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
1.1- Comment écrire l’instruction
SI - (SINON) ?
Instruction : SI - (SINON)
int main()
{
/* Aiguillage en fonction d’une condition logique :
if (condition)
{
instructions 1;
}
else
{
}
}
instructions 2;
*/
22
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
int main()
{
if (condition)
{
À NOTER !!
instructions 1;
}
PAS de ; à la fin du
if(condition) et du else
else
{
1.1- Comment écrire l’instruction
SI - (SINON) ?
instructions 2;
}
}
Règle de programmation : lisibilité code
 Indentations dans les
accolades du if et du else
23
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
1.1- Comment écrire l’instruction
SI - (SINON) ?
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.
24
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
1.1- Comment écrire l’instruction
SI-(SINON) ?
Exemple SI - SINON
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);
}
25
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
1.1- Comment écrire l’instruction
SI - (SINON) ?
Exemple SI
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);
}
26
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
1.1- Comment écrire l’instruction
SI -(SINON) ?
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
27
CYCLE 3 : Alternatives
Faire des choix dans un programme en C
Instruction alternative SI - SINON
1.2- Comment marche cette instruction ?
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
1.2- Comment marche le
SI - (SINON) ?
Principe d’exécution du SI - SINON :
if (condition)
{ instructions 1;
}
else
• Si la condition logique est VRAIE, les
{ instructions 2;
instructions 1 du if sont exécutées.
}
• Si la condition logique est FAUSSE, le CPU
exécute les instructions 2 du else.
29
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
1.2- Comment marche le
SI - (SINON) ?
Principe d’exécution d’une instruction SI - SINON :
if (condition)
{ instructions 1;
FAUX
condition logique ?
}
else
VRAI
{ instructions 2;
Bloc d’instructions 1
Bloc d’instructions 2
}
Suite du programme
30
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
1.2- Comment marche le
SI - (SINON) ?
Principe d’exécution d’une instruction SI :
if (condition)
FAUX
condition logique ?
{ instructions 1;
}
VRAI
Bloc d’instructions 1
Suite du programme
31
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
1.2- Comment marche le
SI - (SINON) ?
Simulations d’exécution du SI - SINON :
INSTRUCTION
1- if
2- {
3- }
INSTRUCTION
1- if
2- else{
3- }
PROCESSEUR
évaluation condition logique : VRAI
exécution bloc d’instructions 1
suite du programme après la fin du SI
PROCESSEUR
évaluation condition logique : FAUX
exécution bloc d’instructions 2
suite du programme après la fin du SI
32
Le programme effectue une division protégée :
– CAS 1 : diviseur non nul
– CAS 2 : diviseur nul
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
1.2- Comment marche le
SI - (SINON) ?
Exemple DIVISION PROTEGEE :
{
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 !");
}
}
34
Simulation d’exécution du programme de Division protégée
Instruction
1- Déclaration
variables
2- Saisies
Processeur
Réservation
mémoire
Attente,
conversion,
affectation
Mémoire
& resu
&a
resu
a
5 .2
&a
a
&b
b
&b
b
0 .0
3- if
Evaluation
(b0.): FAUX
4- else{
Afficher(“Erreur”)
5- }
Erreur
FSI-FIN
35
Simulation d’exécution du programme de Division protégée
Instruction
1- Déclaration
variables
2-
Saisies
3- if
4- { resu= a/b
5- Afficher(resu)
Processeur
Réservation
mémoire
attente,
conversion,
affectation
Mémoire
& resu
&a
resu
&a
a
5.0
a
&b
&b
b
b
2.0
Evaluation
(b0.): VRAI
- calcul: 5./2.
- affectation
& resu
resu
2 .5
2.5
36
CYCLE 3 : Alternatives
Faire des choix dans un programme en C
2-AIGUILLAGE MULTIPLE sur CONDITIONS
Instruction alternative SI – SINON SI – SINON
2.1- Comment écrire l’instruction
SI - SINONSI - (SINON) ?
if { }
else if { }
2.2- Comment marche cette instruction ?
else{ }
CYCLE 3 : Alternatives
Faire des choix dans un programme en C
Instruction alternative SI – SINON SI – SINON
2.1- Comment écrire l’instruction
SI - SINONSI - (SINON) ?
if { }
else if { }
else{ }
INTRODUCTION
{
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
2.1- Comment écrire le
SI – SINON SI - (SINON) ?
/* Aiguillage en fonction d’une condition logique :
if (condition 1)
{
instructions 1;
}
else if (condition 2)
{
instructions 2;
}
...
else
{
}
instructions 3;
*/
39
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
int main()
{
2.1- Comment écrire le
SI - SINONSI - (SINON) ?
À NOTER !!
if (condition 1)
{
instructions 1;
}
else if (condition 2)
{
instructions 2;
}
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é
else
{
}
}
instructions 3;
Règle de programmation : lisibilité code
 Indentations dans les accolades
des if et du else
40
INTRODUCTION
2.1- Comment écrire le
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
SI - SINONSI - (SINON) ?
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.
41
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
2.1- Comment écrire le
SI alors - SINONSI - (SINON) ?
Exemple : DECOUPAGE D’INTERVALLES
Le programme affiche la mention obtenue à un examen
note
[0
VOIE 1
Refus
[10
VOIE 2
Passable
[12
VOIE 3
AB
[14
[16
VOIE 4
B
20]
VOIE
restante
TB
42
note
[0
[10
[12
[14
[16
20]
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)
{
// note10 et note<12
printf("Passable"); // note  [10,12[
}
else if (note < 14)
// note  10 ET note  12 ET note<14
{
// note  [12,14[
printf("AB");
}
else if (note < 16)
// note  12 ET note  14 ET note<16
{
// note  [14,16[
printf("B");
}
// note  14 ET note  16
else
{
printf("TB");
// note  16
43
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
2.1- Comment écrire le
SI alors - SINONSI - (SINON) ?
Bilan du rôle du SI - SINON SI - (SINON)
Aiguillage à plusieurs chemins :
le choix entre les blocs d’instructions dépend des valeurs combinées
des conditions logiques.
Instructions 1
Instructions 2
Instructions 3
44
CYCLE 3 : Alternatives
Faire des choix dans un programme en C
Instruction alternative SI – SINON SI – SINON
2.2- Comment marche cette instruction ?
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
2.2- Comment marche le
SI - SINONSI - (SINON) ?
Principe d’exécution du SI - SINON SI - SINON :
if (condition 1)
{
instructions 1;
logiques des if, de haut en bas.
}
else if (condition 2)
{
instructions 2;
}...
else
{
1. Le CPU évalue successivement les conditions
instructions 3;
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.
}
46
INTRODUCTION
2.2- Comment marche le
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
SI - SINONSI - (SINON) ?
Principe d’exécution du SI - SINON SI - SINON :
if (condition 1)
{
instructions 1;
condition logique 1?
FAUX
condition logique 2 ?
}
else if (condition 2)
{
else
{
VRAI
Instruc 1
Instruc 2
...
instructions 2;
}...
VRAI
FAUX
SINON
Instruc 3
instructions 3;
}
Suite du programme
47
INTRODUCTION
I)
AIGUILLAGE SIMPLE / condition
II)
AIGUILLAGE MULTIPLE / condition
2.2- Comment marche le
SI – SINONSI - (SINON) ?
Exécution du SI - SINON SI - SINON :
condition 1
Exécution instruc 1 si :
V
Exécution instruc 2 si :
F
Exécution instruc 3 si :
F
condition 2
-V
F
Le CPU n’arrive sur un else if que si les conditions
des if précédents sont FAUSSES
48
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