• Home
    • Home
    • Wouf's Blog
    • Bibliowouf
    • Boutique TShirt
    • Sponsoring
    • Politique de confidentialié
  • Math
    • Math au collège
    • Applis et boutiques
    • Cours particuliers
  • Jeux
    • Echecs
    • Poker
    • Des chiffres et des lettres
    • Dogs and cats (mastermind)
    • boggle - version Anglaise
    • boggle - version Française
  • Info
    • Console Python
    • SVG EDIT
    • fond d'écran
    • Prénom en chinois
    • Boite à outils
    • Mes Logiciels
    • DIVERS
    • Webmaster?
    • Liens

Laurent Petitprez

Tweet

Les conseils de Wouf

Beaucoup d’élèves entrant au lycée ont en effet des difficultés à manipuler les fractions, les racines carrées, les puissances, à factoriser des expressions… Ces notions, apprises au collège, sont mal assimilées, et le programme des classes de lycée ne prévoit pas de les retravailler en profondeur.

Cet ouvrage propose une remédiation pas à pas. Un code simple et mnémotechnique est associé à chacune des règles et rappelé dans toutes les corrections d’exercices. Il permet de se repérer et de comprendre ses erreurs.

Le plus beau compliment que je puisse faire à une femme est de lui dire : je suis aussi bien avec toi que si j'étais tout seul.

Jean Yanne

Voir toutes les citations.


Algorithme au cycle 4 -Séquence 10 - Python, Cesar (4) - boucle FOR et accès aux fichiers

Sans perdre de vue notre projet Cesar, je vous propose aujourd'hui cette petite application :

Code Python traduit en HTML:
#variables globales
letexte=""  

def ecrisfichier():
    """Cette fonction ecris dans le fichier texte.txt
    le contenu de la variable globale letexte
    Cette fonction n'attend pas de paramètre
    et ne retourne auncune valeur 
    """ 
    fichier=open("texte.txt" ,"w" )
    fichier.write(letexte)
    fichier.close()


def lejob():
    """Cette fonction fait le travail
    elle modifie le contenu de la variable globale letexte de la
    façon suivante:
    elle remplace les caractère eéèê par le chiffre 3
    Cette fonction n'attend pas de paramètre
    et ne retourne auncune valeur
    """ 
    #variables locales
    caracteres="eéèê"  #variable locale
    nouveau_texte="" 
    #important : le fonctionnement dela boucle:
    for lettre in letexte:
        #pour chacune des lettres de notre variable letexte
        if lettre in caracteres:
            #on ajoute un 3 dans nouveau_texte
            nouveau_texte=nouveau_texte+"3" 
        else:
            #on ajoute simplement cette lettre
            nouveau_texte=nouveau_texte+lettre
    #nouveau_texte contient le texte modifié
    return nouveau_texte


#corps du programme
fichier=open("texte.txt" ,"r" )
letexte=fichier.read()
# Attention si le fichier n'existe pas il y a erreur !
fichier.close()
#letexte contient le texte original
letexte=lejob()
#letexte contient maintenant le texte modifié

ecrisfichier()
#le fichier de départ a été modifié

    
    

t3xt.py

La documentation est abondante et rend le code facilement compréhensible.

Le but du programme est d'ouvrir un fichier nommé texte.txt, dans le même répertoire que le programme, et de remplacer dans ce programme les e (avec ou sans accent) par le chiffre 3.

Je l'ai testé avec la fable "Le corbeau et le renard" et j'ai obtenu :

Maîtr3 Corb3au, sur un arbr3 p3rch3,
T3nait 3n son b3c un fromag3.
Maîtr3 R3nard, par l'od3ur all3ch3,
Lui tint à p3u pr3s c3 langag3 :
Et bonjour, Monsi3ur du Corb3au.
Qu3 vous 3t3s joli ! qu3 vous m3 s3mbl3z b3au !
Sans m3ntir, si votr3 ramag3
S3 rapport3 à votr3 plumag3,
Vous 3t3s l3 Ph3nix d3s hôt3s d3 c3s bois.
À c3s mots, l3 Corb3au n3 s3 s3nt pas d3 joi3 ;
Et pour montr3r sa b3ll3 voix,
Il ouvr3 un larg3 b3c, laiss3 tomb3r sa proi3.
L3 R3nard s'3n saisit, 3t dit : Mon bon Monsi3ur,
Appr3n3z qu3 tout flatt3ur
Vit aux d3p3ns d3 c3lui qui l'3cout3.
C3tt3 l3çon vaut bi3n un fromag3, sans dout3.
L3 Corb3au hont3ux 3t confus
Jura, mais un p3u tard, qu'on n3 l'y pr3ndrait plus.

