Carte à puces – Bac informatique théorique 2019 [ Bac scientifique ]

Algo et Python 17-10-24
17 0

Sujet bac informatique théorique 2019 (Bac scientifique)

Une société commerciale cherche à automatiser l'accès à ces services via des cartes à puces. Chaque carte est caractérisée par un identifiant unique, une date de création et un code d'accès. Pour cela, on propose d'écrire un programme Python permettant de :

1) Stocker les identifiants de N cartes dans un tableau IDENT  (avec 3<= N <= 50), sachant que l'identifiant est une chaîne formée de 8 chiffres. 2) Stocker les dates de création de ces N cartes d'accès dans un tableau DATE, sachant qu'une date de création est une chaîne formée de deux parties : le jour J et le mois M séparés par le caractère "/" (On ne tiendra compte que des contrôles: J est un entier compris entre 1 et 31 et M est un entier compris entre 1 et 12) 3) Déterminer dans un tableau CODE les N codes à partir du tableau DATE en utilisant le principe ci-après, sachant qu'un code est une chaîne de 4 chiffres : - Concaténer J et M pour former un nombre de 2, 3 ou 4 chiffres. - Multiplier ce nombre par un entier aléatoire X compris entre 5 et 64 afin d'obtenir un nouveau nombre Y - Former le code de quatre chiffres comme suit : Si Y est un entier de 4 chiffres, déplacer le chiffre des milliers vers la droite de ce nombre. Si Y < 1000, ajouter des zéros (0) à droite de ce nombre pour que sa longueur soit égale  à 4 Si Y > 9999, additionner le nombre formé de 4 chiffres de gauche au nombre formé des chiffres restants à droite jusqu'à ce que sa longueur soit égale à 4.

4) Afficher les informations relatives à chacune des cartes sous la forme suivante :

Identifiant de la carte : Date de sa création : Code

Exemple : Pour N=3 et les deux tableaux suivants :

IDENT:

12345678 23456789 tableau 34567891

 

DATE:

8/11 2/1 24/12

 

On obtient le tableau CODE suivant:

CODE:

1108 6720 1314

 

En effet, les codes des cartes sont obtenus comme suit :

- Pour la carte N°1, la concaténation de J et M donne le nombre 811. En supposant que l'entier aléatoire X=10, le nombre obtenu est égal à 8110 (811*10) qui est composé de 4 chiffres. en déplaçant le chiffres des milliers (8) vers la droite, on obtient le code 1108.

- Pour la carte N°2, la concaténation de J et M donne le nombre 21. En supposant que l'entier aléatoire X=32 , le nombre obtenu est égal à 672(21*32) qui est < 1000. En ajoutant un zéro à droite pour que sa longueur soit égale à 4, on obtient le code 6720. - Pour la carte N°3, la concaténation de J et M donne le nombre 2412. En supposant que l'entier aléatoire X=53 , le nombre obtenu est égal à 127836(2412*53) qui est > 9999. Le nombre formé des 4 chiffres de gauche (1278) sera additionné au nombre formé des chiffres restants à droite (36), on obtient le code 1314 (1278+36).

Le programme affiche :

12345678 : 8/11 : 1108

23456789 : 2/1 : 6720

34567891 : 24/12 : 1314

Solution Algorithmique

Dans cet algorithme, On va utiliser 5 fonctions et 2 procédures:

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
ident tableau des chaînes des caractères
date tableau des chaînes des caractères
code tableau des chaînes des caractères
n entier

 

La fonction saisie_taille

Cette fonction saisit la taille du tableau entre 3 et 50.

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction verif_identifiant

Cette fonction vérifie que la chaîne est formée de 8 chiffres.

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction generer_code

Cette fonction vérifie que le nouveau identifiant est unique dans le tableau des identifiant.

Déclaration des objets

Objet Type / Nature
j entier

 

La fonction verif_date

Cette fonction vérifie que la date respecte le format J/M avec J est un entier compris entre 1 et 31 et M est un entier compris entre 1 et 12.

Déclaration des objets

Objet Type / Nature
i entier

 

La procédure remplir

Cette procédure remplit les deux tableaux IDENT et DATE respectivement par : les identificateurs et les dates de création des carte à puces.

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction generer_code

Cette fonction transforme la date de la création de la carte à puce pour obtenir un code.

Déclaration des objets

Objet Type / Nature
s entier

 

La procédure inserer_afficher_codes

Cette procédure insère les codes dans le tableau code et affiche les données de chaque carte à puce.

Déclaration des objets

Objet Type / Nature
i entier

 

Solution en Python

Exécution du programme:

Solution en Python et Designer QT

Pour créer une application en Python et Designer QT qui stocke les données des cartes à puces, on va suivre ces étapes:

1- Créer l'interface graphique avec Qt Designer

a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.

b- Ajoutez ces widgets:

QLineEdit nommé 'ch1' pour entrer les identificateurs des cartes à puces

QLineEdit nommé 'ch2' pour entrer les dates de création des cartes à puces

QPushButton nommé 'remplirid_bt' pour mettre les identificateurs des cartes à puces dans le tableau IDENT.

QPushButton nommé 'remplirdate_bt' pour mettre les dates  dans le tableau DATE.

QPushButton nommé 'afficher_bt' pour afficher la liste des identificateurs des cartes à puces ainsi que leurs dates de création et leurs codes générés.

QLabel nommé 'tabident_label' pour contenir les identificateurs des cartes à puces.

QLabel nommé 'tabdate_label' pour contenir les dates de création des cartes à puces.

QLabel nommé 'tabcode_label' pour contenir les codes des cartes à puces.

QLabel nommé 'msg' pour afficher des messages d'erreur.

QLabel nommé 'resultat' pour contenir la liste des nouveau-nés ayant une heure de naissance miroir et les nombres des nouveau-nés pour chaque type d'heure miroir.

Enregistrez le fichier avec l'extension .ui, par exemple tabtab-3.ui.

2- Créer le script Python pour l'application

Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.

Exécution du programme

1) Remplissage du tableau IDENT

2) Remplissage du tableau DATE

3) Remplissage du tableau CODE et affichage des données des cartes à puces

 

Vous pouvez voir aussi :

1) des exercices sur les chaînes des caractères

2) des exercices sur les tableaux

3) des sujets Bac pratique

4) des sujets Bac théorique

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali-Prof Info