Cryptage messages – Bac théorique – Section informatique – 2011

Bac Info 19-12-25
7 0

Sujet (Algo et programmation - Bac 2011)

Dans le cadre de la réalisation d'un projet scientifique, deux chercheurs résidants dans deux pays différents, s'échangent des données sur Internet. Pour assurer la confidentialité de leur projet, les messages &changes sont cryptes.

Le message initial  se compose au maximum de 50 lignes et chaque ligne contient 50 caractères au maximum. Ce message est stocke dans un fichier texte intitule « Txtinit.txt » sur la rapine du lecteur C.

En supposant que ce texte est déjà saisi, on se propose de créer un deuxième fichier texte intitule « TxtCryp.txt » contenant le message qui sera crypte, de la manière suivante :

Première étape :

Remplir une matrice d'entiers MC par les codes ASCII (en base 10) des caractères du message initial. Chaque ligne de la matrice contiendra les codes ASCII des caractères d'une ligne du fichier « TxtInit.txt ».

Le nombre de lignes de la matrice MC est egal au nombre de lignes du fichier « Txtinit.txt » et le nombre de colonnes de la matrice MC est egal a la longueur (long_max) de la plus longue ligne du fichier.

Pour les lignes avant une longueur inferieure a long_max, on complète les cases restées vides par le code ASCII du caractère espace (qui est égal a 32).

Deuxième étape :

Convertir, dans la même matrice, tous les éléments de MC en base 8.

Troisième étape :

Stocker dans « TxtCryp.txt », les colonnes de la matrice MC, de la colonne la plus a gauche a la colonne la plus a droite. Chaque colonne de la matrice MC occupera une ligne et les éléments de cette ligne seront séparés par le caractère espace.

Travail demandé :

1. Analyser le problème en le décomposant en modules et en déduire L'algorithme programme principal.

2. Analyser chacun des modules envisages précédemment et en déduire les algorithmes correspondants.

 

Solution Algorithmique

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

- la fonction saisie_n()

- la fonction saisie_ch()

- la procédure remplir_fichierTxtInit()

- la procédure remplir_matrice_mc()

- la procédure afficher_matrice_mc()

- la fonction decimal_vers_base8()

- la procédure remplir_matrice_mc_base8()

- la procédure remplir_fichierTxtCryp()

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier
long_max entier
m matrice des entiers

 

La fonction saisie_n

Cette procédure permet de saisir un entier compris strictement entre deux bornes inf et sup, en contrôlant la validité de la saisie.

Plus précisément :

il demande à l’utilisateur d’entrer un entier n tel que 0 < n < 50. si la valeur saisie n’appartient pas à cet intervalle, le programme redemande la saisie jusqu’à obtenir une valeur correcte. une fois la saisie valide, la fonction retourne l’entier n.

Déclaration des objets

Objet Type / Nature
n chaîne

 

La fonction saisie_ch

La fonction saisie_ch permet de saisir une chaîne de caractères valide dont la longueur est comprise entre 1 et 50 caractères.

Elle demande à l’utilisateur de saisir une chaîne.

Elle vérifie la longueur de la chaîne saisie.

Tant que la chaîne est vide ou dépasse 50 caractères, la saisie est redemandée.

Une fois la chaîne valide, elle est retournée par la fonction.

Déclaration des objets

Objet Type / Nature
ch chaîne

 

La procédure remplir_fichierTxtInit

La procédure remplir_fichierTxtInit permet de remplir le fichier texte TxtInit.txt avec n chaînes de caractères saisies au clavier.

Elle ouvre le fichier TxtInit.txt en mode écriture.

Elle demande à l’utilisateur de saisir n chaînes (à l’aide de la fonction saisie_ch).

Elle détermine et mémorise la longueur maximale des chaînes saisies dans la variable globale long_max.

Elle écrit chaque chaîne sur une ligne du fichier.

Elle ferme le fichier après la fin de l’écriture.

Déclaration des objets

Objet Type / Nature
i entier
long_max entier (variable globale)

La procédure remplir_matrice_mc

La procédure remplir_matrice_mc permet de remplir la matrice mc à partir du contenu du fichier TxtInit.txt.

Elle lit toutes les lignes du fichier texte.

Chaque chaîne lue est traitée caractère par caractère.

Chaque caractère est converti en son code ASCII et stocké dans la matrice mc.

Si une chaîne est plus courte que la longueur maximale long_max, les cases restantes de la ligne sont complétées par le code ASCII 32 (espace).

La matrice obtenue contient ainsi des lignes de longueur uniforme correspondant aux codes ASCII des caractères des chaînes.

Déclaration des objets

Objet Type / Nature
i entier
f fichier
lignes chaîne
ligne chaîne
ch chaîne
j entier

 

La procédure afficher_matrice_mc

La procédure afficher_matrice_mc permet d’afficher à l’écran le contenu de la matrice mc.

Elle parcourt chaque ligne de la matrice (jusqu’à n lignes).

Pour chaque ligne, elle affiche tous les éléments jusqu’à long_max colonnes, séparés par deux espaces.

Après chaque ligne, elle effectue un retour à la ligne pour que l’affichage soit lisible sous forme de matrice.

Déclaration des objets

Objet Type / Nature
i entier
j fichier
long_max entier (variable globale)

 

La fonction decimal_vers_base8

La fonction saisie_ch permet de saisir une chaîne de caractères valide dont la longueur est comprise entre 1 et 50 caractères.

Elle demande à l’utilisateur de saisir une chaîne.

Elle vérifie la longueur de la chaîne saisie.

Tant que la chaîne est vide ou dépasse 50 caractères, la saisie est redemandée.

Une fois la chaîne valide, elle est retournée par la fonction.

Déclaration des objets

Objet Type / Nature
octal chaîne
reste chaîne

 

La procédure afficher_matrice_mc_base8

La procédure remplir_matrice_mc_base8 permet de convertir tous les éléments de la matrice mc de la base décimale (10) vers la base 8.

Elle parcourt chaque ligne et chaque colonne de la matrice jusqu’à n lignes et long_max colonnes.

Pour chaque élément, elle applique la fonction decimal_vers_base8 pour transformer le code ASCII (décimal) en sa valeur en base 8.

Après l’exécution de cette fonction, la matrice mc contient donc les codes ASCII des caractères sous forme octale.

Déclaration des objets

Objet Type / Nature
i entier
j fichier
long_max entier (variable globale)

 

La procédure remplir_fichierTxtCryp

La procédure remplir_fichierTxtInit permet de remplir le fichier texte TxtInit.txt avec n chaînes de caractères saisies au clavier.

Elle ouvre le fichier TxtInit.txt en mode écriture.

Elle demande à l’utilisateur de saisir n chaînes (à l’aide de la fonction saisie_ch).

Elle détermine et mémorise la longueur maximale des chaînes saisies dans la variable globale long_max.

Elle écrit chaque chaîne sur une ligne du fichier.

Elle ferme le fichier après la fin de l’écriture.

Déclaration des objets

Objet Type / Nature
i entier
long_max entier (variable globale)

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