IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

booléens et QCM


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut booléens et QCM
    Bonjour,

    je fais un QCM et j'aimerais comprendre la réponse à cette question sur les booléens.

    La question est :

    Si A et B sont des variables booléennes, laquelle de ces expressions booléennes est équivalente
    à (not A) or B ?
    Voici les différentes réponses (j'ai la réponse mais pas les explications) ::

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    A	(A and B) or (not A and B)
    B	(A and B) or (not A and B) or (not A and not B)
    C	(not A and B) or (not A and not B)
    D	(A and B) or (not A and not B)
    Si quelqu'un a une explication claire. Merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par sam01 Voir le message
    Si quelqu'un a une explication claire.
    Vous pouvez comparer la table de vérité des expressions ou simplifier les différentes expressions données pour montrer qu'une se réduit à...

    Pour le reste, dans un forum de programmation Python, on suppose que vous avez des difficultés pour coder je ne sais quoi et que vous avez déjà ce que vous avez essayé à montrer.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par sam01 Voir le message
    Si quelqu'un a une explication claire. Merci d'avance.
    Déjà les lignes A et C sautent direct, une expression sous forme "(X et TRUC) ou (NON(X) et TRUC)" devient simplement TRUC, le "X ou NON(X)" s'annule. La première ligne devient simplement "B" et la troisième ligne devient "NOT(A)". Et aucune des deux (qui ne dépend que d'une valeur donc qui n'a au final que deux "VRAI") ne peut convenir à une expression de type X OR Y du début pour laquelle on obtient toujours trois "VRAI". Ensuite la ligne D n'est pas simplifiable (elle est de type XOR ce qui donnera elle aussi alors seulement deux "VRAI"), il ne reste donc que la C à examiner. Voilà déjà comment avec simplement un peu de réflexion on a éliminé 3 des 4 possibilités. Et si le QCM assure qu'il y a une réponse correcte, on peut même s'arrêter ici.

    Ensuite si on veut être sûr alors on simplifie et effectivement la ligne C se simplifie en "NOT(A) ou B" soit par les tables de vérité, soit par calcul, le "(A and B) or (not A and B)" devient simplement "B" et si on lui rajoute ensuite "or (not A and not B)" ça donne au final B ou NOT(A) car le "and not B" étant devenu alors implicite donc inutile.

    Maintenant, comme l'a dit wiztricks, ici c'est un forum dédié à Python donc pourquoi tu n'as pas demandé à Python de te trouver la solution???

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #!/usr/bin/env python3
    # coding: utf-8
     
    def base(A, B):
    	print("A=%d, B=%d, res=%d" % (A, B, not A or B))
     
    def ligneA(A, B):
    	print("A=%d, B=%d, res=%d" % (A, B, (A and B) or (not A and B)))
     
    def ligneB(A, B):
    	print("A=%d, B=%d, res=%d" % (A, B, (A and B) or (not A and B) or (not A and not B)))
     
    def ligneC(A, B):
    	print("A=%d, B=%d, res=%d" % (A, B, (not A and B) or (not A and not B)))
     
    def ligneD(A, B):
    	print("A=%d, B=%d, res=%d" % (A, B, (A and B) or (not A and not B)))
     
    for (s, f) in (
    	("base", base),
    	("ligneA", ligneA),
    	("ligneB", ligneB),
    	("ligneC", ligneC),
    	("ligneD", ligneD),
    ):
    	print()
    	print(s)
    	for A in (False, True):
    		for B in (False, True):
    			f(A, B)
    	# for
    # for
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Salut Sve@r et merci pour ton explication.
    C'est un QCM dit "Python" pour ma fille qui est au Lycée alors je suis venu naturellement dans le forum Python sinon je ne sais pas dans quel forum aller du coup.
    Et même si j'avais réussi à le coder en Python je n'aurais pas eu l'explication. En plus c'est in QCM et pendant l'examen qui a un temps très limité les Lycéens n'ont pas le droit de coder.
    Juste une chose pour la ligne C, si je suis ton raisonne ment le B et le NOT B d'annulent. Ils ne devrait donc pas y avoir de B dans la simplification ?

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sam01 Voir le message
    sinon je ne sais pas dans quel forum aller du coup
    L'algèbre booléenne est la base de l'informatique. Et pour les langages, la base d'un langage est l'algorithmique donc le forum algo aurait été le plus adéquat.

    Citation Envoyé par sam01 Voir le message
    Juste une chose pour la ligne C, si je suis ton raisonne ment le B et le NOT B d'annulent. Ils ne devrait donc pas y avoir de B dans la simplification ?
    Le B et le NON B s'annulent quand ils sont reliés au même booléen => ex (B et X) ou (NON B et X) (X étant le même à droite et à gauche).
    Ici il y a B et (NON B et NON A). Le premier "B" peut s'écrire aussi "B et VRAI". Ca donne donc (B et VRAI) ou (NON B et NON A). On n'a pas le même "X" à droite et à gauche donc la simplification précédente est interdite.

    En revanche, avec B ou (NON B et NON A) le "NON B" est, dans ce cas précis, inutile car il est automatiquement présent quand la première partie (ici "B") est fausse donc lui il s'annule purement et simplement.
    Et si on veut le prouver avec le calcul, il suffit de développer les parenthèses, ce qui fait (B ou NON B) et (B ou NON A) ce qui donne alors VRAI et (B ou NON A) soit tout simplement B ou NON A.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par sam01 Voir le message
    Et même si j'avais réussi à le coder en Python je n'aurais pas eu l'explication. En plus c'est in QCM et pendant l'examen qui a un temps très limité les Lycéens n'ont pas le droit de coder.
    Avant de poster, on suppose que vous avez un peu cherché sur Internet et côté algèbre booléenne vous avez des cours du lycée. Et si on suppose qu'un examen (QCM ou autre) valide qu'on a compris le cours: difficile de passer à côté.

    Après si on ne peut pas coder, faire une table de vérité des différentes expressions booléenne, n'a jamais tué personne et sont aussi utiles pour "simplifier" les expressions booléennes.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre averti
    Femme Profil pro
    Enseignant
    Inscrit en
    Avril 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2021
    Messages : 28
    Par défaut
    Citation Envoyé par sam01 Voir le message
    Bonjour,

    je fais un QCM et j'aimerais comprendre la réponse à cette question sur les booléens.

    La question est :



    Voici les différentes réponses (j'ai la réponse mais pas les explications) ::

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    A	(A and B) or (not A and B)
    B	(A and B) or (not A and B) or (not A and not B)
    C	(not A and B) or (not A and not B)
    D	(A and B) or (not A and not B)
    Si quelqu'un a une explication claire. Merci d'avance.
    Le plus simple c'est de faire une table de vérité.
    A B non A ou B
    faux faux vrai
    faux vrai vrai
    vrai faux faux
    vrai vrai vrai

    Donc non A ou B équivaut à (non A et non B) ou (non A et B) ou (A et B). Le ou est commutatif donc après "traduction" en python, la bonne réponse est la deuxième.


    Maintenant, la première, (A and B) or (not A and B), ça ne dépend pas du tout de la valeur de A ("il fait beau et je prends mon parapluie, ou, il ne fait pas beau et je prends mon parapluie", dans les deux cas on prend un parapluie). (A and B) or (not A and B) équivaut à B.
    Plus rigoureusement, on peut factoriser :
    (A et B) ou (non A et B) = (A ou non A) et B
    = Vrai et B
    (A et B) ou (non A et B) = B

    La troisième, (not A and B) or (not A and not B), c'est le même raisonnement. Ici c'est de la valeur de B dont on se fiche. (not A and B) or (not A and not B) est équivalent à not A.


    La quatrième, (A and B) or (not A and not B), c'est l'équivalence. Pour que la proposition soit vrai il faut que A et B soit tous les deux vrais ou que A et B soit tous les deux faux.

    Pour information, non A ou B c'est pareil que A => B et évidement, implication et équivalence ce n'est pas la même chose. si un quadrilatère est un carré alors c'est un rectangles mais carré et rectangle ce sont deux choses différentes.

  8. #8
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Merci pour vos explications précieuses.
    Dernière question,

    si j'avais eu OR dans les parenthèses à la place de AND le raisonnement aurait été le même ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    C    (NOT A or B) or (NOT A or NOT B)
    D    (A or B) or (NOT A or NOT B)
    pour les réponses C et D ?

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par sam01 Voir le message
    Merci pour vos explications précieuses.
    Dernière question,

    si j'avais eu OR dans les parenthèses à la place de AND le raisonnement aurait été le même ?
    Si vous aviez fait le tableau de vérité, vous auriez un peu essayé de comprendre ce qu'on a tenté de vous expliquer (et trouvé tout seul la réponse à votre question).
    N'oubliez pas qu'apprendre ou comprendre, commence par mettre les mains dans le cambouis...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sam01 Voir le message
    si j'avais eu OR dans les parenthèses à la place de AND le raisonnement aurait été le même ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    C    (NOT A or B) or (NOT A or NOT B)
    D    (A or B) or (NOT A or NOT B)
    pour les réponses C et D ?
    Pourquoi les parenthèses? Au primaire on apprend l'arithmétique et les parenthèses qui servent à prioriser des opérations de rang différent. Ici avec uniquement des "or" je ne vois pas leur utilité.
    Ensuite tu réfléchiras sur le résultat de not X or not X puis sur celui de X or not X...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. booléens en mySQL
    Par nako dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 19/10/2009, 18h23
  2. 1 champ de type enum à 3 valeurs ou 2 champs booléens ?
    Par El Saigneur dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 22/01/2005, 08h53
  3. Réponses: 6
    Dernier message: 08/11/2004, 14h18
  4. lcase() traduit les booléens en francais !
    Par EvilAngel dans le forum ASP
    Réponses: 8
    Dernier message: 15/06/2004, 16h53
  5. requete sql : un vrai "et" booléen
    Par claquetteman dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/04/2004, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo