Apprendre à programmer avec Logos

samedi 28 novembre 2009
par  Christophe THOMAS
popularité : 12%

RCX-Storm a le plaisir de vous présenter LogoS de Jacco Bikker. C’est un jeu comme nous les aimons : un jeu pour apprendre à réfléchir et à programmer. Vous pouvez le télécharger à l’adresse suivante : http://www.bik5.com/logos. Ce jeu est directement inspiré du LOGO de Seymour PAPERT. Ses ouvrages ont inspirés et soutenus le projet RCX-STORM.

Avec Logos nous allons vous faire Découvrir les 4 notions de bases en programmation :
- La notion de variable.
- La notion de bifurcation.
- La notion de boucle.
- La notion de fonction.

Texte

 Présentation de LOGO

Bien qu’il soit conçus pour être utilisé dès le plus jeune âge, il nécessite quelques explications pour une prise en main plus facile.

Dans LogoS, vous apprenez à un petit scarabée à rentrer jusqu’à sa maison.

Simple.

Pour cela vous disposez d’icones (ou de cartes) pour lui indiquer son chemin. Vous disposez de 9 cartes que vous disposez sur une ligne (de commande). Vous êtes limité à 3 lignes de commande. Mais vous pouvez les faire se répéter. Ces 9 commandes sont :


- Haut,


- Bas,


- Droite,


- Gauche,


- pivoter à droite,


- pivoter à gauche,


- Avancer d’une case,


- Reculer d’une case,


- Avancer jusqu’à l’obstacle ou bien Avancer ET si scarabée se cogne alors s’arrêter


Les 4 premières commandes sont les plus facile à utiliser. Placez quatre cartes ’gauches’ sur la ligne de commande pour apprendre au scarabée à se déplacer de quatre positions à gauche, et ainsi de suite.

Les quatre cartes suivantes sont des commandes ’relatives’ :

Avancer signifie « aller tout droit dans la direction du nez du scarabée ». Si le scarabée a son nez vers le haut, la carte avancer le fera aller en direction du sommet de l’écran.

La dernière carte indique au scarabée de s’arrêter lorsqu’il rencontre un obstacle. Sinon il se met en colère s’il rencontre un obstacle. Vous utilisez ici les boucles Jusqu’à.

La dernière chose à savoir est l’utilisation des lignes de commandes. Le numéro au début de la ligne indique le nombre de répétition de la suite de commandes que vous avez mis dessus. De cette façon vous vous économisez du temps et de la place en répétant ce que vous lui avez déjà indiqué. Vous vous initiez à l’utilisation des boucles Tant que.

Voilà, à vous de jouer maintenant.


 Découverte de ce qu’est un algorithme

L’ordinateur est un outil, un exécutant pointilleux, méticuleux, très rapide, mais totalement dénué d’imagination et d’initiative.

La machine ne fait rien par elle-même ; elle ne fait qu’appliquer à la lettre des ordres simples et précis.

L’ordinateur reçoit des instructions énoncées clairement, sans équivoque, dans un langage strict qui qualifie l’action souhaitée.

Il exécute ces instructions séquentiellement, sans erreur, sans rechigner, et sans intelligence.

Une suite de telles instructions est un programme.

La programmation consiste à déterminer la démarche permettant d’obtenir, à l’aide d’un ordinateur, la solution à un problème donné.

Cette marche à suivre s’appelle un algorithme.

- Une recette de cuisine est un algorithme.
- Un mode d’emploi est un algorithme.
- L’explication d’un chemin est un algorithme.

Concevoir un algorithme, c’est avant tout :

analyser un problème afin de définir et d’énoncer l’ensemble des actions et des objets à manipuler pour obtenir un résultat.

donc : trouver le cheminement logique des tâches à fournir à l’ordinateur pour qu’il les exécute. Pour aborder la programmation, prenons un exemple tangible que nous allons traduire en algorithme.

 Comment préparer le parcours d’un scarabée ?

Comme si nous nous adressions à un scarabée (l’ordinateur), nous allons :

- Définir les objets et les objets nécessaires.
- Lister les opérations.
- Ordonner la liste des opérations.
- Définir les objets et les actions nécessaires.

Mais pour résoudre notre problème, nous devons prendre certaines décisions qui auront une influence sur l’allure générale de notre algorithme.

Supposons que, pour préparer notre parcours, nous soyons en possession des objets suivants :

- un scarabée
- des obstacles
- une maison

En fixant la liste des objets de l’environnement, nous définissons un univers, une base de travail. Nous sommes ainsi en mesure d’établir une liste de toutes les actions à mener pour résoudre le problème et de construire la marche à suivre permettant d’obtenir un parcours pour aider le scarabée à retourner chez lui.

Lister les opérations :

- Repérer la maison,
- Avancer de 3 pas en avant,
- Tourner 1/4 de tours à droite,
- Avancer de 1 pas,
- Tourner 1/4 de tours à gauche,
- Avancer de 1 pas,
- Tourner 1/4 de tours à gauche,
- Avancer de 1 pas,
- Tourner 1/4 de tours à droite,
- Avancer de 2 pas en avant,
- Hourra !

Cette énumération est une description de toutes les actions nécessaires pour aller à la maison.

Il faut faire une chose à la fois : chaque action élémentaire est une étape incompressible du problème donné.

En définissant l’ensemble des actions possibles, nous utilisons un langage minimal qui permettra de ramasser ce cube : ce langage est composé de différents types de mots :

