Vous êtes sur la page 1sur 9

TP1 : Maths discrète

par l’étudiant Samuel Ouya

Méthodologie de travail : installation de texmaths sous Linux

1- on installe le compilateur latex pour pouvoir écrire de formules scientifiques


apt install latex209-base

2- on telecharge l’extension texmaths de libreoffice


3- aller dans l’onglet outils de libreoffice et on choisit extensions, ajout et on parcourt notre pc pour
choisir l’extension téléchargée
4- on ferme libreoffice et on le relance

Il s’agit de vérifier les formules :

1+2+ +n=

et

Pour cela, nous allons créer 4 fonctions python

1- fonction somme_noireau(n) qui calcule 1+2+ +n

2- fonction somme_blanco(n) qui retourne

3- fonction sommecarre_noireau(n) qui calcule

4- fonction sommecarre_blanco qui retourne

Travail à faire :
comparer les resultats donnés par les fonctions noireau et ceux donnés par ls fonctions blanco

Resultats
Tp1

code de notre programme


def somme_noireau(n):
result=0
for i in range(1,n+1):
result=result+i
return result

def somme_blanco(n):
return (n*(n+1)/2)

def sommecarre_noireau(n):
result=0
for i in range(1,n+1):
result=result+i*i
return result

def sommecarre_blanco(n):
return (n*(n+1)*(2*n+1)/6)

n=input("Donner la valeur de n: ")


