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 :
Non(0)=1
Non(1)=0
Donner une expression algébrique des fonctions Et, Ou, Non. Définir les fonctions python correspondantes.
Une solution de l'exercice "Fonctions ET, OU, NON".
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)
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.
Une solution de l'exercice "Fonctions ET, OU, XOR".
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)
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.
Une solution de l'exercice "Fonction XOR".
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)
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.
Une solution de l'exercice "Fonction Equiv".
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)
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).
Une solution de l'exercice "Fonction Impliq".
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) :
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)
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) )