site2wouf.fr : Algorithme — Séquence 8

Il n'existe aucun bruit plus irritant que celui d'un téléphone qui ne sonne pas.

Rupert Holmes (sur Mon tshirt!)

Partager :

Facebook X (Twitter) LinkedIn Email WhatsApp

Vous êtes peu nombreux à avoir réussi la mission de la séquence 7 — l'énoncé était codé en César 13…

Le but de cette séquence, et des suivantes, est de construire un codeur-décodeur César.

Étudions la fonction suivante :

Code Python traduit en HTML :
def indice(n, clef):
    """ calcule le nouvel indice en connaissant la clef """
    return n + clef

C'est une fonction qui accepte 2 paramètres.

Le premier est le rang de la lettre dans l'alphabet : un entier strictement compris entre 1 et 26.

Le second est la clef César.

On peut tester cette fonction en la saisissant dans un nouveau fichier (cesar.py) et en l'exécutant. L'IDLE s'ouvre mais il ne se passe rien… Il faut entrer au clavier :

>>> indice(5, 3)

Pour voir apparaître : 8

La fonction ajoute bien la clef au rang. Mais essayez d'autres valeurs !

Cette fonction fonctionne-t-elle pour n=24 et clef=5 ? Pourquoi ?

Voici une version améliorée :

def indice(n, clef):
    """ calcule le nouvel indice en connaissant la clef """
    if n+clef < 27:
        return n + clef
    else:
        return indice(n-26, clef)

Cette nouvelle fonction fonctionne — je vous laisse vous en convaincre !

Elle est très particulière : elle s'appelle elle-même. C'est une fonction récursive.

Votre mission

Trouver une autre solution non récursive :

Les plus rapides réfléchiront ensuite à la suite du projet !

Au cycle 4, les élèves s'initient à la programmation, en développant dans une démarche de projet quelques programmes simples, sans viser une connaissance experte et exhaustive d'un langage ou d'un logiciel particulier. En créant un programme, ils développent des méthodes de programmation, revisitent les notions de variables et de fonctions sous une forme différente, et s'entraînent au raisonnement.

Attendus de fin de cycle

Connaissances et compétences associées

Décomposer un problème en sous-problèmes afin de structurer un programme ; reconnaître des schémas. Écrire, mettre au point (tester, corriger) et exécuter un programme en réponse à un problème donné. Écrire un programme dans lequel des actions sont déclenchées par des événements extérieurs. Programmer des scripts se déroulant en parallèle. - Notions d'algorithme et de programme. - Notion de variable informatique. - Déclenchement d'une action par un événement, séquences d'instructions, boucles, instructions conditionnelles.

Exemples de situations, d'activités et de ressources pour l'élève

Jeux dans un labyrinthe, jeu de Pong, bataille navale, jeu de nim, tic tac toe. Réalisation de figure à l'aide d'un logiciel de programmation pour consolider les notions de longueur et d'angle. Initiation au chiffrement (Morse, chiffre de César, code ASCII...). Construction de tables de conjugaison, de pluriels, jeu du cadavre exquis... Calculs simples de calendrier. Calculs de répertoire (recherche, recherche inversée...). Calculs de fréquences d'apparition de chaque lettre dans un texte pour distinguer sa langue d'origine : français, anglais, italien, etc.

Repères de progressivité:

En 5e, les élèves s'initient à la programmation événementielle. Progressivement, ils développent de nouvelles compétences, en programmant des actions en parallèle, en utilisant la notion de variable informatique, en découvrant les boucles et les instructions conditionnelles qui complètent les structures de contrôle liées aux événements.

Liens utiles

Téléchargements