Votre mission pour ce jour se décompose en 3 temps :

  • Tester ce programme avec les paroles de votre chanson préférée
  • Modifier le programme pour qu'en plus il transforme les minuscules o, p, q ,r et s en O P Q R et S
Ensuite, par équipe ou en solo, terminez le projet CESAR, en pensant aux commentaires !

N'hésitez pas à relire les séquences précédentes !

Officiel

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

  • Écrire, mettre au point et exécuter un programme simple

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
  • python.org Le site officiel, pour télécharger Python !
  • Apprenez à programmer en Python avec Openclassrooms
  • Un programme Python pour publier du code Python sur une page web
  • Algorithme au cycle 4
  • La séquence 1 : Qu'est-ce qu'un algorithme ? Où on joue avec les indices...
  • La séquence 2 : Premier programme et premières boucles
  • La séquence 3 : Premiers tests...
  • La séquence 4 : Tests imbriqués.
  • La séquence 5 : Premières fonctions.
  • La séquence 6 : Bilan et commentaires
  • La séquence 7 : Python et Cesar(1)
  • La séquence 8 : Python et Cesar(2) : Un exemple de fonction récursive
  • La séquence 9 : Python et Cesar(3) : Notion de portée de variable
  • La séquence 10 : Python et Cesar(4) :boucle FOR et accès aux fichiers
  • La Séquence 11 - Python, longueur et angle, le module turtle(1)
  • Python sur le Blog
  • Un exemple d'application utilisant tkinter : Juniper_U
  • Scratch - site officiel
Téléchargemments
  • Le memo des séquences 1 et 2 en PDF
  • Les sources :
    • Bonjour monde !
    • conjugueur.py version 0.0.0
    • conjugueur.py version 0.0.1 (correction fin de séquence 2)
    • conjugueur.py version 0.1.0 (fin de séquence 3)
    • conjugueur.py version 0.2.0 (départ séquence 5)
    • L'exemple de la séquence 3
    • L'exemple de la séquence 3 (version corrigée)
    • Les fonctions -projet cesar- de la séquence 9
 


Tweets by wouf

Comment ???

NEWS

  • Page : https://site2wouf.fr/algorithme_s10.php
  • Catégorie : Informatique

« Du jeu “saute-mouton” à l’algorithmique moderne »

« Du jeu “saute-mouton” à l’algorithmique moderne »

Quand un jeu de 1980 contenait déjà les bases de l’algorithmique actuelle

