- IN220, TP n°2 -
>
Gérer des caractères |
|
En Java, une variable de type char permet de décrire un caractère d'une langue quelconque ou un symbole (ponctuation, symbole monétaire, ...). Chaque caractère est représenté par un nombre, et il est possible de réaliser des opérations sur les caractères. Par exemple, 'a' plus trois donne le caractère 'd', 'B' plus un donne le caractère 'C', et '3' (pas l'entier trois, mais le caractère qui représente le chiffre trois) plus cinq donne '8'. Pour afficher la valeur numérique correspondant à un caractère (et ainsi voir comment le caractère est codé dans Java), on convertit le caractère en int. |
|
1) Dans votre fonction main, déclarez une variable de type char, initialisez la à '3' (le caractère trois), et affichez la à l'écran (le caractère trois doit s'afficher). Affichez la valeur numérique associée à ce caractère en le convertissant, lors de l'affichage, en int (placez le mot clef int entre parenthèses devant votre variable lors de son affichage à l'écran). |
|
2) Dans la même fonction, créez un second caractère initialisé à '5' (le caractère cinq), et affichez le à l'écran. Affichez aussi sa valeur numérique. |
|
3) Dans la même fonction, déclarez un troisième caractère, égal à la somme des deux précédents. Affichez le caractère ainsi que sa valeur numérique. Qu'en concluez-vous ? |
|
4) Voici un morceau de code à recopier dans votre main :
|
> Lire des caractères dans un fichier, codage de Cesar | |
Téléchargez les fichiers FichierLecture.java, FichierEcriture.java et entree.txt (clic-droit, puis enregistrer-sous). Dans la suite, nous allons lire des fichiers caractère par caractère, et écrire dans un fichier de sortie. |
|
1) Le code suivant permet d'ouvrir le fichier entree.txt, le lire caractère par caractère, et écrire chacun des caractères dans un fichier sortie.txt.
Testez cette fonction, que constatez-vous ? |
|
2) La fonction ci-après permet de tester si un caractère est une lettre. Utilisez la dans le code précédent afin de n'écrire, en sortie, que des lettres (pas de ponctuation).
|
|
3) Vous devez maintenant écrire une fonction permettant de chiffrer les lettres d'un texte selon le code de Cesar, qui consiste à choisir un entier i et décaler toutes les lettres du message de i places. Par exemple, si i vaut 5, alors a devient f, b devient g, ... Attention, votre décalage doit "boucler" dans l'alphabet, c'est à dire que z deviendra e. Si dans votre fichier de sortie, vous avez des symboles étranges qui sont apparus, alors c'est raté... Voici comment procéder pour faire le décalage. Les caractères de type "lettre" lus dans le fichier ont une valeur compris entre 97 et 122. Vous devez, pour réaliser le bouclage, retirer 97 à la valeur du caractère, puis ajouter le décalage et faire un modulo 26 (le nombre de lettres de l'alphabet - l'opération modulo s'écrit %). Enfin, vous devrez revenir à une lettre comprise entre 97 et 122 en rajoutant 97 à votre valeur. Par exemple, si je souhaite appliquer un décalage de 5 et que ma lettre est x, voici ce qui se passera :
|