3-1-5 «Code secret de César - Exemple de fonctions imbriquées» - Script PHP exécutable en ligneInitiation à la programmation avec le langage PHP, §3 Sous-programmes et tableaux |
|
Vers 50 avant J. C., César codait les messages qu'il envoyait à Cicéron de la manière suivante: les espaces entre les mots et les signes de ponctuation étaient supprimés; chaque lettre du texte était remplacée par une autre au moyen de la table suivante (rotation de 3 à droite opérant sur les 26 lettres de l'alphabet): ABCDEFGHIJKLMNOPQRSTUVWXYZ DEFGHIJKLMNOPQRSTUVWXYZABC c'est-à-dire la lettre A est remplacée par la lettre D, la lettre B par E, ..., la lettre Z par C. Remarquer que les fonctions sont imbriquées: codecar est un sous-programme local de codechaine, et decodecar est un sous-programme local de decodechaine. Le bouton permet d'exécuter le script PHP.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<meta name="robots" content="NoIndex,NoFollow">
<title>Code secret de César -
Exemple de fonctions imbriquées</title>
</head>
<body>
<?php
/*
Données
*/
$clair = 'MIGNONNEALLONSVOIRSILAROSE';
$decal = 3; //
/*
Le code secret de César consiste à décaler
les lettres de 3 rangs dans l'alphabet.
Déclaration des sous-programmes
*/
function codechaine($s){
function codecar($c){
global $decal;
$codascii = ord($c) + $decal;
if ($codascii > 90) {
// 90 = ord('Z')
$codascii = $codascii - 26;
// 26 = longueur de l'alphabet
}
return chr($codascii);
}
$r = '';
for ($i=0; $i < strlen($s); $i++) {
$r = $r.codecar($s[$i]);
}
return $r;
}
function decodechaine($s){
function decodecar($c){
global $decal;
$codascii = ord($c) - $decal;
if ($codascii < 65) {
// 65 = ord('A')
$codascii = $codascii + 26;
// 26 = longueur de l'alphabet
}
return chr($codascii);
}
$r = '';
for ($i=0; $i < strlen($s); $i++) {
$r = $r.decodecar($s[$i]);
}
return $r;
}
/*
Programme principal
*/
echo 'Message en clair : '
.$clair
.'<br>';
$chiffre=codechaine($clair);
echo 'Message chiffré : '
.$chiffre
.'<br>';
echo 'Message déchiffré: '
.decodechaine($chiffre)
.'<br>';
?>
</body>
</html>
Prolongement: Version avec entrée des données |
| Contact | Accueil > PHP > Initiation |