Apprendre à programmer aux enfants avec REALbasic
La littérature informatique ne sert pas seulement à savoir comment copier un fichier, utiliser un traitement de texte, se servir d’un tableur ou chercher sur internet ; elle sert à savoir comment programmer. Certains n’ont pas besoin de savoir programmer à un niveau professionnel, pas plus que nous avons besoin d’être des professionnels de la mécanique pour pouvoir utiliser un véhicule ; mais ne jamais avoir programmé du tout, c’est comme ne pas savoir pourquoi une voiture a besoin d’essence ou d’huile. Personne n’a autant besoin d’utiliser la littérature informatique que les enfants parce que sans celle-ci, un ordinateur n’est que la console d’une mystérieuse chaîne de télévision. Apprendre à programmer, même un peu, montre aux enfants ce qui se passe réellement derrière l’écran. (comprendre le fonctionnement intérieur de l’ordinateur entraîne le cerveau à réfléchir, un peu comme le latin était supposé le faire lorsque j’étais jeune).
Pour le Macintosh, REALBasic est un fantastique moyen pour apprendre aux enfants à programmer.
Voici quelques une des raisons :
- Vous concevez une application rélle et interactive. Vous ne travaillez pas sur un problème abstrait ; vous construisez des fenêtres avec des graphiques en couleur, des champs de texte dans lesquels vous pouvez saisir des mots et des boutons sur lesquels vous pouvez appuyer.
- C’est facile. Faites glisser un bouton dans une fenêtre et hop, la fenêtre possède un bouton. Maintenant double cliquez sur le bouton, ajoutez un peu de code. Lorsque vous lancerez votre application c’est ce code qui sera exécuté.
- Cela renvoie instantanément le résultat. Les enfants aiment l’interactivité, avec REALbasic vous l’avez immédiatement. Votre application fonctionne même si elle est constituée seulement d’une fenêtre avec un bouton et un champ de texte sans code. Vous pouvez malgré cela, appuyer sur le bouton, taper du texte dans le champ de texte, bouger la fenêtre et utiliser les menus copier, coller et quitter. Votre application reste fonctionnelle en même temps que vous l’enrichissez de nouvelles fonctionnalités qui lui permettent de faire d’autres actions. Vous savez que vous accomplissez quelque chose qui évolue et cela est plaisant, voire amusant.
- Le basic est un langage qui est bien adapté pour l’apprentissage de la programmation. Les programmeurs confirmés vont beaucoup se moquer de “If … then … else” (”Si … alors … sinon …”), mais c’est largement plus convivial que les accolades en boucle du langage C et les parenthèses du langage Logo. Le code REALbasic est coloré en fonction de sa syntaxe et il s’imprime agréablement. Il y a de plus une importante aide en ligne disponible.
- C’est de la programmation réelle. Des itérations et des boucles simples à un haut niveau d’orientation objet, REALbasic contient tout cela. Vous utilisez souvent ces concepts donc vous n’avez qu’à les prendre presque inconsciemment. Cela rend facile la traduction ultérieure dans d’autres langages. Je suis moi-même bien plus performant en C++ et en Java depuis que REALbasic m’a enseigné les classes, subclassses, méthodes virtuelles, polymorphismes, constructeurs, destructeurs et interfaces de classes, sans pour autant que je m’en sois vraiment rendu compte.
Le reste de cet article présente une stratégie pour faire découvrir REALbasic aux enfants. Je part du principe que vous êtes le professeur et que vous maîtrisez déjà REALbasic. Mais l’on peut tout aussi bien prétendre que vous êtes l’enfant, peu importe le véritable âge que vous ayez. D’une autre manière cela signifie que, si vous n’avez jamais essayé de programmer, REALbasic peut constituer une bon moyen pour vous initier à la programmation. Vous vous demandez peut être si c’est parce que j’ai déjà testé réellement cette petite introduction auprès des enfants que j’en ai conclu que cela marchait. Souvenez-vous d’espacer les périodes d’apprentissage car cela peut prendre quelques semaines pour comprendre vraiement tout ce qui est décrit ici.
Bonjour, le monde
La version REALbasic du programme “Hello world” (”Bonjour le monde”) consiste à disposer une boîte de dialogue qui dit, “Hello, world!”. Le fait d’ajouter un petit bruit améliore l’ensemble. Donc démarrez avec ce programme consistant en un bouton placé dans une fenêtre, le bouton possède le code suivant :
beep msgbox "Hello, world!"
C’est excitant de lancer cette petite application et d’appuyer sur le bouton plusieurs fois de suite. On peut immédiatement introduire le concept de boucle et ajouter de la répétition au projet ; expliquer ce que sont les variables et les assignations ; enseigner “Dim” (”assigner”) et “For” (”pendant”) ; on peut modifier le programme de manière à ce qu’il utilise deux boucles “For” pour produire le bruit cinq fois de suite et faire apparaître la boîte de dialogue trois fois. Les enfants se chargeront d’étendre cela à quelque chose qui fonctionnera de manière inhabituelle comme par exemple de faire entendre le bruit 100 fois. Si il le font, vous aurez réussi à les intéresser et il se seront pris eux-même au jeu.
Opérations de chaîne
Les plus importantes opérations de chaînes sont les fonctions “Mid“, (”milieu”) et “Len”, (”longueur”), donc enseignons celles-ci et poursuivons pour voir comment les utiliser au sein d’une boucle “For”, (”pendant”) pour passer en revue individuellement les différentes lettres d’une chaîne. Construire un programme qui fixe une variable à une chaîne, comme pour “Hello” et ajouter un dialogue pour chaque lettre de la chaîne : un dialogue qui affiche “H”, un dialogue qui affiche “e” et ainsi de suite.
La seule limitation est que le mot affiché est codé dans le programme et donc non modifiable. Pour éviter celà, ajouter un champ de texte comme contrôle en expliquant comment prendre son contenu avec un editfield1.text (valeur texte du champ de texte 1). Vous pouvez alors concevoir une application où l’utilisateur peut saisir n’importe quel mot dans le champ de texte et le programme se chargera alors d’afficher celui-ci dans une succession de dialogues contenant chacun une lettre.
Maintenant inversez la boucle de manière à ce que le programme affiche le mot en commençant par la fin. Puis, au lieu d’afficher les lettres individuellement, faites que les lettres s’associent de façon à ce qu’elles créent une nouvelle chaîne et ajoutez un seul dialogue qui affiche inversé n’importe quel mot ou expression que l’utilisateur aura saisi dans le champ de texte. Les enfants aiment que l’ordinateur affiche leur propre nom ou d’autres noms de manière inversée et ainsi de suite.

