|
Algorithmique |
| |||||
On veut obtenir la figure suivante :
On utilise la procédure FloconCentre (Voir la partie Initiation, Exemple avec Logo) Cette procédure trace un flocon de côté donné et centré sur la position de la tortue juste avant l'appel de la procédure. La longueur du côté est passée en paramètre de la procédure. Ainsi un flocon de côté 20 est obtenu en tapant : FloconCentre :20 CT Si on ne change pas la position de la souris, on peut emboiter des flocons en appelant dans un programme plusieurs fois la procédure FloconCentre. Ainsi pour emboiter trois flocons de côtés respectifs 30, 20 et 10, il suffit de taper par exemple : FloconCentre :30 FloconCentre :20 FloconCentre :10 CT Récursivité En informatique ou en logique, un processus (fonction, procédure ou plus généralement un algorithme) est récursif si le processus fait appel à lui-même. La récursivité est la démarche qui utilise un processus récursif. Figure récursive Ici on va construire une procédure Logo qui s'appelle elle-même pour emboîter des flocons. La procédure ne peut pas s'appeler indéfiniment, il faut une condition d'arrêt. Avec MiniLogo, une instruction spécifique permet de sortir d'une procédure récursive, il s'agit de : SORTIE SI NomParamètre Comparaison ValeurLimite Dans cette instruction de sortie : - NomParamètre est le nom du paramètre dont la valeur est à surveiller - Comparaison est l'un des symboles suivants : =, >= et <= - ValeurLimite est la valeur à tester à chaque itération. Si on ne précise pas de valeur limite par cette instruction, le programme risque de finir par une erreur. En réalité dans MiniLogo une limite supérieure et une limite inférieure existent par défaut dont les valeurs peuvent être précisées dans le menu Options. On construit donc une procédure FloconPlein en se servant de la procédure FloconCentre (il est inutile de récrire le code de cette procédure), il suffit de préciser la condition de sortie et d'appeler de nouveau la procédure FloconPlein. Dans l'exemple, on trace tous les flocons imbriqués de côté variant de 30 à 0 par pas de 1. On obtient ainsi la procédure : POUR FLOCONPLEIN :long SORTIE SI long=0 FLOCONCENTRE :long FLOCONPLEIN :long-1 FIN POUR On peut modifier le pas (0.5, 1, 2, ...) et ainsi modifier l'aspect de "remplissage". On peut maintenant modifier la procédure FleurFlocon (voir Procédures avec Logo) en remplaçant l'appel de la procédure FloconCentre par l'appel de la procédure FloconPlein pour obtenir le remplissage des flocons : |