Depuis plusieurs années, je conserve précieusement une collection de la revue Jeux & Stratégie. Ces magazines, publiés au début des années 1980 (J'avais à peine 13 ans), témoignent d’une époque charnière où les mathématiques, les jeux et l’informatique commençaient à se rencontrer dans le grand public.

On y parle aussi bien d’échecs que de logique, de probabilités, de programmation… parfois sur de simples calculatrices programmables.

En feuilletant un numéro de janvier 1980, je suis retombé sur un article qui mérite, à mon sens, une seconde vie :

Texte extrait de la revue Jeux & Stratégie, janvier 1980 (Jean-Jacques Dhenin).

Hier, l’ordinateur était un monstre d’un prix vertigineux que seuls des spécialistes pouvaient utiliser. Aujourd’hui, un amateur passionné peut s’acheter un « micro » pour quelque 6 000 francs et dialoguer avec lui après quelques heures d’entraînement. Totalement vulgarisé, l’ordinateur sera demain dans tous les foyers. Comptable, gardien ou secrétaire infatigable, on a assez dit qu’il s’acquittera de toutes les tâches ingrates. Nous préférons ici l’envisager comme un élément de loisir et, bien sûr, un partenaire de jeu.

En attendant qu’un large public dispose d’un tel matériel, nous vous présenterons dans cette rubrique des programmes de jeux pour des calculatrices de poche évoluées. Nous avons choisi pour l’instant des machines « haut de gamme » : la Hewlett-Packard HP-67 et la Texas Instruments TI-59. Encore chères, de 1 500 à 2 000 francs, elles offrent en effet de très larges possibilités et notamment des cartes magnétiques qui permettent de se constituer une bibliothèque de programmes.

Nous vous proposons même ici un programme pour la dernière née de Hewlett-Packard, la HP-41C, qui présente déjà de nombreux avantages propres aux ordinateurs, dont une imprimante et un affichage alphanumérique (lettres et chiffres).

À présent, à vous de jouer. Nous espérons que vous deviendrez vite des experts en « ludotique » et nous attendons avec impatience vos remarques… et vos programmes.


Jouez à saute-mouton
Jouez à saute mouton - 1 -

Comment faire passer les moutons de gauche à droite, et les moutons de droite à gauche ? Un mouton peut avancer sur une case vide ou sauter par-dessus un autre mouton de manière à retomber sur une case vide. Il ne peut en aucun cas reculer ni sauter par-dessus plusieurs moutons.

Jouez à saute mouton - 2 -

Pour cette première rubrique, vous ne jouerez pas vraiment contre les programmes, mais ils vous permettront de vous exercer agréablement à un joli casse-tête : le « saute-mouton ».

À votre gauche, les trois « 1 » représentent trois moutons bien maigres. À votre droite, les trois « 2 » sont des moutons bien gras. Chaque zéro indique une place vide, juste suffisante pour un mouton.

Ces petites bêtes se sont retrouvées face à face sur un sentier de montagne ; les trois moutons de gauche allant vers la droite et leurs congénères dans le sens opposé. Depuis l’histoire de Panurge, si ce n’est plus tôt, on sait leur caractère : ils peuvent avancer, sauter… mais jamais reculer.

Il vous appartient de permettre aux moutons de passer leur chemin sans encombre. Pour cela, il vous suffira d’indiquer le numéro de la case où se trouve le mouton que vous voulez voir se déplacer. En cas de manœuvre illégale, le programme redonne l’affichage de la situation sans modification.

La suite de l’article présentait le programme complet pour calculatrices programmables, que je n’ai volontairement pas reproduit ici.

Ce qui frappe à la lecture de cet article, plus de quarante ans plus tard, ce n’est pas seulement le matériel utilisé TI 59 ou HP 67, mais la démarche. Derrière ce jeu de moutons se cachent déjà des notions très modernes : état, règle de transition, coup légal, situation gagnante ou bloquée. Autrement dit, de l’algorithmique à l’état pur.

Logigramme généré automatiquement par logigw

Et le code

Une fois le fonctionnement du jeu formalisé sous forme de logigramme, sa traduction en code devient presque naturelle.

Dans les années 1980, cette logique était déjà mise en œuvre sur des calculatrices programmables, avec une mémoire limitée et un affichage minimal, ce qui imposait une écriture extrêmement rigoureuse.

LBL A        ; initialisation
0 STO 0     ; case 0 (bord gauche)
1 STO 1
1 STO 2
1 STO 3
0 STO 4     ; case centrale vide
2 STO 5
2 STO 6
2 STO 7
0 STO 8     ; case 8 (bord droit)
RTN

Aujourd’hui, en Python, la représentation de l’état du jeu par une simple liste permet un code lisible et proche du raisonnement humain.

# 0 : case vide
# 1 : mouton allant vers la droite
# 2 : mouton allant vers la gauche

etat = [0,1, 1, 1, 0, 2, 2, 2,0]

En JavaScript, la même logique s’applique, avec en plus l’interaction directe à l’écran. Les outils ont évolué, mais l’algorithme reste le même : seule sa traduction change selon le support.

// 0 : case vide
// 1 : mouton allant vers la droite
// 2 : mouton allant vers la gauche

let etat = [1, 1, 1, 0, 2, 2, 2];

Cliquez sur l'image pour jouer avec cette application sur le site2wouf.fr :

Et regardez moi jouer !

https://www.youtube.com/watch?v=qRNpvMRkvh8

lien vers l'article sur wouf blog
 

TIPS

Sur le site de Wouf, dans le menu "lien", en survolant "wikipedia", apparaît l'item: "Une page au hasard".

Par un simple clique, on accède à une page de Wikipedia... au hasard!

Un moyen original de se cultiver...

Voir tous les conseils.

Dernière mise à jour:

Juillet-aôut 2023

Nouvelle Page !

  • Exercices du jour : Les 16 immeubles !

Pages modifiées (ou corrigées) !

  • Exercices du jour : L'enclos
  • Exercices du jour : Les carrelages de couleur /a>

Voir toutes les mises à jour.

 

Trois liens disponibles !

Votre propre message ici, c'est possible! Plus d'informations



Sauf mention contraire, le site est placé sous double licence Creative Commons et GNU Free Documentation License, par contre les grandes images décoratives appartiennent à Corbis et sont licenciées par microsoft

Contact: w0uf@free.fr (avec un zéro à la place du O)