Conditions et fonctions
Apprenons à l’ordinateur le latin familier. Débutons avec un programme qui enlève la première lettre du mot qui a été saisi par l’utilisateur dans le champ de texte, replacez-la en fin de mot, placez ensuite les deux lettres “ay” et pour terminer, ajoutez un dialogue qui présente le résultat.
Ce n’est pas très sophistiqué parce que l’on ne distingue pas les voyelles des consonnes. Introduisons alors la notion de fonction, tout en expliquant les conditions avec “If” (”si”). Maintenant vous pouvez demander aux enfants de développer une fonction qui va permettre de savoir si une lettre est une voyelle ou une consonne. Modifiez alors le programme pour qu’il enlève uniquement la première lettre du mot lorsque c’est une consonne et la déplace en fin de mot avant d’ajouter “ay”. Vous pouvez faire plus compliqué en utilisant “uppercase”, “lowercase” et “punctuation”.

Dessiner
Il est temps de laisser de côté les jeux de mots et de commencer à jouer avec les images. Voyons l’utilisation du “Canvas control” et montrons comment il est simple de lui faire présenter des formes géométriques simples comme les carrés, les cercles et les lignes. Maintenant distribuons du papier dessin aux enfants et laissons-les imaginer un petite figure comme la représentation symbolisée d’un personnage ou d’un animal, utilisez alors une grille pour déterminer quelles sont les valeurs à fournir à “DrawOval”, (”Dessiner un ovale”) et “DrawLine”, (”Dessiner une ligne”) et ainsi de suite. Les enfants trouvent souvent qu’ils ont fait quelques erreurs au début, leur dessin apparaît alors comme non réussi et comporte souvent des effets amusants. Pourquoi les erreurs ne pourraient-elles pas être amusantes aussi ?

