next up previous contents index
suivant: Le programme C++ monter: Le codage Jules César précédent: Les différentes étapes du   Table des matières   Index

Le programme Xcas

codec2n(c):={
if (c=="é") return 100;
if (c=="è") return 99;
if (c=="à") return 98;
if (c=="ç") return 97;
if (c=="ù") return 96;
if (c=="ê") return 95;
return(asc(c)-32);
};

coden2c(k):={
if (k== 100) return "é";
if (k==99) return "è";
if (k==98) return "à";
if (k==97) return "ç";
if (k==96) return "ù";
if (k==95) return "ê";
return(char(k+32));
};

jules_cesar(message,clef):={
local s,j,messcode;
s:=size(message);
messcode:="";
for (j:=0;j<s;j++) {
messcode:=append(messcode,
                 coden2c(irem(clef+codec2n(message[j]),101)));
}
return (messcode);
};

lineaire(message,clef):={
local s,j,messcode;
s:=size(message);
messcode:="";
for (j:=0;j<s;j++) {
messcode:=messcode+coden2c(irem(clef*codec2n(message[j]),101));
}
return (messcode);
};
codec2n transforme un caractère c "autorisé" en un entier n, 0 $ \leq$ n < 101 selon la table 7.6.1.
coden2c transforme un entier n, 0 $ \leq$ n < 101 en un caractère c selon la table 7.6.1.
jules_cesar (respectivement lineaire) code le message selon la clé choisie. On remarquera que les deux fonctions ne diffèrent que par l'opération effectuée :
clef+codec2n(message[j]) pour la fonction jules_cesar et
clef+codec2n(message[j]) pour la fonction lineaire.
Pour décoder, il suffit d'employer le même programme en utilisant la clef de décodage associée à la clef de codage et à la méthode utilisée : par exemple, pour jules_cesar de clef de codage 99 la clé de décodage associée est 2 ( 2 + 99 = 101 = 0 mod 101) et
pour lineaire de clef de codage 99 la clef de décodage associée est 50 puisque 99*50 = - 2*50 = - 100 = 1 mod 101.



Documentation de giac écrite par Renée De Graeve