- verbes/action : avancer, tourner, prendre, poser, faire demi-tour.
- objets : Maison , obstacle.

L’étendue du langage (le nombre de mots qu’il contient) est déterminée par l’environnement qu’on s’est fixé.

En suivant cette liste, tout semble y être, mais dans le désordre. Pour arriver à la maison, il reste à ordonner la liste.

Ordonner la liste des opérations :

  1. Repérer la maison
  2. Avancer de 3 pas en avant
  3. Tourner 1/4 de tours à droite
  4. Avancer de 1 pas
  5. Tourner 1/4 de tours à gauche
  6. Avancer de 1 pas
  7. Tourner 1/4 de tours à gauche
  8. Avancer de 1 pas
  9. Tourner 1/4 de tours à droite
  10. Avancer de 2 pas en avant
  11. Entrer dans la maison

L’exécution de l’ensemble ordonné de ces tâches permet bel et bien d’arriver à la maison.

Le programme (ou plutôt l’algorithme) fonctionne !

Cet algorithme va nous servir à préciser quatre notions de base importantes en programmation :

- La notion de variable.
- La notion de bifurcation.
- La notion de boucle.
- La notion de fonction.

 variable. bifurcation. boucle. fonction.

la notion de variable

Nous avons vu que pour arriver jusqu’à la maison, nous avons d’abord déterminé les objets dont nous avions besoin : avancer d’un case, contourner un obstacle, etc.

De la même manière, pour concevoir un programme, il va nous falloir non pas « prendre » des données numériques, mais définir ces données, ainsi que tout objet dont nous aurons besoin.

Cette définition consiste à nommer ces objets et à décrire leur contenu, afin qu’ils puissent être stockés en mémoire.

Une variable est définie par deux éléments :

- Un nom qui sert à désigner un emplacement donné de la mémoire centrale : une adresse.
- Un type qui détermine la façon dont est traduite la valeur en code binaire.

La notion de variable n’est pas présente dans Logo.

 .la notion de bifurcation

Le scarabée va se poser une question pendant le déroulement du programme : Est-ce que je rencontre un obstacle ou non ?

En fonction de la réponse à cette question, il va bifurquer dans son déroulement et choisir de faire autre chose.

Revenons à l’algorithme du scarabée qui veut rejoindre sa maison.

  1. Repérer la maison
  2. Avancer ET si scarabée se cogne alors s’arrêter
  3. Tourner 1/4 de tours à droite
  4. Avancer de 1 pas
  5. Tourner 1/4 de tours à gauche
  6. Avancer de 1 pas
  7. Tourner 1/4 de tours à gauche
  8. Avancer de 1 pas
  9. Tourner 1/4 de tours à droite
  10. Avancer ET si scarabée se cogne alors s’arrêter
  11. Entrer dans la maison
  12. Hourra !

La bifurcation permet de programmer un choix : en plaçant une condition derrière le terme Avancer si, le scarabée est face à un choix : si il se cogne que doit-il faire ? s’arrêter. Nous n’avons pas placé une condition sinon dans l’algorithme du chemin du scarabée puisque si il ne se cogne pas il continue son chemin. C’est la seul condition disponible dans Logo.

Avec un langage de programmation classique nous aurions :

si (condition) // si la condition est VRAIE // faire ceci ou cela ; // instructions sinon // sinon (si la condition ci-dessus est FAUSSE) // faire ceci ou cela ; // instructions

 .La notion de boucle.

Pour aborder cette notion de répétition ou de boucle, nous allons améliorer l’algorithme. Nous remarquons qu’il y a des séquences qui se répète. N’y aurait-il pas un moyen de les multiplier ?

Ce moyen s’appelle la boucle.

La marche à suivre devient alors :

  1. Repérer la maison
  2. Avancer ET si scarabée se cogne alors s’arrêter
  3. Boucler 3 X
    - Tourner 1/4 de tours à droite
    - Avancer de 1 pas
  4. Tourner 1/4 de tours à droite
  5. Avancer ET si scarabée se cogne alors s’arrêter
  6. Entrer dans la maison
  7. Hourra !

 .La notion de fonction.

En donnant un nom à un bloc d’instructions, nous pouvons définir un sous-programme, appelé fonction ou méthode dans les langage de programmation classique.

Une fonction ressemblerait à une petite usine (on y entre des matières premières qui ressortent transformées...) ou plutôt à une machine à l’intérieur d’une usine (le programme...)

Certains algorithmes peuvent être appliqués à des problèmes voisins en modifiant simplement les données pour lesquels ils ont été construits.

En faisant varier certaines valeurs, le programme fournit un résultat différent du précédent.

Ces valeurs, caractéristiques du problème à traiter, sont appelées paramètres du programme.

Pour comprendre concrètement ce concept, nous allons reprendre notre algorithme du retour à la maison. Si Logo le permettait nous créerions une fonction Avancer en diagonale qui nous serais très utile.


Voilà un rapide aperçu de ces 4 notions fondamentales avec LOGO. Sachant que la notion de variable et de fonction ne sont pas disponible et que la notion de bifurcation et réduite sa plus simple expression. Il ne reste que la notion de boucle qui se révèle fort utile pour aller le plus loin possible dans les différents niveaux.

C’est 4 notions sont mieux exploitées avec SCRATCH et NXT-G.

Cet article est repris du site http://rcx-storm.org/Apprendre-a-pr...


blog comments powered by Disqus