Mieux vaut être dévoré par les remords dans la forêt de Forbach qu'être dévoré par les morbacs dans la forêt de Francfort
Pierre Desproges (sur mon T shirt!)
La séquence 8 vous a semblé difficile, en effet même si des résultats furent atteints, la fonction demandée ne fut jamais exemptes de bugs
Il s'agissait de construire une fonction qui calcule, en fonction de l'indice d'une lettre et de la clef CESAR, le nouvel indice.
Code Python traduit en HTML:def indice (n,clef):
""" la fonction calcule le nouvel indice en connaissant la clef"""
return n + clef
La fonction donnée au départ ne fonctionnait pas dès que la somme de l'indice et de la clef dépassait le nombre de lettres dans l'alphabet!
La meilleure solution obtenue en séquence 8 fût :
Code Python traduit en HTML:def indice (n,clef):
nouveau=n+clef
if nouveau>26:
nouveau=nouveau-26
return nouveau
Pourtant cette fonction n'est pas si satisfaisante!
En effet elle pose problème dès que l'on décode (clef négative) ou si on a une clef supérieure à 26!
J'avais tenté de vous orienter sur la division euclidienne : Pourquoi ? simplement parce que le reste de la division euclidienne réponds parfaitement au problème !
Les restes de la division euclidienne par 26 sont les entiers naturels de 0 à 25
On pourrait ajouter 1 pour avaoir le rang de la lettre dans l'alphabet mais après tout pour monsieur Python, l'indice d'un premier élément est le 0 !
Code Python traduit en HTML:def indice (n,clef):
return (n+clef)%26 #reste de la division euclidienne de n+clef par 26
Voici quelques fonctions en cadeau :
Code Python traduit en HTML:alphabet="abcdefghijklmnopqrstuvwxyz"
def nouvel_indice(n,clef):
""" n est l'indice de départ et clef la clef du code cesar
La fonction renvoie le nouvel indice (calculé)"""
n=int(n)
clef=int(clef)
return (n+clef)%26 #reste de la division euclidienne par 26
def indice_lettre(x):
"""x est une lettre la fonction renvoie son indice"""
return alphabet.index(x)
def lettre_indice(x):
"""x est un indice la fonction renvoie la lettre associée"""
return alphabet[x]
def code_lettre(x,clef):
"""x est une lettre, clef la clef du code cesar
La fonction renvoie la nouvelle lettre codée"""
return "C'est à vous de jouer !"
cesar.2.0.3
La variable alphabet est définie en dehors des fonctions, c'est une variable globale, elle est accessible partout dans le code.
Si elle avait été définie dans indice_lettre(), la fonction lettre_indice n'y aurait pas accès, on parlerait alors de variable locale !
J'ai rebaptisé la fonction indice() en nouvel_indice() au nom plus parlant.
La deuxième fonction donne l'indice d'une lettre. (En minuscule... Pour l'instant!)
La troisième donne la lettre (en minuscule!) connaissant l'indice
La dernière, est en cours de développement et votre mission est de la terminer !
Elle devrait une fois terminée, donner la lettre codée avec la clef spécifiée :
Par exemple, code_lettre("a",2) devrait renvoyé "c"
Les plus rapides d'entre vous s'efforceront de régler les soucis liés :
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.
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.
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.
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.
FullSync est un utilitaire de synchronisation et de sauvegarde de fichiers personnalisable. publié sous licence GNU GPL.
Plus d'information sur le blog