Message décrypté – Bac théorique – Section informatique – 2012

Bac Info 22-12-25
35 0

Sujet (Algo et programmation - Bac 2012)

Etant donné un fichier texte intitulé "MsgCrypte.txt" contenant un texte crypté d'un message formé de N lignes, où chaque ligne représente un mot crypté.

Le principe du cryptage est le suivant :

1- Chaque mot est crypté caractère par caractère.

2- Chaque caractère est crypté par sa représentation binaire, sur 8 bits, de son code ASCII.

On se propose:

1- de décrypter les lignes du fichier "MsgCrypte.txt" pour obtenir tous les mots formant le message initial,

2- d'afficher le texte décrypté, en séparant les mots par des espaces.

Exemple :

Pour N = 4 et le contenu du fichier "MsgCrypte.txt" suivant :

01000010 0110000101100011

01101001011011100110011001101111

011010100 11101010110100101101110

00110010001100000011000100110010

Après décryptage, le programme affichera le message suivant : Bac info juin 2012

Notons que, le code ASCII du caractère "B" (le premier caractère du premier mot) est 66, dont la représentation binaire est 01000010 (les huit premiers bits de la première ligne du fichier "MsgCrypte.txt").

N.B Le candidat n'est pas appelé à créer le fichier "MsgCrypte.txt".

Travail à faire :

1- Analyser le problème en le décomposant en modules.

2- Analyser chacun des modules envisagés: -

 

Solution Algorithmique

Dans cet algorithme, On va utiliser cinq fonctions et deux procédures:

- la fonction saisie()

- la fonction verif_octets()

- la fonction saisie_octet()

- la procédure remplir_fichier_MsgCrypte()

- la fonction exposant()

- la fonction conversion_caractere()

- la procédure decrypter_Msg()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction saisie

Cette fonction permet de saisir un entier strictement positif au clavier.

Plus précisément :

Elle demande à l’utilisateur de saisir un nombre entier.

Elle vérifie la validité de la saisie en s’assurant que le nombre est strictement supérieur à 0.

Tant que la valeur saisie est nulle ou négative, la fonction redemande la saisie.

Une fois une valeur correcte saisie, la fonction la retourne pour être utilisée dans la suite du programme.

Déclaration des objets

Objet Type / Nature
n chaîne

 

La fonction verif_octets

Cette fonction permet de vérifier la validité d’une chaîne binaire représentant des octets.

Plus précisément :

Elle vérifie que la longueur de la chaîne est un multiple de 8, condition nécessaire pour former des octets.

Elle vérifie que tous les caractères de la chaîne sont des bits valides, c’est-à-dire uniquement '0' ou '1'.

Si ces deux conditions sont respectées, la fonction retourne Vrai.

Sinon, elle retourne Faux.

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction saisie_octet

Cette fonction permet de saisir une chaîne binaire valide composée d’octets (8 bits).

Plus précisément :

Elle demande à l’utilisateur de saisir une chaîne de caractères binaires.

Elle vérifie la validité de la chaîne en appelant la fonction verif_octets.

Tant que la chaîne saisie ne respecte pas les règles des octets (longueur multiple de 8 et caractères uniquement 0 ou 1), la fonction redemande la saisie.

Une fois une chaîne correcte saisie, la fonction la retourne.

Déclaration des objets

Objet Type / Nature
ch chaîne

 

La procédure remplir_fichier_MsgCrypte

Cette procédure permet de créer et remplir le fichier MsgCrypte.txt avec des chaînes binaires cryptées.

Plus précisément :

- Elle crée le fichier MsgCrypte.txt en mode écriture.

- Elle demande à l’utilisateur de saisir n chaînes binaires valides, chacune représentant des caractères codés sur 8 bits.

- Chaque chaîne saisie est écrite sur une ligne du fichier.

- Une fois les n lignes écrites, le fichier est correctement fermé.

Déclaration des objets

Objet Type / Nature
f fichier
i entier

La fonction exposant

Cette fonction permet de calculer la puissance d’un nombre.

Plus précisément :

Elle calcule la valeur de n élevé à la puissance e.

Le calcul est réalisé à l’aide d’une boucle de multiplications successives.

Le résultat du calcul est ensuite retourné par la fonction.

Déclaration des objets

Objet Type / Nature
i entier
exp entier

La fonction conversion_caractere

Cette fonction permet de convertir un octet binaire (8 bits) en caractère ASCII.

Plus précisément :

Elle transforme une chaîne binaire représentant un octet en sa valeur décimale.

Cette conversion est effectuée en additionnant les puissances de 2 correspondant aux bits égaux à 1.

Une fois le code ASCII obtenu, elle est converti en caractère à l’aide de la fonction chr.

Le caractère correspondant est ensuite retourné.

Déclaration des objets

Objet Type / Nature
code_ascii entier
i entier

 

La procédure decrypter_Msg

Cette fonction permet d’identifier et d’afficher les zones de concentration du chiffre 1 dans la matrice m.

Plus précisément :

La matrice est découpée en sous-matrices de taille dn × dn.

La fonction parcourt chaque sous-matrice à l’aide des indices i et j.

Pour chaque zone, elle calcule le nombre de 1 en utilisant la fonction nbr_occurences1.

Si ce nombre est supérieur ou égal au degré de concentration minimum deg_min, la zone est considérée comme une zone de concentration.

Les coordonnées de la zone (ligne et colonne de départ) ainsi que le nombre de 1 sont affichées.

Un compteur numero_case permet de numéroter les zones trouvées.

À la fin, le programme affiche le nombre total de zones de concentration détectées.

Déclaration des objets

Objet Type / Nature
f fichier
message chaîne
ligne chaîne
bits chaîne
octet chaîne
i entier

 

Solution en Python

Exécution du programme

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