Fonctions ET, OU, NON.
La fonction Et est une fonction de {0;1}⨯{0;1} dans {0;1} définie par :
- Et(0,0)=0
- Et(0,1)=0
- Et(1,0)=0
- Et(1,1)=1
La fonction Ou est une fonction de {0;1}⨯{0;1} dans {0;1} définie par :
- Ou(0,0)=0
- Ou(0,1)=1
- Ou(1,0)=1
- Ou(1,1)=1
La fonction Non est une fonction de {0;1} dans {0;1} définie par :
Donner une expression algébrique des fonctions Et, Ou, Non. Définir les fonctions python correspondantes.
def Et(a,b) :
return a*b
def Ou(a,b) :
return a+b-a*b # penser à P(A union B)=P(A)+P(B)- P(A inter B)
def Non(a) :
return 1-a
def tableUneVar(f) :
""" f est une fonction de {0;1} dans {0;1}.
tableUneVar imprime la table de valeurs de f."""
for a in (0,1) :
print("{}({}) = {}.".format(f.__name__,a,f(a)) )
print()
def tableDeuxVar(f) :
""" f est une fonction de {0;1}x{0;1} dans {0;1}.
tableDeuxVar imprime la table de valeurs de f."""
for a in (0,1) :
for b in (0,1) :
print("{}({},{}) = {}.".format(f.__name__,a,b,f(a,b)) )
print()
tableUneVar(Non)
tableDeuxVar(Et)
tableDeuxVar(Ou)
Ce qui donne :
Non(0) = 1.
Non(1) = 0.
Et(0,0) = 0.
Et(0,1) = 0.
Et(1,0) = 0.
Et(1,1) = 1.
Ou(0,0) = 0.
Ou(0,1) = 1.
Ou(1,0) = 1.
Ou(1,1) = 1.
Fonctions ET, OU, XOR.
a et b étant deux variables de type int, min(a,b)
retourne le plus petit des nombres a et b
et max(a,b)
retourne le plus grand.
La fonction Xor (ou exclusif)) est une fonction de {0;1}⨯{0;1} dans {0;1} définie par :
- Xor(0,0)=0
- Xor(0,1)=1
- Xor(1,0)=1
- Xor(1,1)=0
Définir les fonctions Et, Ou, Xor à l'aide des fonctions min et max. Donner le code python correspondant.
def Et(a,b) :
return min(a,b)
def Ou(a,b) :
return max(a,b)
def Xor(a,b) :
return max(a,b)-min(a,b)
def tableDeuxVar(f) :
""" f est une fonction de {0;1}x{0;1} dans {0;1}.
tableDeuxVar imprime la table de valeurs de f."""
for a in (0,1) :
for b in (0,1) :
print("{}({},{}) = {}.".format(f.__name__,a,b,f(a,b)) )
print()
tableDeuxVar(Xor)
tableDeuxVar(Et)
tableDeuxVar(Ou)
Xor(0,0) = 0.
Xor(0,1) = 1.
Xor(1,0) = 1.
Xor(1,1) = 0.
Et(0,0) = 0.
Et(0,1) = 0.
Et(1,0) = 0.
Et(1,1) = 1.
Ou(0,0) = 0.
Ou(0,1) = 1.
Ou(1,0) = 1.
Ou(1,1) = 1.
Fonction XOR.
a étant une variable de type int ou float, abs(a)
est la valeur absolue de a.
Définir la fonction Xor à l'aide de la fonction abs. Donner le code python correspondant.
def Xor(a,b) :
return abs(a-b)
def tableDeuxVar(f) :
""" f est une fonction de {0;1}x{0;1} dans {0;1}.
tableDeuxVar imprime la table de valeurs de f."""
for a in (0,1) :
for b in (0,1) :
print("{}({},{}) = {}.".format(f.__name__,a,b,f(a,b)) )
print()
tableDeuxVar(Xor)
Xor(0,0) = 0.
Xor(0,1) = 1.
Xor(1,0) = 1.
Xor(1,1) = 0.
Fonction Equiv.
La fonction Equiv (équivalence) est une fonction de {0;1}⨯{0;1} dans {0;1} définie par :
- Equiv(0,0)=1
- Equiv(0,1)=0
- Equiv(1,0)=0
- Equiv(1,1)=1
Donner une expression algébrique de la fonction Equiv. Donner un code python de cette fonction.
On remarque que Equiv(a,b)=Non(Xor(a,b)).
On a donc Equiv(a,b)= 1-Xor(a,b).
def Equiv(a,b) :
return 1-abs(a-b)
def tableDeuxVar(f) :
""" f est une fonction de {0;1}x{0;1} dans {0;1}.
tableDeuxVar imprime la table de valeurs de f."""
for a in (0,1) :
for b in (0,1) :
print("{}({},{}) = {}.".format(f.__name__,a,b,f(a,b)) )
print()
tableDeuxVar(Equiv)
Equiv(0,0) = 1.
Equiv(0,1) = 0.
Equiv(1,0) = 0.
Equiv(1,1) = 1.
Fonction Impliq.
La fonction Impliq (implication, si ... alors...) est une fonction de {0;1}⨯{0;1} dans {0;1} définie par :
- Impliq(0,0)=1
- Impliq(0,1)=1
- Impliq(1,0)=0
- Impliq(1,1)=1
- Vérifier que pour tous booléens a et b, on a Impliq(a;b)=non(a) ou b (c'est à dire Ou(Non(a);b) avec les fonctions
précédemment définies).
-
Donner un code python de cette fonction Impliq.
-
Écrire une fonction python prenant en entrée deux fonctions de {0;1}⨯{0;1} dans {0;1}
et retournant True ou False suivant que les deux fonctions données en argument sont égales ou non.
Utiliser cette fonction pour confirmer l'égalité des fonctions Impliq et (a;b) ⟼ Ou(Non(a);b).
Pour vérifier l'égalité de deux fonctions de {0;1}⨯{0;1} dans {0;1}, il suffit de vérifier que les quatre couples
(0;0), (0;1); (1;0); (1;1) ont la même image par les deux fonctions.
Dressons pour cela la table des valeurs de la fonction définie par f(a;b)=Ou(Non(a);b) :
Une table de vérité
a | b | non(a) | non(a) ou b |
0 | 0 | 1 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | 1 | 0 | 1 |
Cette table est bien identique à celle qui définit notre fonction Impliq.
On peut également utiliser python pour dresser cette table :
def Ou(a,b) :
return max(a,b)
def Non(a) :
return 1-a
def Impliq1(a,b) :
""" fonction Impliq définie à partir
des fonctions Ou et Non."""
return Ou(Non(a), b)
def tableDeuxVar(f) :
""" f est une fonction de {0;1}x{0;1} dans {0;1}.
tableDeuxVar imprime la table de valeurs de f."""
for a in (0,1) :
for b in (0,1) :
print("{}({},{}) = {}.".format(f.__name__,a,b,f(a,b)) )
print()
tableDeuxVar(Impliq1)
Ce qui donne :
Impliq1(0,0) = 1.
Impliq1(0,1) = 1.
Impliq1(1,0) = 0.
Impliq1(1,1) = 1.
Vérification à l'aide de python de l'égalité de Impliq et (a;b) ⟼ Ou(Non(a);b) :
def Ou(a,b) :
return max(a,b)
def Non(a) :
return 1-a
def Impliq1(a,b) :
""" fonction Impliq définie à partir
des fonctions Ou et Non."""
return Ou(Non(a), b)
def Impliq2(a,b) :
""" Définition de l'énoncé de la fonction
Impliq."""
if (a,b)==(0,0) : return 1
if (a,b)==(0,1) : return 1
if (a,b)==(1,0) : return 0
if (a,b)==(1,1) : return 1
def EgaliteFonctionsDeuxVar( f, g) :
""" retourne True ssi les fonctions f et g
(fonctions de B*B dans B)
sont égales."""
for a in (0,1) :
for b in (0,1) :
if f(a,b)!=g(a,b) :
return False
return True
print(EgaliteFonctionsDeuxVar( Impliq1, Impliq2) )