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 |