3-1-5 «Code secret de César - Exemple de fonctions imbriquées» - Script PHP exécutable en ligne

Initiation à 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>

Contact |  Accueil   >   PHP   >   Initiation