Travaux pratiques

Transcription

Travaux pratiques
Devoir
à rendre début janvier
Exercice 1 : le code de César
Le code de César est la méthode de cryptographie la plus ancienne communément admise par
l'histoire. Il consiste en une substitution mono-alphabétique, où la substitution est définie par
un décalage de lettres.
Par exemple, si on remplace A par D, on remplace B par E, C par F, D par G, etc...
Le décalage est circulaire. par exemple Z sera remplacé par C, Y par B.
Les caractères non alphabétiques ne sont pas codés.
Donnons un exemple à partir de ce décalage de 3 lettres :
Texte original :
JE LEVAI LES YEUX VERS LE SOLEIL IL ETAIT BAS ; DANS MOINS D'UNE HEURE
IL ARRIVERAIT JUSTE AU-DESSUS DES BRANCHES SUPERIEURES DU VIEUX
CHENE.
Texte codé :
MH OHYDL OHV BHXA YHUV OH VROHLO LO HWDLW EDV ; GDQV PRLQV
G'XQH KHXUH LO DUULYHUDLW
MXVWH DX-GHVVXV GHV EUDQFKHV VXSHULHXUHV GX YLHXA FKHQH.
Question 1 : codage simplifié
Tous les caractères, quels qu'ils soient sont codés, puis décodés.
Écrire un programme java qui réalise le codage simplifié d’une chaîne de caractères et affiche
la nouvelle chaîne obtenue après codage.
Le programme décode ensuite la chaîne codée, on doit retrouver la chaîne initiale qu’on
affichera.
Note : tout caractère (char) peut être ″ casté″ en un entier correspondant à son code ASCII
(int)'b' = 98
(char)98 = 'b'
Rappel : la ligne de commande est un tableau de chaînes de caractères
Question 2 : codage de César
Ecrire un programme Java qui prend sur la ligne de commande :
 une chaîne de caractères (uniquement des caractères majuscules ou de
ponctuation)
 un entier (entre 1 et 25) qui représentera le décalage de lettres que l'on veut
utiliser
et affiche la nouvelle chaîne obtenue après codage par la méthode de César.
Idée : le type char inclut bon nombre d'alphabets et caractères spéciaux. Pour se limiter aux
lettres majuscules et ponctuations et espace, on emploiera les formule suivante :
- pour le codage
soit t la variable contenant l'unicode du caractère à coder, d la variable contenant la
valeur du décalage, a la variable contenant l'unicode de 'A'. L'unicode du nouveau
caractère est obtenu par la formule :
t = (t-a+d)%26 + a
- pour le décodage
soit v la variable contenant l'unicode du caractère à décoder, d la variable contenant la
valeur du décalage, a la variable contenant l'unicode de 'A'. L'unicode du nouveau
caractère est obtenu par la formule :
v = (v+a+d)%26 + a
Question 3
Ecrire la fonction inverse de décodage, afficher la chaîne obtenue après décodage.
Exercice 2 : exploration minière
On dispose de données obtenues par lecture infrarouge, d'une portion de désert où la présence
d'un gisement d'or est suspectée. Ces données devraient permettre de délimiter un éventuel
gisement aurifère.
Chaque portion du désert est représentée par une matrice 8*8.
A chaque élément de la matrice correspond une donnée.
Une donnée supérieure à la moyenne de ses points limitrophes (situés aux 4 points cardinaux)
indique la présence d'or.
Un point de coordonnées (i,j) aura pour points limitrophes les points de coordonnées : (i-1,j),
(i+1,j), (i,j-1), :(i,j+1).
Exemple : M[2][3] = 45
Moyenne = (24+46+30+35)/4= 33
Il y a présence d’or au point de coordonnées (2,3)
Le relevé sur lequel est basé cette étude est le suivant :
21
21
22
22
23
23
23
23
21
22
23
23
24
24
24
25
22
23
24
24
25
25
25
26
30
30
45
35
36
37
25
27
40
45
46
46
46
39
26
28
21
21
47
47
49
48
25
29
34
37
38
38
37
36
26
30
45
40
39
38
36
35
25
31
Ce relevé initialisera un tableau le données.
On suppose que la redondance est suffisante pour ne pas se préoccuper des points situés au
bord de la grille.
Le programme est chargé d'afficher la carte du gisement sous la forme d'une matrice
représentant la région explorée dans laquelle les données supérieures à la moyenne sont
indiquées par le caractère '*' et les autres points par le caractère '-'.
************* Société ExplOr ***********
------- Carte du gisement aurifère ---0
0
1
2
3
4
5
6
7
-1-2-3-4-5-6-7
----------------------*---*---*---*-*-*-----------*-*-----*---*-*-*---------*---*--------------------------------
Question 1
Construire la classe Java principale de ce programme. On effectuera une analyse descendante
du problème, ce qui se traduira par l'introduction de fonctions avec paramètres.
Question 2 (facultatif)
Insérer les commentaires en vue de la génération d’une page de documentation de votre
programme au format html.
Format général des commentaires appliqués aux classes et/ou méthodes :
/**
* les commentaires prennent place
*
*/
Les principales balises :
pour commenter une classe
/**
* description de ma classe
* @author mon nom
* @version n° de version
*/
public class MaClasse{ …
pour commenter une m éthode
/**
* description de ma classe
* @param param1 description
* @param param2 description
* @return description de la
*/
int maMethode( float param1,
du 1er paramètre
du 2ème paramètre
valeur retournée
String param2 ){ …
Pour une information complète :
http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
Pour une information plus restreinte mais en français :
http://developpeur.journaldunet.com/tutoriel/jav/030117jav_javadoc1.shtml

Documents pareils