IFT1015, Hiver 2007

Examen Pratique

Lundi 2 avril 2007
Durée: 1h45
Professeur: Pascal Vincent

Prénom:
Nom:
Code permanent:




Premier exercice: code secret par permutation de lettres

Contraintes et indications

Contrainte: pour cet exercice, les seules méthodes de manipulaiton de chaînes de caractère (String) que vous êtes autorisés à utiliser sont:
Vous ne devrez utiliser aucune autre méthode de String ou StringUtil.

Attention, à bien des égards, une chaîne de caractère (String) est un peu comme un tableau de carctères (char []).  Mais ils diffèrent par leur utilisation, voici un rappel de quelques différences importantes entre chaîne et tableau:

But de l'exercice et explication du code par permutation

Le but de cet exercice est d'écrire un programme CodeSecret.java qui va vous permettre d'encoder et de décoder un texte avec un code de permutation de lettres.
Le programme prend en argument sur la ligne de commande une clé secrète formée d'une série d'entiers.
Puis il lit une à une des lignes entrées au clavier, permute les caractères selon les entiers de la clé, et affiche affiche la ligne ainsi codée.

Je vais commencer par expliquer l'utilisation du programme, puis le principe de fonctionnement du code et enfin préciser comment on vous demande d'écrire le programme.

Exemple d'utilisation du programme avec la clé de quatre chiffres 2 5 3 7: (les parties entrées par l'utilisateur sont en caractères de taille fixe, les parties affichées par le programme sont en taille fixe gras)

java CodeSecret 2 5 3 7
LE PETIT CHAPERON ROUGE
TLE T PHAEOPCI RERONEUG
Il etait une fois une petite fille de village, la plus jolie qu'on eut su voir;
tIl a eneti ui oiunsft  fpeelvdlete ,aie ija  gllieusplenu'ol lut e quir  soov;

Le même programme pourra être utiliser pour décoder un message ainsi codé. Il suffit de l'appeler avec les entiers de la clé dans le sens inverse.

java CodeSecret 7 3 5 2
TLE T PHAEOPCI RERONEUG
LE PETIT CHAPERON ROUGE
tIl a eneti ui oiunsft  fpeelvdlete ,aie ija  gllieusplenu'ol lut e quir  soov;
Il etait une fois une petite fille de village, la plus jolie qu'on eut su voir;

Le principe du codage est que chaque entier de la clé indique la taille (en nombre de caractères) d'un bloc de permutation des caractères.

Pour chacune de ces tailles n, on va transformer la ligne lue, en découpant la ligne en blocs de n caractères, et en inversant l'ordre des caractères dans chaque bloc.
Par exemple si on a lu la chaîne ABCDEF, une taille de bloc de 3 nous donnera deux blocs (ABC et DEF) qu'on va inverser (CBA et FED) pour donner la chaîne transformée CBAFED.
Pour une taille de bloc de 2 on aurait 3 blocs (AB, CD, EF) qu'on inverserait (BA, DC, FE) pour obtenir la chaîne transformée BADCFE
Pour une taille de bloc de 4 on aurait 2 blocs mais avec un deuxième bloc incomplet contenant seulement 2 caractères (bloc ABCD et bloc EF) qu'on inverse (DCBA, FE) et on obtient la chaîne transformée DCBAFE

On enchaîne plusieurs de ces transformations correspondant aux entiers de la clé. Ainsi pour la clé 2 5 3 7 par ex. on va transformer chaque ligne lue, d'abord avec une taille de bloc de 2, puis on retransforme le résultat avec une taille de bloc de 5, puis avec une taille de bloc de 3 puis de 7. On enchaîne donc quatre transformations correspondant aux quatres entiers de la clé.


Ce que vous devez faire

On vous demande d'écrire la classe CodeSecret.java avec les fonctions (méthodes statiques) suivantes qu'il vous est recommandé de tester au fur et à mesure que vous les écrivez!
Vous pouvez dans un permier temps tester votre code en entrant des lignes à la main (comme dans l'exemple d'utilisation ci-dessus).

Puis on vous demande d'utiliser les facilité de redirection d'entrée-sortie des shell unix pour coder et décoder un fichier complet:
On demande de faire la remise des fichiers CodeSecret.java chaperon_rouge_code.txt chaperon_rouge_decode.txt

Deuxième exercice: classes et animaux

Ecrire un fichier Animal.java dans lequel vous allez définir une classe Animal, avec les propriétés private suivantes:
Ecrivez pour cette classe les méthodes public suivantes:
Ecrivez un fichier ClasserAnimaux.java qui va contenir les méthodes suivantes:

Exemple d'exécution du programme (les parties affihées par l'ordinateur sont en caractères de taille fixe, les parties entrées par l'utilisateur sont en italique):
java ClasserAnimaux
Combien d'animaux voulez-vous saisir?
4

Entrez l'animal 1:
Espèce?
chat
Famille?
mammifère
Nombre de pattes?
4

Entrez l'animal 2:
Espèce?
aigle
Famille?
oiseau
Nombre de pattes?
2

Entrez l'animal 3:
Espèce?
requin
Famille?
poisson
Nombre de pattes?
0

Entrez l'animal 4:
Espèce?
dauphin
Famille?
mammifère
Nombre de pattes?
0


Voici la liste des mammifères:
Espèce: chat, Famille: mammifère, Nombre de pattes: 4.
Espèce: dauphin, Famille: mammifère, Nombre de pattes: 0.