Title: GEF 243B Programmation informatique applique
1GEF 243BProgrammation informatique appliquée
2Revue
- Quelle genre de boucle devrais-je utiliser si je
veux que les énoncés à lintérieur soient
exécutés au moins une fois? - Quelle est la différence entre continue et break?
3Synopsis
- Logique
- Opérateurs conditionnels
- Opérateurs logiques
- Opérateurs relationnels
- Expressions logiques
- Optimisations du code avec les expressions
conditionnelles - Erreurs communes dans les structures de contrôle
du flot
4Logique
Les insultes sont efficaces seulement là où les
émotions sont présentes. "Who Mourns for
Adonais?" stardate 3468.1.
5Logique (logic)
- Létude de la logique provient dil y a bien
longtemps en Grèce ancienne avec Aristote - Beaucoup de concepts en mathématique moderne sont
dues à lélaboration des syllogismes (un mot bien
bizarre) par Aristote - Touts les humains sont mortel
- Les élofs sont humain
- Vous allez tous mourir!
6Logique (logical)
- Dans la vie nous posons souvent des questions qui
peuvent avoir plusieurs réponses - Quelle est cette couleur?
- Comment fiable est-ce que cest?
- Pourquoi trouvez-vous cela plate?...
- Ces questions sont bonnes pour la consommation
par les humains, mais un ordinateur ne comprend
que deux choses - on-off
- 0-1
- vrai-faux
7Logique (logical)
- Un morceau dinformation est dit logique si il
indique lidée de vrai ou faux - Une expression logique doit se réduire à une
valeur simple de vrai ou faux - On se souvient que C na pas de type logique
(booléen) les programmeurs en C utilisent des
autres types (int et char) pour représenter les
données logiques
8Opérateurs logiques
- En C il y a trois opérateurs logiques.
- Écoutez apprenez ! cest votre choix.
- ! Opérateur non (pas)
- Opérateur logique et
- Opérateur logique ou
- Les opérateurs sont listés en ordre de précédence.
9Logique Table de vérité de lopérateur non en C
10Logique Table de vérité de lopérateur et en C
11Logique Table de vérité de lopérateur ou en C
12Opérateurs relationnels
- Les opérateurs logiques sont la colle qui garde
les expressions logiques ensembles. - Les expressions logiques sont crées à partir des
relations entre les données - Par exemple, vous pouvez relier deux entiers
ensemble en demandant - Est-ce que les entiers sont égales?
- Est-ce que un entier est plus grand que lautre?
- Est-ce que un entier est le même ou plus petit?
- Il y a six opérateurs relationnels en C
13Opérateurs relationnels
14Opérateurs relationnels
- Les opérateurs relationnels ont des compléments
15Opérateurs relationnels
- Les opérateurs logiques ont aussi leurs
compléments La règle de De Morgan - Si vous avez une expression du type !() et que
vous voulez enlever le non, vous appliquez le! à
chaque sous expression et vous prenez le
complément
!( x y !z t !u )
(!x !y) z (!t u)
16Optimisations du code avec les expressions
logiques
- Dans certains langages, lexpression logique
entière dune boucle ou une sélection est évaluée
avant que la décision soit prise (Pascal, Ada,
Cobol,) - En C, lexpression est évaluée de la gauche vers
la droite et aussitôt que la condition nécessaire
est évaluée, et le reste de lexpression ne lest
pas - Ceci est plus vite, mais programmeur fait
attention!!!
17- include ltstdio.hgt
- include ltconio.hgt
- void main(void)
-
- int test10, test20
- int rouge1, bleue1
- if( (test1rouge)0 (test2bleue)0 )
- printf("Le test évalue à faux")
- printf("La valeur test1 est d et test2 est
d", test1, test2) - getch()
-
18Optimisations du code avec les expressions
logiques
- Côté positif Ceci peut vous permettre
doptimiser votre code si vous placez les
conditions en ordre dans lequel elles sont le
plus probables - Côté négatif Si vous avez des effets secondaires
dans une condition (, --), et que cette
condition nest pas évaluée, alors les effets
secondaires ne seront pas exécutés.
19Erreurs communes dans les structures de contrôle
de flot
- Comme vous pouvez le voir sur la dernière diapo,
il y a un potentiel pour des erreurs de logique
dans les expressions logiques. - En déboguant, le plus difficile est de trouver
les erreurs de logique. Pourquoi? - Et bien cest parce que vous êtes déjà convaincu
que vous aviez raison en premier lieu! - Dans le prochain cours nous allons discuter des
organigrammes (flowcharts) comme une façon de
voir votre logique - Aujourdhui nous discutons des erreurs de logique
communes
20Erreurs communes dans les structures de contrôle
de flot
- La boucle brisée
- Une condition que vous voulez qui se produise
narrivera jamais. Par exemple si a ne peut
jamais être plus grand que z alors vous avez une
boucle infinie - while (a lt z)
- Une erreur de logique grossière. Une idée
brisée - while (a gt b a b) //exécute jamais
- for (i 1 i lt 20 i--) //arrête jamais
21Erreurs communes dans les structures de contrôle
de flot
- Une erreur en ponctuation
- for (i 1 i lt 100 i)
- if (a lt b)
- Une erreur dans lutilisation de lopérateur
(erreur logique) - for (i 1 i 10 i)
- while (a b c)
- Une erreur dans la comparaison des floats (a et b
sont floats - if (a b)
22Erreurs communes dans les structures de contrôle
de flot
- Loublie dune mise à jour dans une condition de
boucle - while (a lt b)
-
- //a ne change jamais dans la boucle
-
- Pas assez je voulais faire dix itérations
- for (i1 i lt10 i) //9 itérations
23Erreurs communes dans les structures de contrôle
de flot
- Mettre trop souvent à jour une condition
- While (i ! 13)
-
- i //met i to 1, 3, 5, , 13
-
- i //met i to 2, 4, 6, , 14 // (13 ne se
produira jamais) -
- for (i 1 i lt 10 i)
-
- i //Probablement une erreur
24Quiz Time
- Quel est léquivalent positif de
- !( x (y gt z) !t v )
- !( y !(y ! z) (v gt t))
- Quel est le problème avec ces boucles?
- for (i 1 ilt10 i--)
- while (x gt y y gt x)