490 likes | 624 Views
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.
E N D
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 • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition DONNEES en Entrée Pourquoi les instructions Alternatives ? PROGRAMME
INTRODUCTION • AIGUILLAGE SIMPLE / condition • 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
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition DONNEES en Entrée Pourquoi les instructions Alternatives ? PROGRAMME TRAITEMENT
INTRODUCTION • AIGUILLAGE SIMPLE / condition • 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
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition DONNEES en Sortie (résultats du programme) DONNEES en Entrée Pourquoi les instructions Alternatives ? PROGRAMME TRAITEMENT
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition Pourquoi les instructions Alternatives ? DECLARER les DONNEES (Variables et/ou Constantes) Exécution LINEAIRE Très limitée INITIALISER des Variables 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
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition Pourquoi les instructions Alternatives ? 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
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition COMMENT ECRIRE les INSTRUCTIONS POUR PRENDRE en COMPTE un CHOIX POSSIBLE ? • Si le client n’a pas droit a réduction : calcul standard • Si le client a droit à réduction : autre calcul Pourquoi les instructions Alternatives ? si réduction si pas réduction CALCUL 2 CALCUL 1 ? PLUSIEURS CHEMINS avec AIGUILLAGES
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition Pourquoi les instructions Alternatives ? ALTERNATIVES AIGUILLAGE SIMPLE Avec CONDITION AIGUILLAGE MULTIPLE Avec CONDITION SI (droit à réduction) alors Calcul 1 SINON SI (pas droit à réduction) Calcul 2 FSI SI (droit à réduction) alors Calcul 1 SINON Calcul 2 FSI
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition Les expressions logiques donnent une valeur VRAIE ou FAUSSE : elles serviront donc à faire du raisonnement dans le programme. Les conditions logiques 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
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition Les conditions logiques Expression logique a≠b a==b c<b NON(a) b ET c • Pour les conditions • Opérateurs Logiques • a, b, c : tous les types • Résultat : VRAI/FAUX
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition Les conditions logiques Opérateurs LOGIQUES Opérateurs BOOLEENS Opérateurs de COMPARAISON
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition Les conditions logiques Opérateurs logiques comparaison booléen
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition expression1 expression2 expression1 OU expression2 FAUX FAUX FAUX FAUX VRAI VRAI VRAI FAUX VRAI VRAI VRAI VRAI Les conditions logiques Les opérateurs Logiques BOOLEENS OU
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition expression1 expression2 expression1 ET expression2 FAUX FAUX FAUX FAUX VRAI FAUX VRAI FAUX FAUX VRAI VRAI VRAI Les conditions logiques Les opérateurs Logiques BOOLEENS ET
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition expression NON(expression) VRAI FAUX FAUX VRAI Les conditions logiques Les opérateurs Logiques BOOLEENS NON
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition QUE VAUT l’expression Logique ? 3.5 r d 30. Les conditions logiques 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.) r==3.5 NON(r==3.5) d>30. VRAI FAUX FAUX FAUX
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 • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition else OPTIONNEL 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; } */ }
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition PAS de ; à la fin du if(condition) et du else 1.1- Comment écrire l’instruction SI - (SINON) ? 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
INTRODUCTION • AIGUILLAGE SIMPLE / condition • 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.
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition aiquillage à 2 voies 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); }
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition filtre, protection des calculs 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); }
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition Instructions 1 Instructions 2 Condition VRAIE Condition FAUSSE 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.
CYCLE 3 : Alternatives Faire des choix dans un programme en C Instruction alternative SI - SINON 1.2- Comment marche cette instruction ?
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition 1.2- Comment marche le SI - (SINON) ? Principe d’exécution du SI - SINON : if (condition) { instructions 1; } else { instructions 2; } • Si la condition logiqueest VRAIE, lesinstructions 1 du if sontexécutées. • Si la condition logiqueest FAUSSE, le CPU exécute les instructions 2 du else.
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition condition logique ? FAUX VRAI Bloc d’instructions 1 Bloc d’instructions 2 1.2- Comment marche le SI - (SINON) ? Principe d’exécution d’une instruction SI - SINON : if (condition) { instructions 1; } else { instructions 2; } Suite du programme
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition condition logique ? FAUX VRAI Bloc d’instructions 1 1.2- Comment marche le SI - (SINON) ? Principe d’exécution d’une instruction SI : if (condition) { instructions 1; } Suite du programme
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition INSTRUCTION PROCESSEUR 1- if évaluation condition logique :VRAI 2- { exécution bloc d’instructions 1 3- } suite du programme après la fin du SI INSTRUCTION PROCESSEUR 2- else{ exécution bloc d’instructions 2 1- if évaluation condition logique :FAUX 3- } suite du programme après la fin du SI 1.2- Comment marche le SI - (SINON) ? Simulations d’exécution du SI - SINON :
Démo division protégée DivisionProtégée.exe Le programme effectue une division protégée : • CAS 1 : diviseur non nul • CAS 2 : diviseur nul
INTRODUCTION • AIGUILLAGE SIMPLE / condition • 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 !"); } }
Instruction Processeur Mémoire 1- Déclaration variables Réservation mémoire Attente, conversion, affectation 2- Saisies 3-if Evaluation (b0.):FAUX 4- else{ Afficher(“Erreur”) Erreur Simulation d’exécution du programme de Division protégée 5- } FSI-FIN
Instruction Processeur Mémoire 1- Déclaration variables Réservation mémoire attente, conversion, affectation 2- Saisies a b &a &b 5.0 2.0 3-if Evaluation (b0.):VRAI - calcul: 5./2. - affectation 4- { resu= a/b 5- Afficher(resu) 2.5 Simulation d’exécution du programme de Division protégée
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 { } else{ } 2.2- Comment marche cette instruction ?
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 • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition else OPTIONNEL 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; } */
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition 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é 2.1- Comment écrire le SI - SINONSI - (SINON)? À NOTER !! int main() { if (condition 1) { instructions 1; } else if (condition 2) { instructions 2; } else { instructions 3; } } Règle de programmation : lisibilité code • Indentations dans les accolades des if et du else
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition 2.1- Comment écrire le 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.
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition note [0 [10 [12 [14 [16 20] 2.1- Comment écrire le SI alors - SINONSI - (SINON)? • Exemple : DECOUPAGE D’INTERVALLES Le programme affiche la mention obtenue à un examen VOIE restante TB VOIE 3 AB VOIE 4 B VOIE 2 Passable VOIE 1 Refus
note [0 [10 [12 [14 [16 20] aiquillage à 5 voies floatnote;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 }
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition Instructions 1 C1 Vrai C1 Faux et C2 Vrai Instructions 2 Instructions 3 C1 Faux et C2 Faux 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.
CYCLE 3 : Alternatives Faire des choix dans un programme en C Instruction alternative SI – SINON SI – SINON 2.2- Comment marche cette instruction ?
INTRODUCTION • AIGUILLAGE SIMPLE / condition • 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; } else if (condition 2) { instructions 2; }... else { instructions 3; } • Le CPU évalue successivement les conditions logiques des if, de haut en bas. • Dès qu’une condition est VRAIE, le CPU exécute les instructions associées. • A la fin de cette exécution, le CPU sort du SI. • Si aucune condition n’est VRAIE, le CPU exécute le dernier else.
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition FAUX VRAI condition logique 2 ? condition logique 1? Instruc 1 Instruc 2 FAUX SINON VRAI Instruc 3 Suite du programme 2.2- Comment marche le SI - SINONSI - (SINON)? Principe d’exécution du SI - SINON SI - SINON : if (condition 1) { instructions 1; } else if (condition 2) { instructions 2; }... else { instructions 3; } ...
INTRODUCTION • AIGUILLAGE SIMPLE / condition • AIGUILLAGE MULTIPLE / condition Le CPU n’arrive sur un else if que si les conditions des if précédents sont FAUSSES 2.2- Comment marche le SI – SINONSI - (SINON)? Exécution du SI - SINON SI - SINON : condition 1 condition 2 Exécution instruc 1 si : V -- Exécution instruc 2 si : F V Exécution instruc 3 si : F F
découpage d'intervalle RésultatsExamen 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