Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Examen_2024

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 4

Département Mathématiques et Informatique

Année universitaire 2023/2024


Transformation Digitale & Intelligence Artificielle 1

Examen final Session : Printemps


Nom :……………………………
Durée : 2h
Programmation Python
Prénom : …………………………..
/Programmation fonctionnelle

- Si un étudiant vient de repérer ce qui peut lui sembler être une erreur d’énoncé, il le signalera sur sa copie et
poursuivra sa composition en expliquant les raisons des initiatives qu’il a été amené à prendre.
Questions de cours :
1. Comment python résoudre le problème de conflits d’héritages multiplie
………………………………………………………………………………………………………………..
2. Quelle est la différence entre fetchall, fetchone et fetchmany
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
3. Que va afficher le code suivant
import re
phrase = "Les codes de pays sont [USA], [A], [FRA], [GBR], [CAN] et [AG]."
pattern = r'\[(\w{2,})\]'
correspondances = re.findall(pattern, phrase)
print(correspondances)
…………………………………………………………………………………………………………………
4. C’est quoi l’effet de bord :
…………………………………………………………………………………………………………………
5. La signification de l’immuabilité :
…………………………………………………………………………………………………………………
6. Citez quatre principes de la programmation fonctionnelle.
…………………………………………………………………………………………………………………

Exercice 1 :
Vous avez pour mission de développer une application qui gère la compression des images. Pour cela, vous
devez :
1. Créer une classe Pixel qui gère les couleurs de base de chaque pixel à savoir la couleur rouge (valR), la
couleur vert (valG) et la couleur bleu (valB).
⃝ Pour être conforme aux codes RGB des couleurs, on souhaitera que le constructeur vérifier les valeurs
prises par les variables valR, valG, valB de tel sort qu’elles soient comprises entre 0 et 255. Sinon,
une exception est générée.
⃝ Définie les getters et les setters de la classe pixel
Pr. RAGRAGUI Anouar
1
⃝ Surcharger l’operateur de comparaison
⃝ Surcharger la méthode qui permet d’afficher un pixel
2. Implémentez la classe Image avec les caractéristiques suivantes :
• Attributs :
⃝ width : largeur de l'image
⃝ height : hauteur de l'image
⃝ pixels : liste de pixels de la classe Pixel
• Méthodes :
⃝ Constructeur : initialise l'image avec une largeur, une hauteur, et une liste de pixels. Le constructeur
doit vérifier que le nombre de pixels dans la liste correspond à la taille de l'image (width * height).
Sinon, une exception est générée.
⃝ get_width(self) : retourne la largeur de l'image.
⃝ get_height(self) : retourne la hauteur de l'image.
⃝ Surcharger l’opérateur d'addition (+) afin de permettre la comparaison des tailles (largeur et
hauteur) de deux images. Cette fonction doit retourner True si elles ont la même taille, False sinon.
⃝ Surcharger l’opérateur de comparaison (==) pour vérifier si deux images sont égales. Deux
images sont égales si elles ont la même largeur, hauteur et liste de pixels.
⃝ Surcharger la méthode qui permet d’afficher le contenu de l'image en parcourant tous les pixels
et en affichant leurs valeurs RGB (rouge, vert, bleu).
⃝ Une méthode de classe appelée compteur_images() qui compte le nombre total de images créées
3. Exemple d'utilisation :
Code Exécution
# Création de quelques pixels Contenu de l'image 1:
p1 = Pixel(255, 0, 0) Image 2x2:
p2 = Pixel(0, 255, 0) Pixel(R: 255, G: 0, B: 0)
p3 = Pixel(0, 0, 255) Pixel(R: 0, G: 255, B: 0)
p4 = Pixel(255, 255, 0) Pixel(R: 0, G: 0, B: 255)
# Création d'une image avec ces pixels Pixel(R: 255, G: 255, B: 0)
pixels = [p1, p2, p3, p4]
image1 = Image(2, 2, pixels)
Contenu de l'image 2:
print("Contenu de l'image 1:")
Image 2x2:
print(image1)
Pixel(R: 255, G: 0, B: 0)
# Création d'une autre image identique
Pixel(R: 0, G: 255, B: 0)
image2 = Image(2, 2, pixels)
Pixel(R: 0, G: 0, B: 255)
print("\nContenu de l'image 2:")
Pixel(R: 255, G: 255, B: 0)
print(image2)
# Comparaison des images
Les images 1 et 2 : True
print("\nLes images 1 et 2 :", image1 == image2)
# Comparaison des tailles des images
Les images 1 et 2 : True

print("Les images 1 et 2 :",image1 + image2) Nombre total d'images: 2


# Compteur d'images
print("Nombre total d'images:", Image.compteur_images())

Pr. RAGRAGUI Anouar


2
Exercice 2 :
Créez une application en Python utilisant Tkinter. Notre application sera composée de deux fenêtres : la fenêtre
de connexion (login) et la fenêtre du formulaire.

1. Dans la fenêtre de connexion, l'utilisateur sera invité à saisir son nom d'utilisateur et son mot de passe
pour accéder à la fenêtre du formulaire. Pour cela :

• Créer la fenêtre de login :


⃝ Créez une fenêtre avec Tkinter de taille 300x150
⃝ Ajoutez deux champs d'entrée pour le nom d'utilisateur et le mot de passe.
⃝ Assurez-vous que le champ de mot de passe masque les caractères saisis.
⃝ Ajoutez un bouton "Login" pour valider les informations saisies. Lorsque l'utilisateur appuie sur
ce bouton, une fonction devra vérifier l'exactitude des informations d'identification fournies en
consultant la base de données. Si les données sont valide la fenêtre formulaire doit apparaitre
sinon un message d'erreur devra être affiché.

2. La fenêtre du formulaire affichera des champs pour saisir différentes informations telles que le nom, le
prénom, l'adresse e-mail, l'âge, et le genre. Une fois les informations saisies, l'utilisateur pourra les
enregistrer en appuyant le buton Enregistrer ou les initialiser en appuyant sur le bouton Initialiser.

Pr. RAGRAGUI Anouar


3
⃝ L’interface du formulaire comporte un champ pour le nom, le prénom, l’adresse e-mail, une liste
déroulante qui contient l’âge de 20 à 30 ans et deux options indiquant le genre (Femme ou Homme).

• Ajouter deux boutons :

⃝ Enregistrer" pour enregistrer les informations saisies dans une base de données. Affichez un
message de confirmation une fois que les données ont été correctement enregistrées dans la
base de données et les champs doivent être vider. Si les champs sont vide un message
d’avertissement doit être afficher

⃝ Initialise : qui vide les champs du formulaire.

Indication :
• Les noms des classes, des attributs et des méthodes doivent commencer par votre nom pour les deux
exercices
• Pour l’exercice 1, créer une base donnée et les tables en respectant les informations suivantes :
# Connexion à la base de données
conn = {
'host': "localhost",
'user': "TDIA",
'password': "123456",
'database': "UserDatabase",
}
• Créer la table utilisateur_pw en utilisant la requête suivante :
CREATE TABLE utilisateurs_pw (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(255) NOT NULL,
mot_de_passe VARCHAR(255) NOT NULL
);
• Créer la table utilisateurs :
CREATE TABLE utilisateurs (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(255) NOT NULL,
prenom VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
age INT NOT NULL,
genre VARCHAR(10) NOT NULL
);

Pr. RAGRAGUI Anouar


4

Vous aimerez peut-être aussi