GEF 243B Programmation informatique applique - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

GEF 243B Programmation informatique applique

Description:

Quelle genre de boucle devrais-je utiliser si je veux que les nonc s l'int rieur ... L' tude de la logique provient d'il y a bien longtemps en Gr ce ancienne avec Aristote ... – PowerPoint PPT presentation

Number of Views:44
Avg rating:3.0/5.0
Slides: 25
Provided by: abea7
Category:

less

Transcript and Presenter's Notes

Title: GEF 243B Programmation informatique applique


1
GEF 243BProgrammation informatique appliquée
  • Expressions logiques

2
Revue
  • 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?

3
Synopsis
  • 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

4
Logique
Les insultes sont efficaces seulement là où les
émotions sont présentes. "Who Mourns for
Adonais?" stardate 3468.1.
5
Logique (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!

6
Logique (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

7
Logique (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

8
Opé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.

9
Logique Table de vérité de lopérateur non en C
10
Logique Table de vérité de lopérateur et en C
11
Logique Table de vérité de lopérateur ou en C
12
Opé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

13
Opérateurs relationnels
14
Opérateurs relationnels
  • Les opérateurs relationnels ont des compléments

15
Opé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)
16
Optimisations 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()

18
Optimisations 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.

19
Erreurs 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

20
Erreurs 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

21
Erreurs 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)

22
Erreurs 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

23
Erreurs 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

24
Quiz 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)
Write a Comment
User Comments (0)
About PowerShow.com