n=int(n)
result1=sommecarre_noireau(n)
result2=sommecarre_blanco(n)
print(f"Voici le resultat donne par sommecarre_noireau: {result1} et le resultat donne par
sommecarre_blanco : {result2}")

resultats obtenus

root@membre:~/tp1maths# python3 tp1.py


Donner la valeur de n5
Voici le resultat donne par somme_noireau: 15 et le resultat donne par somme_blanco : 15.0
root@membre:~/tp1maths# python3 tp1.py
Donner la valeur de n10
Voici le resultat donne par somme_noireau: 55 et le resultat donne par somme_blanco : 55.0
root@membre:~/tp1maths# vim +24 tp1.py
root@membre:~/tp1maths# python3 tp1.py
Donner la valeur de n5
Voici le resultat donne par sommecarre_noireau: 55 et le resultat donne par sommecarre_blanco :
55.0
root@membre:~/tp1maths# python3 tp1.py
Donner la valeur de n10
Voici le resultat donne par sommecarre_noireau: 385 et le resultat donne par sommecarre_blanco :
385.0
root@membre:~/tp1maths# vim +24 tp1.py
root@membre:~/tp1maths# python3 tp1.py
Donner la valeur de n :10
Voici le resultat donne par sommecarre_noireau: 385 et le resultat donne par sommecarre_blanco :
385.0
root@membre:~/tp1maths# vim +24 tp1.py
root@membre:~/tp1maths# python3 tp1.py
Donner la valeur de n: 10
Voici le resultat donne par sommecarre_noireau: 385 et le resultat donne par sommecarre_blanco :
385.0
Conclusion

Ce TP de maths discrete m’a permis :


• de me familiariser avec les formules des sommes de n premiers entiers non nuls et de leur
carrée
• de m’initier au langage python
• de faire les entrées sorties en python , input print
de faire le formatage de phrase en python grâce à l’utilisation de f avant « » et les valeurs des
variables entre {}
• de savoir écrire des fonctions en python et les appeler
• de savoir utiliser la boucle pour i allant de 1 à n grâce à range(1,n+1)
• de comprendre l’intérêt de maîtriser vim quand on programme en python

Cours 3 : maths discrètes

Rappels sur le cours théorique :

Dans la première séance du cours il y a 2 semaines, on a abordé :

• la définition d’un ensemble


• les opérations sur les ensembles telles que : réunion,
intersection,complémentarité,différence symétrique
• le principe du raisonnement par récurrence
• théorème de Morgan
Si A et B sont deux sous ensembles d’un même ensemble E, alors on a :

• la définition d’une application f d’un ensemble E vers un ensemble F


• la définition d’une image directe d’un sous ensemble de E par f
• la définition de l’image réciproque d’un sous ensemble de F par f
• la définition d’une application injective
• la définition d’une application surjective
• la définition d’une application bijective
• le théorème liant les ensembles et les applications
si f est une application de l’ensemble E vers l’ensemble F, A et B deux sous ensembles de E ,
et C et D deux sous ensembles de F alors on a :
avec égalité si f est injective

Activités pédagogiques pour mieux comprendre :


• le théorème de Morgan et ses application en TIC
• l’intérêt des applications mathématiques en informatique
• comment utiliser les tableaux en python
• comme traduire repeter action jusqu’à condition en :
en langage C
en python

Problème 1 : Applications du théorème de Morgan en programmation

Probleme1.1 :
On vous demande d’écrire l’algo Max_tableau permettant d’afficher l’indice du grand élément M
du tableau T des réels de taille n ainsi que M lui même

solution

Algo Max_tableau
Données : n ,T
résultats : , M
Debut

repeter
si T[i] < =M alors i
sinon
debut
M

fin
jusqu’à ce que i=n+1
Afficher(« l’indice du plus grand element est : », )
Afficher(« le grand élément est : »,T[ ])

FIN

Problème 2 : Soit un tableau à une entrée T de taille n contenant des réels, trouver l’indice du
premier élément négatif du tableau T
Algo indice_du_premier_element_negatif
Données : n,T
Resultat : l’indice du premier élément négatif ou prend -1 si tous les éléments du tableau sont
positifs ou nuls

Debut

repeter
si T[i] >=0 alors i
jusqu’à ce (T[i] < 0) ou (i=n+1)

si i < =n alors
si > 0 alors afficher(‘la position vaut :’, )
sinon alors afficher(‘Tous les éléments du tableau sont positifs ou nuls’)
Fin

NB : les tableaux en python sont appelés des listes


Mon site préféré apprendre python doctor :

En C ou en python, il n’y pas de :

repeter
action
jusqu’à ce que (condition)

En C, il ya quelque chose qui nous nous permet d’interpréter répéter jusquà ce que

do {
action
}
while(conditioncontraire)

NB : si condition= cond1 ou cond2


alors on fera :

do {
action
}
while(noncond1 et noncond2)
En python on traduira :

répéter
action
jusqu’à ce que condition

par :

while True :
action
if(condition) :
break

Exemple
Soit l’algo qui doit afficher des entiers de 0 à 10 suivant :

i=0
Repeter
afficher(i)
i=i+1
jusqu’à ce que (i=11)

code en python essai.py

i=0
while True:
print(i)
i=i+1
if(i>10):
break

Probleme 1 en python maxtab.py

n=7
T=[4,2,7,1,-4,19,13,8]
M=T[0]
i0=0
i=1
while True:
if(T[i]<=M):
i=i+1
else:
M=T[i]
i0=i
i=i+1

if(i==n+1):
break
print(f"l'indice du plus grand element est : {i0}")
print(f"Le plus grand element est : {T[i0]}")

code python probleme 2 indice.py

n=7
T=[4,2,7,-1,4,19,13,8]
i0=-1
i=0
while True:
if(T[i]>=0):
i=i+1
if(T[i]<0 or i==n):
break
if(i<n):
i0=i
if(i0>0):
print(f"La position du premier element negatif est: {i0}")
else:
print(f"Tous les elements du tableau sont positifs ou nuls")

Passons aux tests de nos 2 programmes python

NB : les indices d’une liste en python comme par 0

Modifions le tableau comme suit :


Testons :

Mon programme marche

Probleme3 : Tp sur les applications

On considère les 3 tables de schémas respectifs :

• client(id,prenom,nom,adresse,telephone)
• produit(id,nomproduit)
• commande(id,idclient,idproduit,quantite)

On suppose que dans la table commande il y a n enregistrements,

on considère la relation f qui va de l’ensemble E des id des commandes dans l’ensemble F des id
des clients

1- cette relation est -elle une application ?


Réponse : oui car chaque commande a un propriétaire et une commande ne peut pas avoir deux
propriétaires

2- f est elle injective ?


Réponse : non, car un client peut faire plusieurs commandes ; donc chaque idcommande de ces
commandes va avoir comme image l’id du client
3- f est elle surjective ?
Réponse : Non car un client peut ne pas commander donc son id n’aura pas d’antecedent

4- Si on considère maintenant F comme l’ensemble formé id des clients ayant commandé, f est elle
dans ce cas surjective ?

Oui car chaque id dans F correspond à au moins une commande

Mais cette application f n’est pas bijective car un client peut faire plusieurs commandes

Conclusion du cours du 13 Avril


• Le cours de maths nous dote de logique pour developper des competences en algo,
programmation et en base de données
• Nous avons elargi notre connaissance en python en utilisant les listes, while, et if, if else

Vous aimerez peut-être aussi