Propriétés
Ensuite, afin que cela ne soit pas trop statique, animons un peu le dessin. Demandons aux enfants de réflechir au problème : comment faire pour que le dessin se déplace sur la droite chaque fois qu’un bouton est pressé dans la fenêtre ? En clair, le composant horizontal de l’ensemble dessiné doit être un peu incrémenté en réponse à chaque pression du bouton, ce qui implique que le code doit être réécrit pour ajouter la valeur de la variable au composant horizontal.
Mais cela ne peut être une variable parce que nous avons à “maintenir un état” ; quelque chose nécessite de mémoriser la position horizontale entre chaque pression sur le bouton. Donc vous allez ajouter une propriété à la fenêtre ; le bouton va augmenter la valeur de cette propriété et va ensuite rafraîchir le canvas.
Ensuite, nous pouvons transformer et compliquer l’animation en rendant la figure capable de faire quelques mouvements répétitifs lorsqu’elle se déplace sur la droite. Par exemple, avec une dessin qui représente un personnage, l’angle des jambes peut varier un peu pour donner l’impression d’une personne qui marche. Cela demande bien sûr plus de propriétés et donc plus de code, mais cela devient vraiment un projet intéressant. Les enfants seront surpris de ces monstruosités amusantes comme celle d’un bonhomme dont la tête se détache lorsqu’il commence à marcher…
Maintenant vous allez vouloir éliminer la pression répétitive qui va générer l’image suivante de l’animation. Pour rendre cela possible, utilisez une boucle qui va rendre l’animation automatique. Elle fonctionnera probablement trop rapidement, vous devrez donc utiliser une boucle interne qui utilise la fonction “Ticks” pour stopper ou ralentir le déroulement de l’animation.
Une autre possibilité est d’avoir un dessin qui répond au mouvement de la souris. Pour réaliser cela vous devez utiliser l’événement “MouseMouve” du canvas pour déterminer la position de la souris et redessiner la figure en fonction de l’endroit où elle est située. De cette manière le dessin semblera suivre la souris.
Même si ce n’est pas très compliqué, les enfants vont spontanément se rendre compte que c’est réellement ce que leur jeu vidéo favori fait habituellement. Ce type de poursuite et d’amélioration de projet est souvent présent dans la littérature informatique.
Jeu final
C’est bien de terminer avec un jeu. Les enfants choisissent toujours un projet trop ambitieux ; J’aime utiliser le jeu Tic Tac Toe. Qui est bien plus compliqué que vous ne le pensez. Dans l’appendice (”Développer une application”) de mon livre : REALbasic: The Definitive Guide, 2nd Edition, je propose une construction complète, du début à la fin, incluant plusieurs faux départs et des erreurs.De cette manière, vous pourrez prendre connaissance du processus actuel de ma réflexion lorsque je développe une application. Cette construction est un peu plus compliquée que celle que j’utiliserai avec les enfants, mais vous pouvez l’atténuer afin de la rendre plus appropriée. L’ordinateur va réagir aux clics de la souris et vous aurez probablement besoin de concepts de valeur éducative tels que les “arrays”, “control arrays” et “custom classes”.
Conclusion
C’est ici que j’ai choisi de terminer notre introduction à la programmation parce que les concepts qui ont été présentés : boucles et branchements, sous-programmes, messages aux objets, opérations sur les chaînes, images et animation, propriétés, tableaux et classes courantes sont les plus importants, ils constituent une base fondamentale.
A ce point, l’étudiant est soit intéréssé pour poursuivre à apprendre à programmer ou bien il préfere arrêter. Si il souhaite continuer, il pourra utiliser la littérature, et en particulier utiliser le livre que j’ai consacré à REALbasic. Dans le cas contraire, il aura seulement passé un bon moment et les ordinateurs auront perdu leur aspect mystérieux.
Tous ceux qui ont passé quelques temps à s’initier à la programmation ne voient plus les ordinateurs de la même façon.

Textes originaux en anglais sur O’Reilly : Learning to Program for Kids of All Ages with REALbasic par Matt Neuburg

Chargement
Votre article est extrèmement bien fait.
Ayant quelques enfants, j’ai fait également l’essai de l’apprentissage par le Basic. Toutefois, les enfants sont souvent motivés par les animations et la programmation des jeux. Et là, cela devient très vite difficile et demande beaucoup de patience.
J’ai depuis découvert Scratch, développé comme successeur de Smaltalk par le MIT. Et il fonctionne aussi en français, ce rend ce language très abordable pour des enfants même plus jeunes.
Ce produit est gratuit et existe aussi sous Mac.
Pour en savoir plus: http://www.emilien.eu/6.html. La copie d’écran est faite sur PC, mais gageons que bientôt vous en présenterez la version Mac ?