GEF 243B Programmation informatique appliquée Flot de contrôle et énoncés de sélection §
21-Jan-14 2 JGA Beaulieu Revue Quelles sont les trois opérateurs logiques en C? Quelle est la précédence entre eux? Comment applique-t-on la règle de DeMorgan aux expressions logiques
21-Jan-14 3 JGA Beaulieu Synopsis Contrôle du flot if-else else-if Expressions conditionnelles Switch
21-Jan-14 4 JGA Beaulieu Structures du langage et contrôle du flot Les première abstractions que les scientifiques en informatique ont devisé ont été les structures de langage. Au lieu davoir continuellement à réécrire le même code pour contrôler le flot dun programme en langage symboliques (assembleur), les langages de haut niveau nous fournissent des structures réutilisables Dans les années 1960, Edsger Dijkstra a noté que nous avons seulement besoin de trois structures: La séquence, le if-else et la boucle while
21-Jan-14 5 JGA Beaulieu Énoncé if-else Différent de MATLAB!! if (expression logique) Statement else Statement
21-Jan-14 6 JGA Beaulieu Énoncé if-else Exemple (avec un énoncé composé) if (taxable == TRUE) { itemTaxable++; prix *= tauxTaxe; //tauxTaxe 1.15 } else itemNonTaxable++;
21-Jan-14 7 JGA Beaulieu Énoncé else-if C na pas de structure pour un énoncé else-if, mais vous pouvez obtenir le même résultat avec le style if (note>=90) grade = A; else if (note >= 80) grade = B; else if (note >= 70) grade = C; else if (note >= 60) grade = D; else grade = F;
21-Jan-14 8 JGA Beaulieu Énoncé else-if Utilisez un énoncé else-if seulement si vous voulez faire des comparaisons sur une seule variable qui a une possibilité de plusieurs valeurs avec des plages pour les catégories (pas des valeurs intégrales) Ne lutilisez pas si vous avez des conditions multiples (i.e. évaluation de plusieurs variables). Ce que vous faites dans ce cas est simplement dimbriquer vos énoncés if-else.
21-Jan-14 9 JGA Beaulieu Expression conditionnelle C nous offre une alternative commode à lénoncé if-else traditionnel pour les sélection à deux choix lexpression conditionnelle: expression1 ? expression2 : expression3 Si expression1 est vrai, expression2 est la valeur de lexpression conditionnelle, sinon, la valeur est lexpression3
21-Jan JGA Beaulieu Expression conditionnelle Ex.: a = 1, b = 2, c = 5 a == b ? c-- : c++; //ici c = 6 a != b ? c-- : c++; //ici c = 4 a >= b ? c+=b : c-=b ; //quest c?
21-Jan JGA Beaulieu Énoncé switch Mais que faisons nous si nous avons quelque chose comme cela: if (flag == 0) {faitChose0} else if (flag == 1) {faitChose1} else if (flag == 2) {faitChose2} else if (flag == 3) {faitChose3} else if (flag == 4) {faitChose4} else {faitAutreChose} Utilisez un énoncé switch
21-Jan JGA Beaulieu Énoncé switch Switch est une généralisation de lénoncé if-else. Encore comme Java: switch (expression logique) { case constante1: énoncé1; //notez les énoncés énoncé2; //multiples break; case constante2: énoncé3; break; //sort après ce cas default: énoncé4; } //switch
21-Jan JGA Beaulieu Quiz Time Quelles sont les trois concepts que les humains utilisent pour faire face à la complexité dans la résolution des problèmes? Quel genre de décomposition utilise-t-on dans les langages structurels comme C?
21-Jan JGA Beaulieu Problèmes de révision 1 Assumez que gazRestant est une variable réel qui estime le montant de gaz dans votre réservoir Donnez un énoncé qui va allumer lindicateur presqueVide ( bool ) si il reste moins de 2 litres de gaz
21-Jan JGA Beaulieu Problèmes de révision 2 Testez la phase theta et vérifiez si cest zéro double theta Utilisez un structure if else pour vous assurez que: –PI <= theta <= PI
21-Jan JGA Beaulieu Problèmes de révision 3 Il y a des étudiants en GE, GI, et SI dans GEF243 Définissez une constante pour chaque groupe détudiant en utilisant un #define Déclarez une variable pour compter le nombre détudiants dans chaque groupe et initialisez la à zéro Utilisez un énoncé switch pour incrémenter le compteur pour le bon groupe Si un groupe inconnu est entré, incrémentez le compte des erreurs #define GE 0 //un exemple int groupeEtudiants = 0; //la variable à tester