Algorithmique & Programmation Classe : 4eme SI
Série d’exercices Graphiques QT
Application N°1 :
Un grand nombre de produits cosmétiques sur le marché ne sont pas toujours représentés par des marques
originales. Le danger guette non seulement dans les points de vente douteux, mais aussi dans les grandes
chaînes de magasins. Tout acheteur ne sera pas content d'acheter un faux. Dans ce contexte, on veut rédiger un
algorithme qui permet de vérifier l’authenticité d’un produit.
Un produit est caractérisé par :
Nom : chaine alphabétique qui commence Multipliez la somme obtenue par 3 :
par une lettre majuscule et ne dépasse pas 11*3=33.
10 caractères Trouver la somme des chiffres aux endroits
Code-barres : chaine numérique de 13 pairs, à l'exclusion du dernier chiffre de
chiffres contrôle : 5+9+0+7+7+0=28.
Type : "hygiène", "maquillage", "parfum", Additionnez maintenant les deux sommes
"soin", "solaire" obtenues aux points 1 et 3 : 33+28=61.
Genre : "Homme", "Femme" Retirez les dizaines de la valeur obtenue
Exemple : un produit cosmétique ayant un code- (dans ce cas, 6 dizaines). Le numéro 1 reste.
barres est composé de chiffres : 5391017076009. Soustrayez le nombre déduit 1 de 10 : 10-
Pour vérifier l’originalité du parfum, on suit le 1=9.
principe suivant : Comparez la valeur obtenue avec le chiffre
Additionnez tous les chiffres aux endroits de contrôle : 9=9.
impairs : 3+1+1+0+6+0=11. Alors on confirme l’authenticité du produit
On se propose de concevoir une interface graphique contenant les objets suivants :
Un label contenant le texte : "Authenticité des produits cosmétiques"
Un label contenant le texte : " Produit ".
Un label contenant le texte : " Code-barres"
Un label contenant le texte : " Type" Une zone de saisie permettant la saisie du nom du produit.
Un label contenant le texte : " Genre"
Une zone de saisie permettant la saisie du code-barres.
Une liste déroulante contenant "hygiène", "maquillage", "parfum", "soin", "solaire"
Deux cases à cocher portant le nom " Homme" et " Femme"
Une Table Widget pour afficher la liste des produits.
Une list Widget pour afficher les produits authentiques.
Un bouton intitulé "Ajouter".
Un bouton intitulé "Afficher".
Un bouton intitulé "Quitter".
Un bouton intitulé "vérifier".
Interface résultat
Prof : HAOUARI Ramzi Page 1 sur 7
Algorithmique & Programmation Classe : 4eme SI
T.A.F :
1. Créer et enregistrer l’interface graphique dans votre dossier de travail sous le nom "[Link]"
2. Créer et enregistrer le fichier ‘"[Link]"dans votre dossier de travail, dans lequel vous allez
implémenter les modules suivants :
- Le module "ajout" qui s’exécute suite à un clic sur le bouton " Ajouter" et permettant si toutes
les contraintes sont respectées de créer un produit et l’ajouté au fichier "[Link]" et d’afficher
un message de confirmation.
- Afficher un message d’erreur dans le cas où les contraintes ne sont pas respectées.
- Le module "affiche" qui s’exécute suite à un clic sur le bouton "Afficher" qui permet d’afficher
la liste des produits.
- Le module "verif" qui s’exécute suite à un clic sur le bouton "vérifier" qui permet d’afficher la
liste produits authentiques.
Prof : HAOUARI Ramzi Page 2 sur 7
Algorithmique & Programmation Classe : 4eme SI
Application N°2 : GESTION DES MOTS DE PASSE
Pour sécuriser l’accès à un laboratoire de recherche médical, le directeur du laboratoire veut affecter à
chaque chercheur un mot de passe qui lui permet d’accéder à ce laboratoire en le tapant dans une
machine de vérification de l’identité de la personne.
Soit un fichier texte ″[Link]″ contenant les numéros des cartes d’identité des chercheurs : un numéro par
ligne (chaque numéro est une chaîne numérique de longueur égale 8 qui commence par 0 ou 1).
On se propose de former un mot de passe pour chaque numéro selon le principe suivant :
1- Former une matrice M de taille L * 8 par le code ascci de chaque chiffre (L = le nombre de lignes du
fichier).
2- Concaténer les cases d’une ligne de la matrice pour trouver un nombre NB.
3- Convertir ce nombre décimal vers une base (binaire, octale ou hexadécimal), la chaîne trouvé désigne le
mot de passe correspondante.
Les résultats sont stockés dans un fichier d’enregistrements ″[Link]″, chaque enregistrement est formé par
trois champs :
Prof : HAOUARI Ramzi Page 3 sur 7
Algorithmique & Programmation Classe : 4eme SI
Cin : numéro de la carte d’identité à prendre du fichier ″[Link]″.
Base : la base à utiliser pour la conversion (à prendre de la liste déroulante).
Passe : résultat de la conversion selon le principe décrit précédemment (la méthode par soustraction).
Pour cela, On se propose de concevoir une interface graphique contenant les éléments suivants :
• Un label contenant le texte : " GESTION DES MOTS DE PASSE".
• Un label contenant le texte : ″Saisir un CIN″
• Un bouton intitulé "Ajouter [Link]" permettant d’ajouter un numéro de CIN dans le fichier
"[Link]".
• Une case à cocher ″Afficher [Link]″.
• Une ListWidget pour afficher le contenu du fichier "[Link]".
• Un bouton intitulé "Crypter et former [Link] " permettant de :
Remplir et afficher la matrice.
Former le fichier [Link].
• Une liste déroulante (ComboBox) contenant les valeurs suivantes :
2
8
16
• Une première TableWidget pour afficher le contenu de la matrice.
• Un bouton intitulé "Afficher [Link]" permettant d’afficher le fichier ″[Link]″.
• Une deuxième TableWidget pour afficher le contenu du fichier binaire.
Travail demandé :
Compléter l’interface graphique "interface_gestion_psw.ui " par les éléments présentés précédemment
comme illustrée dans la figure suivante :
Ouvrir le fichier nommé "gestion_psw.py" situé dans votre dossier de travail dans lequel vous apportez
les modifications suivantes :
1) Compléter les instructions de la partie exploitation de l’interface graphique par les informations
nécessaires à l’appel de l’interface "interface DC3 4si [Link] " et aux différents modules développés.
2) Développer le module "Ajouter", qui s’exécute suite à un clic sur le bouton "Ajouter [Link]", et
permettant d’ajouter, lorsque toutes les contraintes sont respectées, un numéro de CIN dans le fichier
"[Link]" et dans le cas contraire, afficher un message d’alerte via un QMessageBox.
Si la case à cocher ″Afficher [Link]″ est sélectionnée, afficher le contenu du fichier [Link]"
dans la ListWidget correspondante.
Prof : HAOUARI Ramzi Page 4 sur 7
Algorithmique & Programmation Classe : 4eme SI
3) Développer le module "Crypter", qui s’exécute suite à un clic sur le bouton "Crypter et former
[Link]", permettant :
De remplir et afficher (dans la TableWidget correspondante) la matrice des codes ascii.
De former le fichier ″[Link]″ (la base à utiliser pour la conversion à choisir à partir de
la liste déroulante).
4) Développer le module "Afficher", qui s’exécute suite à un clic sur le bouton "Afficher [Link]"
permettent d’afficher le fichier ″[Link]″ dans la TableWidget correspondante.
Exemples d’exécution :
Prof : HAOUARI Ramzi Page 5 sur 7
Algorithmique & Programmation Classe : 4eme SI
Application N°3 :
Soit le fichier de données "[Link]" contenant des informations des clients d’une banque. Chacun de ces
derniers est un enregistrement composé de cinq champs :
Code Client : composé de 8 chiffres.
Nom : composé de lettres alphabétiques majuscules (minimum 4).
Prénom : composé de lettres alphabétiques majuscules (minimum 4).
Compte : courant ou épargne.
Mot de passe : à générer selon le principe décrit ci-dessous.
On se propose de concevoir une interface graphique contenant les objets suivants :
- Un label contenant le texte : "Générateur des mots de passe"
- Un label contenant le texte : " Code Client ".
- Un label contenant le texte : " Nom"
- Un label contenant le texte : " Prénom"
- Une zone de saisie permettant la saisie du code client.
- Une zone de saisie permettant la saisie du nom du client.
- Une zone de saisie permettant la saisie du prénom du client.
- Un bouton radio nommé "Compte Courant " coché par défaut.
- Un bouton radio nommé " Compte Epargne ".
- Un bouton intitulé " Générer mot passe ".
- Un bouton intitulé "Afficher les clients".
- Une table widget pour l’affichage du contenu du fichier "[Link]".
Travail demandé :
1- Créer et enregistrer l’interface graphique dans votre dossier de travail sous le nom ‘’[Link]’’
2- Créer et enregistrer le fichier ‘’[Link]’’ dans votre dossier de travail, dans lequel vous allez
implémenter les modules suivants :
Le module "generer", qui s’exécute suite à un clic sur le bouton " Générer mot passe", et permettant si
toutes les contraintes sont respectées de créer un mot de passe pour le client, ajouter ce dernier au fichier
"[Link]", et d’afficher un message d’erreur sinon.
Prof : HAOUARI Ramzi Page 6 sur 7
Algorithmique & Programmation Classe : 4eme SI
Contrainte Message en cas d’erreur
Le code client doit être numérique composé de 8
chiffres
Nom : composé de lettres alphabétiques
majuscules (minimum 4).
Prénom : composé de lettres alphabétiques
majuscules (minimum 4).
NB : En cas d’erreur, le champ correspondant doit être vidé.
Pour créer un mot de passe on doit suivre ces étapes :
On commence avec une chaîne Ch issue de la concaténation des 4 premières lettres du nom avec les 4
premières lettres du prénom. Chaque caractère de Ch donne un équivalent selon le principe suivant, la
concaténation de ces équivalents donne un mot de passe :
o Si le caractère est entre "A" et "F", on applique la conversion de cette lettre dans la base 8
donnant la valeur p, le résultat sera la lettre ayant p comme position dans l’alphabet français
majuscule (Exp la conversion de "A" dans la base 8 donne la valeur 12, la lettre correspondante
est "L".
o Si le caractère est entre "G" et "I", son équivalent dans le mot de passe est sa position dans
l’alphabet français majuscule. Exp : l’équivalent de "I" est "9".
o Si le caractère est entre "J" et "Z", on cherche en premier lieu le plus grand diviseur premier du
code ASCII de ce caractère, d, puis on convertit d en son équivalent dans la base 16. Exp : si le
caractère est "M" son code ASCII est 77, le plus grand diviseur premier de 77 est d=11, enfin
l’équivalent de d dans la base 16 est la lette "B".
Le mot de passe généré pour la chaîne Ch="MNAHAAET" est mp= "BDL8LLP7".
Le module "afficher", qui s’exécute suite à un clic sur le bouton " Afficher les clients", permettant
d’afficher le contenu du fichier "[Link]" dans la table widget.
Prof : HAOUARI Ramzi Page 7 sur 7