L'
algorithmie est l'expression d'une suite d'opérations élémentaires aboutissant à une résolution de problème, quel que soit le domaine : mathématique, programmation, organisation, etc.
Celle-ci se fait en
langage naturel, et est donc accessible à tous les élèves, mais la vraie difficulté vient de sa traduction par étapes successives pour aboutir au
langage machine.
Heureusement les compilateurs ont été créés pour que nous n'abordions jamais ce langage machine... A ce propos, pour tout savoir des différents langages, les nuances entres les termes et que faisons nous à quel moment, je vous conseille la lecture de cet article très complet de Wikipedia :
www.wikiwand.com/fr/Compilateur
La première étape est de faire écrire par les élèves l'attendu de leur système :
le robot doit suivre la ligne
Puis leur demander de décomposer :
quand il détecte une ligne noire, il tourne
Mais concrètement que fait le système ? car en se mettant à la place du système, on passe du point de vue utilisateur au point de vue système, seul raisonnement qui permet d'aboutir à un programme :
il avance mais si la ligne noire est détectée à gauche, il tourne à gauche, sinon si la ligne noire est détectée à droite alors il tourne vers la droite
Tout le travail de l'enseignant est de faire progresser les détails dans le langage de l'élève et de l'amener vers des
formulations de plus en plus proches du système mais surtout
les plus simples possibles. il faut lui apprendre à décomposer un problème en sous-problèmes jusqu'à ce que chaque sous-problème soit dans une zone proximale de résolution de problème possible (pour paraphraser la
zone proximale de développement explicitée par
Lev Vigotsky). En effet, un problème trop complexe ne peut pas être résolu immédiatement, nous l'analysons pour le résoudre morceau par morceau. Voici ce qui peut être fait avec Blockly@rduino.
Utilisons un langage graphique : Blockly@rduino
L'enseignant va définir avec l'élève, en fonction du système/robot :"c'est quoi concrètement 'avancer' ?".
Dans notre exemple, il s'agit d'un simple système avec 2 LDR (gauche & droite) devant pour mesurer la réflexion lumineuse sur la table et 2 servomoteurs à rotation continue pour la propulsion.
Avancer (à l'enseignant de choisir en fonction du niveau de l'élève s'il faut préparer avant cette partie, s'il faut donner les numéros de broche, s'il faut lui laisser comprendre le dispositif ou bien s'il faut lui laisser tout faire) :
Et ainsi de suite pour toutes les fonctions avancer - reculer - tourner - détecter.
Mais je vais détailler pour voir comment prendre en compte la mesure de la luminosité :
ATTENTION ! La mesure de la luminosité est la plus délicate, soumise à toutes les perturbations possibles, donc à déconseiller aux débutants !
Du bloc au code
Donc la nouvelle question est comment arriver jusqu'au code ? Rappelons tout d'abord ce qu'est le code : la traduction dans un langage informatique spécifique d'un programme établi, donc le plus important n'est pas le code mais le programme ! C'est à dire la suite d'instructions élémentaires que l'on attend du système. Bref faisons simple et laissons Blockly@rduino faire cette traduction à la place des élèves :
Il ne reste plus qu'à téléverser ce programme traduit en code, relativement au langage C Arduino, dans la carte de votre robot.
Pour savoir comment faire cela facilement, rendez-vous sur la
page du tutoriel.