Vous êtes sur la page 1sur 30

DES - TEF Diplme dtudes Spcialises en Technologie de lducation et de la Formation Anne acadmique 2002 2003

Facults Universitaires Notre-Dame de la Paix Namur Universit de Lige

Mmoire

Apprendre programmer Pourquoi ? Comment ? CAR : Computers Are Robots

Rupert Meurice de Dormale

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 1 sur 30

Apprendre programmer Pourquoi ? Comment ? CAR : Computers Are Robots Prliminaire


Ce mmoire est ralis dans le cadre de la certification, pour lanne acadmique 2002-2003, du Diplme dtudes Spcialises en Technologie de lducation et de la Formation organis conjointement par lUniversit de Lige (ULg) et les Facults Universitaires Notre-Dame de la Paix Namur (FUNDP). Son objet est la description dune nouvelle mthode dapprentissage des bases de la programmation destine aux dbutants adolescents et adultes. Pour la facilit de lexpos, une dnomination a t donne cette mthode : CAR Computers Are Robots. En annexe de ce mmoire se trouvent : Un cdrom reprenant lensemble de cette mthode son stade actuel de dveloppement Le mode demploi de ce cdrom Le mode demploi (non encore implment) du module 5 (robotique virtuelle) Le mode demploi (non encore implment) du module 8 (programmation virtuelle en pseudocode) Le texte de la communication Robotique virtuelle : environnement pour un apprentissage dynamique et interactif de lalgorithmique faite au 5me colloque international de Robotique pdagogique Montral en 1997. 6. Les changements pdagogiques induits sont expliqus au travers dune interview de lauteur par Pierre, Adle et Amaury 7. Le logiciel sous toutes ses coutures au travers dune analyse mene par Michel 8. Et puis lavis des lves dans tout a ??? !!! 1. 2. 3. 4. 5.

Introduction
Ce mmoire se voulait denvergure, savoir la validation dune mthode dapprentissage des bases de la programmation destine au dbutant absolu en la matire, validation se trouvant au carrefour de sept axes : 1. La question de savoir si lapprentissage de la programmation reprsente un intrt quelconque pour un tudiant qui ne se destine pas ce mtier 2. Une mthode prexistante sur laquelle se base et que complte la mthode prsente 3. Une exprience de plus de vingt ans dans lenseignement de la programmation des dbutants 4. La littrature relatant les difficults des novices dans lapprentissage de ce savoir-faire 5. Les nombreuses mthodes mises au point pour faciliter cet apprentissage 6. Les changements pdagogiques induits par linnovation 7. Les aspects techniques et technologiques de linnovation Malheureusement, par manque de temps et de moyens, ce projet subira quelques amputations : Le point 1 ne sera pas abord. Au niveau des bienfaits de lapprentissage de la programmation , lexamen de la littrature de la fin des annes 80 soit avance des suppositions non tays, soit relate des expriences discutables sur les transferts de ce genre dapprentissage (Romainville). Un temps considrable devrait tre consacr la recherche darticles plus rcents, censs tre parus au cours dune priode sans doute moins prolifique durant laquelle la programmation pure et dure cd du terrain lutilisation des progiciels dabord, au multimdia ensuite, et lexploitation de lInternet enfin.

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 2 sur 30

Le point 5 ne sera pas abord non plus. Les annes 90 ont vu clore des mthodes daide lapprentissage de la programmation permettant au novice de franchir telle ou telle tape difficile du cursus1. Comme pour le point 1, du temps devrait tre consacr afin de recenser les mthodes apparues dernirement et vrifier sil ny a pas double emploi avec la mthode prconise. Le point 4 se rsume une trop brve incursion dans lunivers plthorique des publications consacres aux problmes que rencontrent les dbutants ou novices dans lapprentissage de la programmation Lexprience de lauteur a donn lieu un certain nombre dassertions rsultant dobservations, dintuitions, dintimes convictions qui seront prises en compte dans cet expos, mme si certaines dentre elles nont pas trouv dcho dans la littrature ou nont pas fait lobjet dune validation exprimentale. Les points 6 et 7 seront abords au niveau de tmoignages en annexe. Ces restrictions tant faites, ce mmoire se dploiera selon larchitecture suivante : Le but exact de la mthode propose La prsentation de la mthode de base (Images pour programmer) et en quoi elle constituait une approche totalement novatrice et visionnaire dans lapprentissage de la programmation Un bref historique des faits qui ont amen lauteur prolonger cette mthode de base par limplmentation de certains modules et, finalement, par la conception dune mthode complte assiste par ordinateur. Lorganisation de la nouvelle mthode Quest devenue la nouvelle mthode par rapport Images pour programmer Le dtail de chacun des modules de la nouvelle mthode, ses objectifs, ses motivations au regard de lexprience accumule et de la littrature consulte, les avantages et inconvnients de son implmentation et des conseils mthodologiques s'y rapportant Lapport du DES-TEF dans lvolution de la mthode Et pour terminer, une micro-fiche technique du logiciel.

But de la mthode CAR


Par apprendre programmer , il faut entendre la matrise dun savoir-faire consistant spcifier, rdiger, faire excuter, tester et dbugger des programmes informatiques en rponse des demandes (noncs) plus ou moins imprcises. Dans ce cas, lordinateur est utilis comme lexcutant des programmes que lapprenant a rdigs, et non comme un outil pour raliser des tches telles que du traitement de texte, des feuilles de calcul lectroniques, la gestion de bases de donnes, etc. De plus, si, dans le cursus, certains outils et mtaphores sont utiliss pour faciliter lapprentissage du novice en la matire, lobjectif final est quil sache, avec son crayon et face sa feuille de papier, rdiger les programmes adquats rpondant aux noncs qui lui sont soumis sans que, dans cette phase de conception, le recours la machine lui soit ncessaire. Cette finalit doit tre garde lesprit, surtout pour les pdagogues qui utiliseraient la mthode pour enseigner la programmation leurs tudiant(e)s. Il sagit bien dune mthode et non dune succession de trucs et astuces . Lensemble du curriculum est le rsultat dune rflexion pdagogique destine conduire le novice absolu, qui n'a pas encore ide de ce que veut dire le mot programmer , la ralisation de programmes grant les variables indices et les
Nos recherches nous ont men la dcouverte de quelques mthodes proposes pour aider le dbutant franchir lun ou lautre cap difficile de la programmation. FPL propose la conception des programmes sous forme de flowcharts . Le Stanford BIP Project montre le contenu des variables et offre une assistance intelligente au dbuggage des programmes, etc.
1

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 3 sur 30

procdures paramtres en Pascal (ou en tout autre langage de type procdural). Un lve motiv peut trouver dans cette mthode la source de plus dune centaine dheures de travail. Programmer reprsente une difficult majeure pour le dbutant et plus encore pour lenseignant qui se voit investi de la tche d'aider cet apprentissage.

La base : Images pour programmer


Dans le dbut des annes 90, lessentiel de la pdagogie consistait apprendre directement un langage au dbutant, lui expliquer les effets de chaque instruction et lui montrer le fonctionnement de programmes simples. Il ne lui restait plus alors qu faire le reste . Manifestement, cela ne fonctionnait pas. Limportance de la littrature sur le sujet le confirme. De manire assez tonnante, de nombreux constats dchec sont dresss, mais peu de remdes concrets sont proposs. Ceux-ci ont la particularit dtre ponctuels, de sattacher aider au passage dune difficult bien prcise sans revoir le problme dans son ensemble. Dune manire gnrale, du Boulay et al. attire lattention sur limportance de la notional machine (que lon pourrait traduire par machine fonctionnelle ) qui se cache derrire chaque langage et de lintrt quil y a expliquer ce concept aux dbutants, mais sans toutefois concrtiser son ide de faon prcise2. Cest dans ce contexte que voit le jour Images pour programmer 3. Cette mthode dapprentissage des bases de la programmation est rvolutionnaire plus dun titre : Lapproche du sujet est repense de fond en comble La mthode est simple, complte (manuel + squences vido)4 et cohrente La mthode peut facilement tre mise en uvre et donne dexcellents rsultats pour les adultes. Le principe de base est de fournir au dbutant une reprsentation simple et image de la manire dont cette bote noire que reprsente lexcutant-ordinateur fonctionne et quil puisse sappuyer sur cette vision mentale pour concevoir ses programmes. Le monolithe auquel devait faire face le dbutant lors de son tude de la programmation au travers de la syntaxe est maintenant taill de marches permettant un franchissement plus ais.

du Boulay et al. signale toutefois que pour aider apprendre ses proprits, la machine fonctionnelle doit tre simple, constitue dun petit nombre de constituants interagissant dune faon qui doit tre facilement comprhensible par le novice, si possible par analogie avec dautres mcanismes avec lesquels il est plus familier. Des mthodes doivent galement tre fournies au novice pour observer certains de ses travaux en action. . Lauteur met en garde contre une simplicit superficielle de la machine fonctionnelle, simplicit qui peut tre atteinte au dtriment de la qualit et qui risque de dboucher sur une difficult plus grande dexploitation par le novice (ambiguts, pauvret smantique des primitives,).
3 4

Texte intgral consultable sur http://www.det.fundp.ac.be/cefis/publications/doconline.html Voir description dans Haugulstaine-Charlier B.


Rupert MdeD. Page 4 sur 30

Apprendre programmer : Pourquoi ? Comment ?

Figure 1 Images pour programmer sattache dabord dfinir ce quest programmer et les constituants dun programme. Lalgorithmique est alors aborde au travers de la programmation de petits robots. Vient ensuite une description de lexcutant-ordinateur (gestion des casiers (variables), communication avec lextrieur, manipulation de linformation et comprhension des structures de contrle). Un certain nombre de tours de main sont abords en pseudocode (langage "naturel" de description d'algorithme) et en GNS5. Ce nest quaprs cette solide introduction que la syntaxe du langage (Pascal) est aborde. Cette mthode prenait donc lexact contre-pied des pratiques de lpoque. Les principes de la programmation sont abords sur base dune machine fonctionnelle image, claire et simple. La syntaxe napparat plus alors que comme une simple traduction permettant lencodage du programme. La majeure partie de lnergie dpense par lapprenant est investie dans linvariant de la programmation (lanalyse du programme proprement dite) pour ne laisser que peu de place la syntaxe, diffrente selon les langages. Au vu de tout ce qui prcde, nous sommes surpris que cette mthode nait pas eu le retentissement international quelle mritait.

Historique de la mthode CAR


En tant qulve du Professeur Duchteau, jai appliqu directement Images pour programmer dans le cours de programmation dont je venais dtre frachement investi. Comme il est dit plus haut, cette mthode fonctionne et donne dexcellents rsultats pour les dbutants adultes. Il sest toutefois avr quenviron un tiers des lves adolescents (16-18 ans) prsentaient des difficults au moment de la rdaction de leurs premiers programmes.

GNS = graphes de Nassi-Schneidermann permettant de mieux visualiser le flux dexcution du programme. Ceci est corrobor par Cunniff et al. qui signalent des amliorations notables chez les dbutants qui utilisent leur langage FPL (First Programming Language) se prsentant sous forme de flow-chart . Dans ce systme, les structures de contrles sont visuellement isoles, ce qui oblige lapprenant dterminer explicitement les instructions qui doivent prendre place dans ces digressions .

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 5 sur 30

Ces difficults mont pouss introduire des travaux pratiques en Logo sur les rptitives imbriques (dessins de rosaces) au moment o les structures de contrle taient abordes, ce qui semblait aider les lves dans une certaine mesure. Aprs cette tape, les exercices des petits robots taient raliss, et ceci avec des classes comptant de vingt vingt-cinq lves. Face un tel nombre, la correction des exercices tait un rel problme, surtout quand il fallait expliquer son erreur chaque lve. Des cours de rattrapage et des corrections individuelles furent alors mises sur pied, mais il sest avr que les explications verbales, abstraites du fonctionnement des structures de contrle ne portaient que peu de fruit. En outre, le suivi des lves ayant vraiment des grosses difficults a rvl que leurs problmes relevaient essentiellement dune mauvaise comprhension du flux dexcution du programme au niveau des structures de contrle. Face ces diffrents problmes, lide fut envisage que llve puisse programmer et tester seul, dans une environnement interactif, ses programmes sur les petits robots. Il pourrait ainsi se construire une reprsentation correcte du fonctionnement des structures de contrle travers ses essais et erreurs, comme cest le cas dans lenvironnement Logo. Une premire version du module de robotique virtuelle (incluant les 4 robots de Image pour programmer + 1 robot personnel) fut alors ralise en 1995 et teste sur des lves. Linterface de construction des programmes manquant dergonomie, une nouvelle version (la version actuelle) de 17 nouveaux robots de difficult progressive fut ralise (voir le module 5 robotique virtuelle cidessous). La proposition dcrire deux articles6 sur ce module ma oblig examiner de plus prs les raisons pour lesquelles les lves utilisant cet environnement faisaient des progrs importants dans la matrise des structures de contrle. En rsum, le problme vient du fait que les dbutants adolescents ne possdent pas encore un sens de labstraction suffisamment dvelopp pour grer correctement le flux des programmes de faon totalement abstraite. Il savrera par la suite que ce problme dabstraction est en fait le nud gordien des problmes de lapprentissage de la programmation. La mise la disposition des lves de ce module eut un effet secondaire inattendu. Les lves travaillant en autonomie ont rapidement montr des diffrences importantes dans leurs vitesses de progression, posant de srieux problmes la reprise dun cours ex cathedra par la suite. Vint alors lide dimplmenter le cours complet sur ordinateur tout en exploitant les nombreuses possibilits du multimdia. Cette implmentation fut ralise en juillet et aot 2000. Le didacticiel ainsi cr fut utilis ds la rentre de septembre pour lensemble des classes. Cette utilisation permit de constater une nette amlioration au niveau de lalgorithmique, mais des problmes subsistaient au niveau de la ralisation des programmes informatiques en pseudocode. Le module 8 fut alors dvelopp en fvrier 2002. Sa structure est trs voisine du module 5 sur la robotique virtuelle. Ce module simule le fonctionnement de lordinateur lors de lexcution du programme, montrant les changes avec le clavier et lcran et la gestion des variables. Ce module, en imageant la machine fonctionnelle, a permis une fois de plus aux lves de surmonter leurs difficults. Au bout de cinq ans dutilisation et damlioration de cette nouvelle mthode, je peux dire que les progrs sont surprenants et que plus aucun lve ne prsente de difficults majeures dans la ralisation de programmes simples, que ce soit en pseudocode ou en Pascal. Il savre toutefois que les difficults se sont reportes plus loin, au niveau de lutilisation des variables indices et des procdures paramtres.

Pour les dtails, voir Meurice de Dormale R. 1996 et 1997 (en annexe)

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 6 sur 30

Jai donc le projet de dvelopper deux modules permettant aux lves de visualiser ce qui se passe lors de lexcution des programmes concernant ces deux derniers points.

Organisation de la mthode CAR


Lorsquun novice apprend programmer, son problme est de surmonter simultanment trois difficults : 1. La matrise de lalgorithmique (notions abstraites) 2. La matrise de la gestion des variables (notions abstraites) 3. La fusion des deux lments prcdents afin de pouvoir crire des programmes qui vont traiter (de faon abstraite dans une machine abstraite) de linformation afin de fournir des rsultats corrects quelles que soient les donnes introduites dans la machine. Comme le montre la figure 1, ces trois difficults cumules se rvlent infranchissables. Lide est donc de dcouper le cursus en tapes sans quaucune de celles-ci ne prsente subitement lintroduction importante dlments soit trop complexes, soit trop nouveaux. Idalement, le passage dun module lautre devrait tre quasiment insensible. En outre, ce ne sont pas les contenus qui sont le plus craindre. Les jeunes dbutants sont confronts une difficult de taille : labstraction, omniprsente dans le domaine qui nous occupe. Mme si, de faon quelconque, une mthode concrte permet un dbutant de raliser ses premiers pas en faisant appel ses ressources, ce quil connat dj, en se rfrant du concret, tt ou tard, un saut dans labstrait se produit. Cest ce moment que a passe ou a casse . La tentative de cette nouvelle mthode est dtablir une passerelle avec main courante entre les deux falaises afin que ce saut ne doive jamais avoir lieu et que le plus grand nombre puisse atteindre lautre bord. En dautres termes, il faudrait faire en sorte qu lapparition dune nouvelle situation abstraite, le dbutant ait comme ressource, dune part, les images dune situation semblable concrte quil a dj eu rsoudre et, dautre part, les images de la machine fonctionnelle quil utilise afin de concevoir son programme. On diminue ainsi dautant le seuil franchir pour satisfaire la tche demande. Progressivement, le dbutant se constituera ainsi un stock dimages adquates et un stock de stratgies mettre en uvre dans tel ou tel cas qui lui serviront de support la rsolution de problmes nouveaux. Vue de lextrieur, la mthode est organise de la faon suivante :

Figure 2
Apprendre programmer : Pourquoi ? Comment ? Rupert MdeD. Page 7 sur 30

Un premier saut dans labstrait peut dj avoir lieu au moment de matriser les structures de contrle (conditionnelle, rptitive). Une passerelle consiste en la mise en place dun environnement dexprimentation qui permet au dbutant de construire ses concepts de fonctionnement des structures de contrle par essai et erreurs tout en faisant appel des situations (concrtes) connues qui ne le coupent pas de ses ressources (pour les dtails, voir article Robotique virtuelle : un environnement pour un apprentissage dynamique de lalgorithmique en annexe). Plus loin, nen dplaise aux puristes, un triple saut peut tre vit en optant rsolument pour loption selon laquelle les ordinateurs sont des robots 7. Si on conserve une distinction entre les deux types de machines, il est ncessaire dintroduire de nouvelles spcifications lorsquon passe des robots aux ordinateurs, introduisant une certaine cassure dans le cursus. Cette cassure ncessite linjection dune quantit de matire et de nouveauts substantielles. En revanche, lamalgame propos permet dobtenir un continuum : le passage du robot lordinateur ne ncessite plus, de ce fait, que lnonc de ses spcificits propres, comme on aurait le faire pour un robot trieur denveloppes ou gestionnaire de stock. De manire plus dtaille, ce continuum peut se concevoir de la manire suivante : Lordinateur est un robot, il se dfinit donc, comme nimporte quel robot, par Les actions lmentaires quil peut effectuer Les conditions quil peut tester Les structures de contrle quil peut excuter Lordinateur est un robot ayant les spcificits suivantes : Il reoit de linformation de lextrieur Il manipule cette information ( lintrieur) Il fournit de linformation vers lextrieur Pourquoi cette vision des choses vite-t-elle un triple saut dans labstrait ? Premirement, du fait mme du continuum nonc ci-dessus, il nest plus question de sarrter sur la voie des robots pour repartir sur ltude de lordinateur ncessitant la mise en uvre de nouveaux concepts. Deuximement, cela permet dviter que lintroduction de la notion de variable apparaisse ex abrupto, comme cest souvent le cas. Cela reprsente pour le dbutant un choc frontal avec quelque chose de totalement inconnu. Lamalgame robot-ordinateur permet dintroduire ce concept de faon douce en proposant au dbutant, dans le module 5 sur la robotique virtuelle, de grer des robots qui possdent des ardoises afin dy noter certains renseignements. Au moment o la notion abstraite de variable sera aborde, les stratgies de son jumeau concret (la manipulation de lardoise) seront dj en place. Lintroduction des variables grce lanalogie des planches autocollants (voir module 6) sera indolore , le concept gnral et les habitudes de manipulation des donnes tant dj prsentes. Troisimement, les petits modules de programmes grant des tches frquentes (compteurs, sommes, etc.) appels tours de main dans Images pour programmer pourront tre introduits en robotique virtuelle. Cest dj le cas pour trois dentre eux (deux compteurs et une somme). Ce sera le cas prochainement pour tous les tours de main vus dans la mthode (par exemple la position du premier et du dernier qui sera introduite par un robot possdant des ardoises et dont la tche sera de signaler les positions de la premire et de la dernire voiture rouges qui passent devant la fentre). Cette tactique permettra dviter la double difficult : que le dbutant soit confront une stratgie mettre en place dune part, qui plus
7

Si on se place du ct du dbutant, dautres avantages manent de cette affirmation. Dun ct, elle possde quelque chose de rassurant : le dbutant a le sentiment de sintroduire dans un univers moins inconnu, ou, tout le moins, dans un univers qui fait partie de son imaginaire depuis longtemps. Dun autre ct, cela dmythifie le ct intelligent de la machine, un robot ne ralisant que les actions qui lui sont commandes. Le dpart se fait donc sur des bases plus saines.

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 8 sur 30

est dans un univers abstrait quil connat mal (ou quil ne connat pas) dautre part ? En revanche, si, pralablement, le dbutant a d dvelopper une stratgie face un problme dinspiration concrte (positions de la premire et de la dernire voitures rouges), il aura moins de mal grer le problme plus abstrait quest le fait de signaler les positions du premier et du dernier mots attention dans une liste de mots, qui plus est, quand cette liste des mots est nimporte laquelle passant par la tte dun utilisateur inconnu. Aprs ces introductions aux variables (module 6) et aux tours de main (module 7), lapprenant vite un nouveau saut et retrouve un univers connu : un module de robotique virtuelle spcialement ddicac lordinateur (voir module 8) disposant de toutes les instructions ncessaires la conception de petits programmes en pseudocode. Huit variables y sont disponibles ainsi quun cran et un clavier. Lapprenant peut utiliser ce module pour raliser un grand nombre de programmes simples, y compris des programmes utilisant le tirage au hasard. Lexcution de tous les programmes se fait sous forme danimations qui montrent comment les choses se passent, tant lintrieur qu lextrieur de lordinateur. Vient enfin lintroduction de la syntaxe qui, comme il a t dit plus haut, ne joue quun rle franchement secondaire dans le curriculum ; on peut mme envisager que les programmes conus en pseudocode soient traduits automatiquement en Pascal (ou en tout autre langage de type procdural). Il ne faut toutefois pas perdre de vue que lobjectif est de rendre lapprenant autonome face une feuille blanche. La mthode atteindra ses objectifs finaux quand deux modules de robotique virtuelle adapts aux variables indices et aux procdures paramtres seront implments.

Diffrences entre CAR et Images pour programmer


Sur un grand nombre de points, la mthode CAR napporte fondamentalement rien de neuf par rapport Images pour programmer . Les concepts, images et analogies sont gnralement conservs. Ladoption dun support interactif permet toutefois lapport dlments supplmentaires tels que les animations, les auto-tests, etc. Cette interactivit devient particulirement intressante de par la possibilit de dvelopper des univers dexprimentation. Lexprience montre que, pour les personnes ayant quelques difficults dabstraction, ces univers dexprimentation sont particulirement bienvenus. Cest le cas pour le module 5; lenvironnement de robotique virtuelle permet lapprenant, par essais et erreurs, de se forger une reprsentation solide et correcte de la faon dont fonctionnent les structures de contrle, ssame indispensable pour aborder la programmation. Une lgre inflexion est donne quant au passage des robots aux ordinateurs, la mthode CAR essayant destomper au maximum les diffrences entre ces deux machines. Ceci permet dutiliser lenvironnement de robotique virtuelle pour introduire plus aisment certains concepts abstraits. Ainsi, le module 5 devient un camp de base permettant de soutenir le dbutant dans ses expditions "variables", "tours de main" et "programmation en pseudocode". Cette programmation en pseudocode peut alors tre aborde dans un environnement dexprimentation tout fait semblable celui des robots virtuels. Il est toutefois regretter que certaines richesses de Images pour programmer aient t (provisoirement) dlaisses. Cest notamment le cas de la dmarche descendante et structure dont lapproche procdurale est loutil privilgi; il est indispensable de promouvoir cette approche ds les premiers exercices. Il serait judicieux que les concepts de Quoi Faire Faire et Comment Faire Faire retrouvent une place de choix dans la mthode.

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 9 sur 30

Labsence de GNS, permettant au dbutant de visualiser le flux dexcution des programmes, est galement regrettable. Ces lacunes seront combles dans les mois venir.

CAR module par module


Par souci de brivet, seuls les modules apportant quelques nouveauts sont dvelopps en dtail, savoir les modules 4, 5, 6, 7 et 8 (signals en bleu). Les autres sont survols pour mmoire. Le lecteur intress trouvera lentiret de la mthode sur le cdrom joint.

Module 0 : le contrat
Il sagit du contrat pass entre la mthode et lapprenant. Lapprenant est inform des difficults qui lattendent. Il est galement mis au courant des bnfices quil pourra retirer de son apprentissage8. Actuellement, seuls les arguments de rigueur du langage et de la pense sont avancs. Notre intime conviction nous porte croire, en tout cas pour certains individus, que la pratique de la programmation procure ou dveloppe des capacits rsoudre des problmes et construire des projets. Mais les travaux de Romainville nous poussent une grande prudence quant aux affirmations sur les intrts et les transferts que pourrait procurer lapprentissage de la programmation. Lexamen de la littrature rcente serait indispensable pour faire le point ce niveau. Citons toutefois Linn M.C. et Dalbey J. qui considrent que, pour autant que lapprentissage de la programmation ait t fait en classe et avec un feed-back riche, les lves dveloppent des capacits explicite former des modles et travailler de faon modulaire ou procdurale. Lexamen des travaux de Gagn nous semble un piste trs intressante au niveau de lapprentissage des concepts, principes et solutions de problme suivre !

Module 1 : prsentation succincte des modules et de leur enchanement


Le but est de montrer la cohrence de la mthode afin que le dbutant ne butine pas de chapitre en chapitre sans ordre prcis ni sans comprendre que la matrise dun module est indispensable pour passer au module suivant.

Module 2 : quest-ce que programmer ?


Ce module explique que programmer est de lordre du Faire Faire et des consquences qui en dcoulent. Ce chapitre attire lattention du dbutant sur toutes les caractristiques dun programme. La diffrence fondamentale entre un humain (qui peut combler des imprcisions) et la machine est alors illustre. Les aspects matriser pour programmer sont ensuite noncs : connatre lexcutant, connatre la tche raliser, rdiger le programme et ensuite le valider pour toutes les conditions de fonctionnement imaginables. Pour terminer, un auto-test permet lapprenant de se situer au niveau de ses acquis.

Module 3 : quest-ce quun programme, de quoi est-il constitu ?


Le module va dcomposer la marche suivre en ses diffrents composants afin dintroduire les structures de contrle et faire apparatre leur importance.
8

Dans son relev sur les 5 difficults majeures dans lapprentissage de la programmation, du Boulay signale en premier lieu un problme dorientation gnrale : la question de savoir quoi est destine la programmation, quel genre de problmes peuvent tre abords et quels sont les avantages ventuels des efforts dpenss pour acqurir la comptence. En plus dinsister sur les avantages, il nous parat intressant que ce chapitre 0 aborde lavenir les deux autres aspects.

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 10 sur 30

Module 4 : particularits des structures de contrle


Lobjectif du module est dapprendre au dbutant les principales structures de contrle, leurs particularits, leurs fonctionnements de leurs mises en uvre. Un chapitre est consacr la construction des expressions boolennes et leur ngation (thorme de de Morgan). Cette construction des conditions est souvent nglige dans les mthode dapprentissage alors que Spohrer constate, au cours dune de ses exprimentations, que 48% des bugs relevs proviennent dune mauvaise construction des conditions des structures de contrle, notamment par confusion entre le ET et le OU lors de la ngation de conditions. Il recommande aussi ltude du thorme de de Morgan9. Chaque structure de contrle est ensuite mise en uvre dans un programme que lapprenant peut faire excuter pas pas. Il peut alors voir, chaque tape, ce qui se passe lextrieur de lexcutant (lorsquune instruction engendre une action de lexcutant), mais aussi, et surtout, ce qui se passe lintrieur de lexcutant lorsquun lment dune structure de contrle se prsente, particulirement quand cest le test dune condition10.

Cette analogie tend montrer que lexcutant ne peut examiner quune ligne la fois sans se souvenir de ce qui prcde, ni prsager de ce qui suit

La flche bleue signale la ligne en cours de traitement.

La flche rouge signale le futur saut dans le flux du programme

Cette zone signale les actions qui se passent lextrieur. Pour cette ligne, il ny en a aucune. Cette zone montre ce qui se passe lintrieur de lexcutant lors du traitement dun lment dune structure de contrle

Figure 3 ce niveau, on peut parler d'une phase d'imprgnation : lapprenant observe lexcution du programme et les ractions extrieures engendres chez lexcutant. Il peut aussi observer les ractions intrieures provoques par les structures de contrle et la suite que cela engendrera dans lexcution du programme.

Thorme de de Morgan : la complmentation dun OU devient un ET avec chaque terme complment (herbe mouille si il pleut OU si jarrose. Herbe PAS mouille si il ne pleut PAS ET si je narrose PAS). La complmentation dun ET devient un OU avec chaque terme complment (je peux conduire si jai le permis ET si jai la cl. Je ne peux pas conduire si je nai PAS le permis OU si je nai PAS la cl). notre avis, pour le peu de littrature consulte, cet aspect sil ne se passe rien dehors, cest quil se passe quelque chose dedans est neuf et semble savrer bnfique pour le dbutant qui peut ainsi prendre conscience quil y a, en quelque sorte, deux excutants : lautomate qui excute les actions extrieures et, lintrieur de celuici, un second automate qui possde un programme pour excuter le programme (en grant les structures de contrle, testant les conditions, effectuant les branchements,). Cet aspect est approfondir et pourrait fournir des retombes didactiques intressantes.
10

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 11 sur 30

Dautre part, il faut que le dbutant comprenne rapidement quun programme ne doit pas fonctionner que dans un cas prcis, mais dans tous les cas possibles et imaginables. Lattention du novice est attire sur ce point notamment par la prsentation dun mme programme sexcutant dans des circonstances diffrentes tout en montrant son rsultat au niveau de lexcution externe, comme cest le cas dans la figure ci-dessous.

Figure 4 Aprs cette phase, un grand nombre de questions (28) sont poses afin que lapprenant puisse vrifier ses acquis. Ces questions se divisent en deux grands groupes : 1. Les questions plus ponctuelles demandant explicitement quelle ligne du programme va sauter lexcution en fonction des conditions prsentes dans lnonc

Figure 5 2. Les questions plus globales demandant le rsultat de lexcution de petits programmes.

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 12 sur 30

Figure 6 Dans un avenir proche, la trace des rponses fournies par l'apprenant permettra de vrifier dans quelle mesure il a rellement acquis les notions prsentes dans ce module. Au niveau mthodologique, il suffit de laisser l'lve progresser son rythme et rpondre ses questions ventuelles. La vrification des rponses lauto-test en fin de chapitre permettra de vrifier dans quelle mesure il peut continuer le cursus. De toute faon, les performances au module 5 (robotique virtuelle) montreront de faon explicite si les notions des 4 premiers modules sont acquises.

Module 5 : robotique virtuelle


Avec le module 8 (programmation virtuelle en pseudocode), ce chapitre reprsente le pierre angulaire de la mthode. Afin de ne pas trop alourdir ce document, le texte dune communication faite Montral en 1997 se trouve en annexe. Ce texte tente de rpondre la question : a marche, mais pourquoi ? . Il a t ralis a posteriori sur base du livre de Britt-Mari Barth : Lapprentissage de labstraction . Limportant est de permettre lapprenant dentrer dans labstraction sans tre coup de ses ressources, de ce quil connat dj dans le concret. La virtualit peut tre considre comme ayant simultanment un pied dans le concret (elle peut faire rfrence des lments concrets connus de lapprenant) et un pied dans labstrait (par essence, elle nexiste pas, il est possible de la disjoncter du rel), mais ceci est un dbat qui pourrait, lui seul, ncessiter tout un mmoire. Le chapitre sur lhistorique de la mthode explique la manire dont ce module a t dvelopp. Il possde actuellement 17 robots virtuels, mais lobjectif est darriver une cinquantaine. Les robots actuels, regroups par catgories, sont : 1. Les conditionnelles et leurs imbrications (le but est dapprendre utiliser le Sinon et imbriquer des conditionnelles les unes dans les autres) 1.1. Lautomate lanceur de pice (une condition pour discriminer deux cas) 1.2. Lautomate livreur de pizza (deux conditions trois cas) 1.3. Lautomate montreur de cartes (trois conditions quatre cas) 1.4. Lautomate lanceur de boules (deux conditions quatre cas) 2. Les oprateurs logiques (manipulation ET, OU, PAS + thorme de de Morgan) 2.1. Lautomate tireur de nombres (utilisation du ET et du OU bon escient) 2.2. Lautomate frileux (utilisation du ET et du PAS) 2.3. Lautomate faiseur de puzzle (utilisation du ET, du OU et du PAS) 2.4. Lautomate loueur de voiture (application de de Morgan au ET) 2.5. Lautomate sorteur de chien (application de de Morgan au OU) 3. Les rptitives et leurs imbrications (choix entre Rpte et Tant que, imbrication de rptitives) 3.1. Lautomate chargeur darmoires (utilisation du Rpte) 3.2. Lautomate transporteur de valises (utilisation du Tant que) 3.3. Lautomate transporteur de repas (2 Rpte imbriqus dans un Rpte) 4. Imbrication de conditionnelles et rptitives
Apprendre programmer : Pourquoi ? Comment ? Rupert MdeD. Page 13 sur 30

4.1. Lautomate multiple lanceur de pices (un Si imbriqu dans un Rpte) 4.2. Lautomate dpouilleur denqutes (deux Si imbriqus lun dans lautre et dans un Tant que) 5. Les variables et tours de main (introduction, voir chapitre sur lorganisation de la mthode) 5.1. Lautomate gardien de muse (utilisation dun compteur avec un Rpte) 5.2. Lautomate remplisseur de bacs de bouteilles (utilisation dun compteur avec un Tant que) 5.3. Lautomate compteur de la valeur dune liasse de billets (une somme avec un Rpte) Chaque exercice est dcompos en deux pages, une page ddition et une page dexcution. La page ddition contient tous les lments pour raliser le programme ncessaire laccomplissement de la tche dcrite dans lnonc. Le but est de composer, sur le grand tableau magntique gris, le programme en tranant les lments puiss dans la rubrique constituants de la marche suivre (instructions dactions lmentaires, conditions, oprateurs logiques et structures de contrle).

Figure 7 Le tableau de bord contient : Un bouton permettant daccder lnonc (voici lnonc correspondant lexercice de la figure ci-dessus)

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 14 sur 30

Figure 8 Deux aides qui seront bientt disponibles, une aide technique (comment utiliser les diffrents lments du programme) et une aide la conception (diffrentes questions permettant lapprenant de dmarrer sa rsolution). Plus tard, le module possdera aussi un petit tutoriel dintroduction afin de faciliter sa prise en main par le dbutant. Un bouton de mise en page qui indente automatiquement les lignes du programme en fonction des structures de contrle (aide la lecture et la vrification du programme) Un bouton deffacement du programme pour tout recommencer zro Un bouton permettant daccder la page de test Un bouton permettant de revenir au menu. Les constituants de la marche suivre contiennent 4 catgories de sabots Les instructions dactions lmentaires qui varient en fonction du robot Les conditions qui varient galement en fonction du robot Les oprateurs logiques qui ne varient pas (dans certains exercices, ils ne sont pas disponibles afin de forcer lutilisation du Sinon) Les structures de contrle qui ne varient pas non plus. On parle de sabot (comme dans certains jeux de carte) car chacun des champs gris est une rserve do on peut tirer autant de copies du contenu quon veut, ces copies pouvant tre tranes (drag and drop) sur le tableau magntique gris. Une fois dposes, ces copies peuvent encore tre dplaces ou supprimes (voir mode demploi). Le cadre noir en bas de lcran affiche en permanence les indications ncessaires. Le lecteur intress pourra trouver plus de dtails dans le mode demploi. Quels sont les intrts dune telle interface ? Comme il a t dj comment, il vaut mieux dissocier les difficults. Quand on veut programmer, une premire difficult est dj lutilisation dun environnement de programmation dans lequel la dissociation dition Excution est rarement vidente11. Ce module
11

Pour du Boulay : Une distinction cruciale est faire entre les diffrents rles de l'ordinateur qui sont souvent mlangs par le novice. D'une part se trouve la machine excutant un des programmes de l'apprenant. Dans ce mode, elle devient le mcanisme dcrit par le programme, elle devient l'excutant. D'autre part, la machine devient
Rupert MdeD. Page 15 sur 30

Apprendre programmer : Pourquoi ? Comment ?

distingue clairement ces deux phases (il est impossible de modifier le contenu dun programme en phase dexcution ni de lexcuter en phase ddition) et en permettent lutilisation trs aise, prparant ainsi le novice lutilisation dun environnement rel de programmation. Lencodage du programme ncessite la matrise du clavier et engendre constamment des erreurs de syntaxe. Se pose aussi le problme de comment dire les choses 12. Dans les exercices, toutes les instructions, conditions, sont dj formules lavance et disponibles. Lapprenant peut donc focaliser son attention sur la conception lexclusion de tous autres problmes de frappe ou de syntaxe. Il lui suffit de tirer les lments sur le tableau magntique en fonction de ses besoins. La mise en page sous forme dindentation est automatise, elle montre son intrt et, petit petit, imprgne lapprenant qui finit par ladopter. Une bonne mthode (qui sera mentionne dans laide la conception) est de suggrer au dbutant de programmer par association dides (le fil dAriane) plutt quen alignant les unes aprs les autres les instructions du programme de manire squentielle du dbut la fin. Le tableau magntique a t conu cet effet. Le concepteur du programme peut trs bien placer certaines instructions de la fin dun programme (comme la condition dune boucle Rpte par exemple) avant de placer ce qui prcde. Un simple clic sur le bouton Mise en page lui permet dobtenir son programme en ordre. Par la suite, il lui est encore possible de modifier facilement son programme : la colonne jaune de gauche lui permet de dplacer toute une ligne dlments en une seule fois, et la colonne jaune de droite lui permet dobtenir une ligne vide en repoussant lensemble des autres lignes vers le bas. La zone en dessous des pointills est disponible pour concevoir le programme, mais le programme mis en page ne pourra dpasser cette limite de 25 lignes. Un problme sest pos quant lutilisation du Fin Si et du Fin Tant Que . La question est ardue et de nombreux courants de pense ont vu le jour ce sujet. Il nous a paru pdagogique de placer le novice face ses responsabilit et de lobliger marquer explicitement la fin des instructions faisant partie dun Si , dun Sinon ou dun Tant Que . Enfin, pour terminer cette partie dition, le fait de demander la vrification du programme va provoquer, en tche de fond, une vrification de la syntaxe, c'est--dire la manire dont le programme a t construit (et non de la manire dont il a t conu, la conception tant vrifie par le test lui-mme). Cette vrification est trs complte et donne des messages explicites13. Tout message signale le type derreur trouv et quelle ligne elle se situe. Lapprenant peut alors facilement retrouver son erreur et la corriger. Laccs la page de test nest autoris que quand plus aucune erreur de syntaxe ne subsiste dans le programme. La page de test possde les caractristiques suivantes :

le gestionnaire du programme dans le sens o elle permet de l'diter, le corriger, le stocker. Dans ce cas, les touches permettent de modifier le contenu du programme et ne correspondent pas aux entres prvues lors de son fonctionnement (lectures). Il est important de ne pas sous-valuer ce problme11. Apprendre un langage de programmation ne sera pas seulement apprendre la syntaxe, mais aussi la manire de procder l'dition du programme,
12

Certains auteurs signalent un danger important utiliser le langage naturel (pseudocode) pour apprendre programmer. du Boulay redoute la drive que le novice pense que le systme soit dot de capacits humaines, Bonar parle carrment de bug generator de par la confusion entre la smantique du langage naturel et celle du langage informatique. Ces deux cueils ne nous sont pas apparus, sans doute par la prsentation de primitives dj rdiges et par leur classement en catgories suivant leurs statuts (un ET utilis pour former une chane dinstructions sera immdiatement repr par le vrificateur de construction du programme, vitant la prise de mauvaises habitudes).

13

Pour du Boulay les messages derreur sont un point crucial de la machine fonctionnelle et forment une fentre importante sur lintrieur de la machine. Un grand soin doit y tre apport afin de sassurer quils dcrivent lerreur en des termes ou des composants connus du novice.

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 16 sur 30

La partie suprieure reprsente lautomate et son environnement La partie gauche de lcran est occupe par le tableau magntique et le programme mis en page La partie droite possde tous les boutons et les crans de contrle.

Figure 9 Comme signal plus haut, le programme doit fonctionner quelles que soient les conditions dans lesquelles lautomate se trouve. Il est souvent difficile, pour le dbutant, de concevoir toutes les possibilits dans lesquelles un programme va fonctionner14. Le dbutant va concevoir son programme gnralement pour un sous-ensemble des conditions dentre possibles et ensuite le tester sur ce mme sous-ensemble, ce qui lui fera dire que son programme est correct sans quil se rende compte que sa validation est incomplte. Pour viter cela, nous avons dfini, pour chaque automate, les diffrentes conditions de fonctionnement dans lesquelles il pouvait dmarrer. Chacune de ces possibilit a donn lieu un bouton de test numrot. Certains robots possdent 2 boutons de test, dautres jusqu 6 en fonction des circonstances. Quand un test est termin, le bouton bleu prend la couleur verte si lexcution na provoqu aucun problme, il devient rouge en cas derreur (plantage, rsultats mauvais ou incomplets). Lexercice est quasiment russi quand tous les boutons dun mme exercice sont verts. Lavis du professeur doit alors tre sollicit. La vrification automatique de la rationalit dun programme est ltude (partant de lhypothse que le nombre de conditions testes en cours dexcution est un bon indicateur) mais lavis du professeur est prfrable car il faut viter tout prix que le dbutant prenne de mauvaises habitudes de programmation. De plus, certains noncs permettent plusieurs types de solutions sans quil y en ait ncessairement une meilleure que les autres. Il est mme parfois trs intressant de pouvoir discuter des avantages et

Spohrer signale, au niveau des erreurs de conception, les cas inattendus : le novice crit des programmes qui fonctionnent dans certains cas mais pas dans tous .

14

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 17 sur 30

inconvnients des diffrentes solutions. Ce type dvaluation doit donc rester, en fin de compte, lapanage de lenseignant. Deux types dexcutions sont possibles : lexcution automatique, au cours de laquelle tout le programme est excut du dbut la fin, et lexcution pas pas, o lutilisateur doit cliquer sur un bouton pour obtenir lexcution de linstruction suivante. Ce mode dexcution est particulirement intressant soit pour dbugger un programme ou en phase de tutorat pour demander lapprenant de prdire ce qui va se passer la ligne suivante, excellente faon de vrifier sil matrise le fonctionnement des structures de contrle. Les autres constituants du tableau de bord sont : Le bouton Corriger permet de retourner la page ddition Le bouton dAide permettra davoir des dtails sur les constituants de la page Le bouton Menu permet de choisir un nouvel exercice Lindicateur de vitesse dexcution qui peut tre rgl pour ralentir les mouvements des automates Le bouton Stop permet darrter un programme qui tourne sans fin en excution automatique Le cadre bleu donne les conditions de dpart de lautomate Le cadre jaune donne des commentaires en fin dexcution du programme, notamment en cas derreur de faon aider lutilisateur dcouvrir le problme.

Durant lexcution du programme, un pointeur vert signale la ligne en cours de traitement. Sil sagit dune condition, une panneau indicateur apparat afin de signaler si le test a donn un rsultat vrai (panneau vert) ou faux (panneau rouge).

Les flow-charts telles que le GNS sont intressantes pour vrifier le flux dun programme, ce qui est la fois ducatif au niveau du fonctionnement des structures de contrle, mais surtout une aide importante pour dcouvrir les erreurs de programmation. Apprendre concevoir ces flow-charts est une difficult supplmentaire pour le dbutant pour un intrt qui ne sera que momentan (ces reprsentation sont gnralement abandonnes assez rapidement, elles deviennent fastidieuses quand les programmes deviennent relativement complexes). Lide est davoir le beurre et largent du beurre en traduisant automatiquement le programme ralis en GNS. Lapprenant, sans devoir matriser des savoir-faire supplmentaires, aurait la possibilit de tester son programme soit sous forme squentielle (comme cest dj le cas pour le moment) soit sous forme de GNS qui montrerait mieux le flux dexcution du programme. Cette implmentation est ltude. Toutefois, dans lexcution squentielle, des indicateurs permettent de reprer les diffrents lments des structures de contrle actives. Dans lexemple ci-dessous, le curseur vert indique la ligne en cours de traitement. Les indicateurs mauves indiquent les positions des lments constitutifs du Tant que. Les indicateurs bleus indiquent les positions des lments constitutifs des Si, les indicateurs bleus griss correspondant au Si en cours dexcution. Un bon exercice serait de montrer cette portion de programme un apprenant et lui demander, sachant que la ligne 9 est en cours dexcution, quels taient les rsultats des tests des lignes 2, 3 et 6.

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 18 sur 30

Figure 10 Comme il a t dit plus haut, une rflexion est en cours pour voir comment, ds les premiers programmes, une dmarche procdurale pourrait tre mise en uvre. Cette dmarche nous parat plus intressante que la dmarche actuelle car elle favoriserait la dmarche descendante et structure qui sera indispensable pour les programmes plus complexes ou plus volumineux. Cela viterait galement de devoir introduire ce nouveau concept plus tard (cf. les sauts dans labstrait).

Module 6 : les spcificits du robot-ordinateur


Au niveau des spcificits du robot-ordinateur, il va tre essentiellement question du transfert, du stockage et de la transformation dinformation. Il fallait trouver une analogie adquate afin de prsenter un systme homogne au dbutant. Aprs mre rflexion, lutilisation dautocollants nous a paru la plus judicieuse. Attention, il sagit dautocollants opaques et munis de colle forte. En dautres termes, quand un autocollant est coll sur un autre, lancien autocollant est devenu invisible et inaccessible, et le nouvel autocollant ne peut plus tre dtach. Voici la saga des autocollants. Comme signal plus haut, lordinateur est considr comme un robot ayant des spcificits propres. lentre du chapitre, une mtaphore anthropomorphique est prsente.

Figure 11 Lopration de lecture au clavier est souvent prsente comme banale, mais reprsente des difficults pour certains dbutants. Ils ne comprennent pas toujours que la variable associe linstruction de lecture
Apprendre programmer : Pourquoi ? Comment ? Rupert MdeD. Page 19 sur 30

est affecte (du Boulay). Un rsum de ce qui se passe est prsent lapprenant (suivez la flche bleue et les numros des tiquettes grises). Remarque : une tiquette 4bis sera ajoute signalant quune copie de ce que lutilisateur tape au clavier apparat lcran. Sans avoir lair dy toucher, le concept daffectation dune variable est abord.

Figure 12 Dans le cas prsent, laffichage lcran va mettre en uvre le concept de lecture dune variable. Le principe adopt est que, lorsque lordinateur trouve le nom dune variable dans la ligne quil est en train de traiter, il va chercher une copie du contenu de cette variable sur un autocollant et vient le coller sur le nom de la variable stipul dans la ligne.

Figure 13

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 20 sur 30

La qualit dune analogie est dtre complte, correcte, ne pas tre source derreurs et ne pas dboucher sur une impasse par la suite. Une bonne analogie pour illustrer le concept de variable doit rpondre aux critres suivants15 : 1. 2. 3. 4. 5. 6. 7. Une variable sans tiquette ne peut tre atteinte La notion de type doit tre prise en compte Une variable ne peut tre lue avant dy avoir inscrit quelque chose La variable ne contient que la dernire information enregistre16 La variable contiendra une constante et non une expression La lecture dune variable ne vide pas son contenu Lanalogie doit pouvoir fonctionner au moment de lutilisation des paramtres.

Si certaines de ces affirmations sont videntes (la premire par exemple), dautres le sont moins. Lanalogie des planchettes autocollants nous parat rpondre tous ces critres, y compris le dernier : une planchette peut tre enleve de son clou, y tre attache par lintermdiaire dun lastique et envoye dans une procdure. En fin de procdure, elle viendra reprendre sa place originale. Voici une illustration de lanalogie des planchettes autocollants (la largeur symbolise le type).

Figure 14 Voici comment est prsente laffectation dune variable avec une valeur rsultant dune expression mathmatique faisant elle-mme intervenir une variable.

15

du Boulay signale un florilge derreurs au niveau des variables : le fait que le contenu d'une variable puisse disparatre ou qu'on puisse se souvenir d'un ancien contenu de variable; une autre confusion est de croire que quand on assigne une variable avec l'expression 7 + 4, c'est cette expression littrale qui s'inscrit dans la variable plutt que la valeur 11; certains croient que quand on assigne une variable dans une autre, la variable de dpart se vide.

Putnam signale que l'erreur la plus frquente est de croire qu'une variable peut contenir plus d'une valeur. Une autre erreur (quand on demande llve dexpliquer quoi sert un programme) est d'utiliser toujours la mme valeur initiale de la variable sans procder sa mise jour.

16

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 21 sur 30

Figure 15 Comme pour les autres module, un auto-test permet lapprenant de vrifier ses acquis. Les questions portent dabord sur les contenus des variables aprs plusieurs affectations, ensuite sur la compatibilit des types (le dbutant ne se rend pas toujours compte quune expression peut changer le type des donnes obtenues). Voici deux exemples de questions.

Figure 16

Figure 17 Remarque : bien que la lecture des programmes soit facilite par lutilisation de noms de variables qui veulent dire quelque chose , cela entrane certains dbutants penser quil y a un lien entre le nom de la variable et son contenu (du Boulay, Putnam). Dans une version ultrieure, afin dviter ce genre de confusion, certaines variables seront parfois appeles par des noms qui ne veulent rien dire .

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 22 sur 30

Module 7 : les tours de main


Images pour programmer met en exergue un certain nombre de petits programmes qui aident la vie lors de la conception de programmes plus importants ; ils sont appels tours de main . Ceci rejoint le conseil de du Boulay suggrant lacquisition par le dbutant de structures standards utiliser pour accomplir certaines tches de base. Ce module prsente actuellement 6 tours de main (tous emprunts Images pour programmer ) : 1. 2. 3. 4. 5. 6. Le compteur La variable signal La somme Le plus petit et le plus grand Le dernier et le prcdent Les positions du premier et du dernier

Un septime tour de main sera bientt ajout afin de faciliter la vie des apprenants auquel il est systmatiquement demand des programmes robustes, ce sera le tour de main de bonne lecture qui vitera la lecture de donnes indsirables (un 7 comme valeur obtenir pour un d ou un 5 pour le nombre de candidats aux lections par exemple). Chaque tour de main est dvelopp en dtail, mais un raccourci permet aux plus rapides de sauter directement au tour de main fini afin den examiner la structure. Sils ne la comprennent pas, un retour en arrire est toujours possible. Le programme est alors excut en utilisant la mtaphore anthropomorphique dveloppe au module prcdent. Ce chapitre nest pas muni dun auto-test, le module suivant rvlera sans problme les lacunes des apprenants.

Module 8 : programmation virtuelle en pseudocode


Le module 8 a une interface trs semblable celle du module 5 (robotique virtuelle) mis part la prsence de variables et les constituants de la marche suivre sont adapts ce type de robot. Au-dessus du tableau magntique se trouve 8 variables configurables par le programmeur, il peut tout moment y indiquer un nom et un menu droulant lui permet de choisir entre les 5 types standard du Pascal (boolen, caractre, entier, rel, chane de caractres). Une variable ainsi dclare peut tout moment tre trane (drag and drop) sur le tableau magntique. Les instructions dactions lmentaires sont au nombre de 4 : Affiche+nl , pour afficher lcran et faire ensuite passer le curseur au dbut de la ligne suivante Affiche , pour afficher lcran, mais le curseur reste derrire le dernier caractre affich Lis et colle sur , pour lire une donne au clavier et affecter la variable dont le nom suit (va coller lautocollant sur la planchette portant ce nom) 4. , pour affecter une variable17. 1. 2. 3. Viennent ensuite les constantes de types numrique et caractre(s) (que le programmeur peut complter lui-mme et traner ensuite sur la tableau magntique), ainsi que les constantes Vrai et Faux. Le contenu des constantes caractre(s) apparaissent en caractres normaux dans leurs cadres jaunes, et les constantes numriques en gras. Toutefois, cette diffrence est trop tnue et, dans une version ultrieure, les
Ceci vite les erreurs signales par une foule dauteurs, soit la confusion avec le signe =, soit laffectation lenvers (de la gauche vers la droit plutt que de la droite vers la gauche). La disposition du = dans une catgorie diffrente du permet dattirer lattention du dbutant sur les statuts de ces deux signes.
17

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 23 sur 30

constantes caractre(s) apparatront entre apostrophes, comme cest le cas en Pascal, afin dattirer correctement lattention sur leur statut. Les oprateurs mathmatiques sont : + , - , * , / les 4 oprations de base DIV fonction donnant le quotient de la division entire MOD fonction donnant le reste de la division entire Hasard fonction donnant un nombre tir au hasard entre les deux bornes indiques comprises

Les divers contiennent : ( , ) , [ , ] (les crochets nont pas encore dutilit) Les oprateurs boolens sont ET , OU , PAS Les comparateurs sont = , < , > , <= , >= , <> Viennent enfin les diffrentes structures de contrles. Tout cela donne lcran suivant.

Figure 18 Lavantage de ce genre de regroupements est que lapprenant, ds le dpart, a lattention attire sur les diffrents statuts des lments quil utilise pour concevoir son programme. Ceci est essentiel lorsquil devra rechercher des lments du langage dans un livre par exemple ou comprendre la littrature spcialise. Dans les versions ultrieures, il sera veill ce que la rigueur des appellations soit amliore. Lnonc est obtenu en cliquant sur les boutons numrots de 1 20. Lnonc peut tre dplac et redimensionn. Il peut de plus rester affich en permanence, tant sur la page ddition que sur la page dexcution. Lutilisateur construit son programme de la mme faon que dans le module 5.

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 24 sur 30

Les mmes caractristiques sont remarquer au niveau de la facilit dutilisation, du manque derreur de syntaxe, de visualisation des statuts des lments constitutifs. Prcisons quune variable doit ncessairement tre nomme ET type avant de pouvoir tre utilise, ce qui est galement trs ducatif. En cas derreur de type, il suffit de le modifier dans la page ddition au niveau du menu droulant et demander une nouvelle excution. Le type sera automatiquement mis jour. Une vrification de la syntaxe est ralise au moment du passage la page de test avec message signalant le type derreur et la ligne laquelle elle se trouve. Voici la page dexcution.

Au niveau de la page dexcution, il y a une nouveaut : chaque ligne traite est amene sur la table de gestion des autocollants . les manipulations ncessaires y sont ralises afin dexcuter linstruction. Quelle que soit la manipulation (affichage, lecture, affectation, test de condition, rsolution dune expression mathmatique,) lentiret du traitement est anim. Le transfert et le collage des autocollants est montr explicitement de faon favoriser la cration dimages mentales et lancrage de la reprsentation du fonctionnement de la machine fonctionnelle. Pour les expressions boolennes, les autocollants changent de couleurs au fur et mesure des rsultats du traitement suivant que le rsultat est vrai (vert) ou faux (rouge). Chaque variable est prsente avec son nom, son type et son contenu. Une variable non encore affecte ne prsente aucun autocollant de contenu; sa lecture provoquera une erreur avec message explicite18. Au

Selon du Boulay : Une difficult majeure est l'initialisation des variables. Il est typique doublier d'initialiser la variable "Somme" car l'analogie est faite avec une bote, et si personne n'a utilis cette bote avant, elle est forcment vide, et ce vide reprsente doffice le zro. Certains systmes exacerbent cette mauvaise comprhension en assignant d'office des valeurs par dfaut aux variables non assignes. . Ceci suppose que lapprenant vrifie le
Apprendre programmer : Pourquoi ? Comment ? Rupert MdeD. Page 25 sur 30

18

moment des calculs et des affectations, les erreurs de types sont signales de faon prcise (messages derreur). Voici comment se prsente une erreur daffectation, toutes les variables tant cette fois dclares de type entier.

Figure 19 Une seule page ddition est actuellement prvue pour les 20 programmes plus tous ceux que peut taper lapprenant, programmes de sa propre conception ou dont lnonc a t conu par lenseignant. Dans une prochaine version, il est envisag, comme pour les robots, de crer un exercice par programme, ce qui permettrait, dans une certaine mesure, des excutions automatiques avec des listes de donnes sensibles (valeurs pouvant provoquer une erreur, ce qui serait le cas dans le programme prsent si, comme cela arrive souvent, lapprenant navait pas imagin que lutilisateur puisse donner directement la valeur 0 (risque de division par 0)). Mme dans cette architecture, une page ddition resterait libre afin de pouvoir taper des programmes rpondant des noncs extrieurs au module. Le programme est excut pas pas, mais il est possible denvisager une excution automatique. Parmi son relev des difficults des dbutants, du Boulay signale quil est rarement clair pour un novice que laffichage lcran reprsente un enregistrement des interactions prcdentes entre lutilisateur et la machine . Or, normalement, lorsque lcran est complet, les nouveaux affichages sajoutent en bas de lcran, provoquant au fur et mesure la disparition des affichages du haut. Ce phnomne est nfaste car, quand le professeur est appel en fin de programme pour valider celui-ci ou pour expliquer les raisons de son dysfonctionnement, certaines informations risquent davoir disparu. Il
calcul effectu par lordinateur pour remarquer lerreur, ce qui est rarement le cas. Nous avons opt pour une solution plus simple : montrer explicitement que la variable est toujours vide et gnrer un message derreur.

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 26 sur 30

lui est alors impossible de prendre connaissance de lhistorique de ces changes. Pour viter cet inconvnient, le champ servant dcran a t muni dun ascenseur afin que le professeur puisse rcuprer tout lhistorique des changes et, ventuellement, expliquer lapprenant les causes de lerreur. Les apprenants sont trs motivs par ce module et fournissent des programmes de qualit. La plus grande difficult, au moment du passage la syntaxe Pascal, est la gestion des Begin et End dans lutilisation du IF et du While. Aprs quelques erreurs incomprhensibles et une tude correcte de leurs feuilles de syntaxe, ce problme sestompe.

Module 9 : la syntaxe Pascal


Un rsum de la syntaxe Pascal est prsent. Module parfaire avec des exemples, des cas concrets.

Module 10 : exercices de programmation en Pascal (noncs)


Neuf noncs sont proposs. toffer.

Module 11 : les variables indices


Module en cours damlioration

Module 13 : les procdures paramtres


Module en cours damlioration

Apport du DES-TEF
Les apports du DES-TEF ont t de trois ordres : Les apports thoriques par lensemble des modules qui mont permis de daugmenter mes connaissances en pdagogie, valuation, systmes et dispositifs de formation et dducation, conception et ralisation multimdia, dispositifs de formation distance, contrle de qualit. Les apports pratiques au travers un grand nombre de travaux seul ou en groupe. La confrontation avec le rel permet de prendre connaissance de vrais problmes et dapprendre les rsoudre. Les apports des quipes qui ont choisi mon logiciel comme base de travail, soit pour en analyser la conception, soit pour en valuer la qualit, soit pour sintresser au phnomne dinnovation luimme.

Tous ces apports sont vraiment importants et profonds, je me rends compte quil me faudra encore du temps pour en tirer les pleins profits par le truchement des nombreux documents et rfrences dont jai fait le plein . Je suis maintenant par pour terminer mon didacticiel dans les meilleures conditions afin quil puisse aider les jeunes prendre possession de leurs pleines possibilits intellectuelles et ventuellement pratiquer un mtier que je leur aurai fait dcouvrir.

Fiche technique
Ce didacticiel est construit sur base du progiciel ToolBook II version 6.0 Sa taille totale est actuellement infrieure 10 Mo. Il tourne sur toutes les versions de Windows et toutes les machines partir des 486, la taille de la mmoire est indiffrente.

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 27 sur 30

Ce logiciel tourne sur poste seul (possibilit de sauver les travaux des modules 5 et 8) et sur rseaux Linux, Novell, Windows, etc. En cas dinstallation en rseau, les sauvegardes des modules 5 et 8 peuvent galement seffectuer en donnant comme destination un rpertoire ouvert en criture.

Conclusions
En guise de conclusion, nous pourrions nous demander pourquoi il est utile de se dmener pour amliorer les mthodes dapprentissage de la programmation une poque o elle a quasiment disparu de nos coles secondaires. Je vois trois rponses cela : Premirement parce que jai constat que ce cours est bnfique pour les lves. Ils amliorent leurs capacits de logique et dabstraction, mme si des expriences nont pas encore prouv ce fait de faon indubitable. Deuximement, on pourrait se demander pourquoi les cours de programmation ont disparu des coles. Jattribue cela deux causes : dune part la difficult des mthodes employes qui rendent ce cours ardu pour des dbutants adolescents, dautre part, la formation des enseignants ntait et nest pas la hauteur. Troisimement, un retour timide de la programmation voit le jour dans les coles secondaires belges via loption Sciences et Informatique . Toutefois, ces cours semblent reprendre dans les mmes conditions quils ont commenc il y a 10 ou 20 ans : avec des enseignants mal forms utilisant des mthodes incertaines.

Au vu de ces trois arguments, il est tout fait pertinent de dvelopper ce genre de mthode pour la programmation puisse retrouver une place de choix dans le secondaire et aider les lves dvelopper mieux encore leurs facults intellectuelles. En tout cas, en ce qui me concerne, jai constat une relle amlioration des capacits logiques et dabstraction chez nombre de mes lves, et, si ctait refaire, je le referais.

Remerciements
Tous mes remerciements vont dabord Charles Duchteau pour toute la passion, la fougue, lhonntet intellectuelle et le travail dont il fait preuve au service des autres. Jai toujours pu compter sur son aide. Merci aussi tienne qui loccasion me fait part de ses conseils et nhsite pas faire connatre mon logiciel. Tous mes remerciements pour Brigitte, Bernadette, Marguerite, Sbastien, et tous les intervenants du DES qui nhsitent pas investir temps, labeur, intelligence et gentillesse pour faire du DES-TEF la vritable russite quil est. Grand merci Patrick et Pierre pour leur travail important dexamen et damlioration du logiciel. Merci Adle, Pierre (encore) et Amaury qui se sont penchs sur mon travail selon langle particulier de linnovation. Merci Michel davoir pluch mon logiciel dans le moindre dtail. Merci aussi tous les participants au DES de cette anne et de lanne passe. Nous formions, formons et formerons une bonne quipe. Merci mes lves qui collaborent lamlioration de la mthode et mes proches qui me supportent Merci Jean-Baptiste Sonnet qui a dessin les robots (les beaux).

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 28 sur 30

Bibliographie
Barr A., Beard M., Atkinson R. C., The computer as a tutorial laboratory : the Stanford BIP project International journal of man-machine studies (1976) 8, pp. 567 596 Barth B. M., Lapprentissage de labstraction, Paris, Retz Cunniff N., Taylor R. P., Black J. B., Does programming language affect the type of conceptual bugs in beginnerss programs ? A comparison of FPL and Pascal in Studying the Novice Programmer, University of Michigan 1989 PP 419 429 du Boulay B., Some difficulties of learning to program in Studying the Novice Programmer, University of Michigan 1989 PP 283 299 du Boulay B., OShea T., Monk J. B., The black box inside the glass box in Studying the Novice Programmer, University of Michigan 1989 PP 431 446 Duchteau Ch., Faut-il enseigner linformatique ses utilisateurs ? Communication au 4 colloque francophone sur la didactique de linformatique, Qubec, Formation-recherche en ducation n 5.38, Publications du CeFIS, Namur (B), Facults Notre-Dame de la Paix Duchteau Ch., Images pour programmer, CeFIS, DET, FUNDP, Namur. Consultable sur Internet ladresse http://www.det.fundp.ac.be/cefis/publications/doconline.html Duchteau Ch., Robotique-Informatique mmes bats, mmes dbats, mmes combats ? in Denis B. et Baron G.-L., Regards sur la robotique pdagogique, Actes du quatrime colloque international sur la robotique pdagogique, Lige (B), Universit de Lige, pp 10 33 Duchteau Ch., Socrate au pays des ordinateurs, revue de lEPI n 74, juin 1994 pp 159 177 Haugulstaine-Charlier B., Images pour apprendre programmer EPI Colloque francophone sur la didactique de linformatique septembre 1988 pp 205 222 Leclercq D., Les grands types dapprentissage selon R. M. Gagn, in ducation n 137 septembreoctobre 1972 Leclercq D., Les grands types dapprentissage selon R. M. Gagn (II). Critique des catgories suprieures du modle de Gagn, in ducation n 138 novembre-dcembre 1972 Linn M. C., Dalbey J., Cognitive consequences of programming instruction in Studying the Novice Programmer, University of Michigan 1989 PP 57 81 Meurice de Dormale R., Robotique virtuelle in Les actes de la 5me rencontre francophone sur la didactique de linformatique, Monastir 1996 Meurice de Dormale R., Robotique virtuelle : un environnement pour un apprentissage dynamique de lalgorithmique in Les actes du 5me colloque international sur la robotique pdagogique, Montral 1997 Putnam R. T., Sleeman D., Baxter J. a. and Kuspa L. K., A Summary of Misconceptions of High-School BASIC programmers in Studying the Novice Programmer, University of Michigan 1989 pp 301 314 Romainville M., Une analyse critique de linitiation linformatique : quels apprentissages et quels transferts ? EPI Colloque francophone sur la didactique de linformatique septembre 1988 pp 225 241 Spohrer J. C., Soloway E., Novice mistake : are the folk wisdomscorrect ? in Studying the Novice Programmer, University of Michigan 1989 pp 401 416

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 29 sur 30

Table des matires


PRLIMINAIRE ........................................................................................................................................................ 2 INTRODUCTION....................................................................................................................................................... 2 BUT DE LA MTHODE CAR.................................................................................................................................. 3 LA BASE : IMAGES POUR PROGRAMMER .................................................................................................... 4 HISTORIQUE DE LA MTHODE CAR ................................................................................................................ 5 ORGANISATION DE LA MTHODE CAR........................................................................................................... 7 DIFFRENCES ENTRE CAR ET IMAGES POUR PROGRAMMER .................................................................. 9 CAR MODULE PAR MODULE ............................................................................................................................. 10 MODULE 0 : LE CONTRAT ........................................................................................................................................ 10 MODULE 1 : PRSENTATION SUCCINCTE DES MODULES ET DE LEUR ENCHANEMENT .............................................. 10 MODULE 2 : QUEST-CE QUE PROGRAMMER ?.......................................................................................................... 10 MODULE 3 : QUEST-CE QUUN PROGRAMME, DE QUOI EST-IL CONSTITU ?............................................................ 10 MODULE 4 : PARTICULARITS DES STRUCTURES DE CONTRLE ............................................................................... 11 MODULE 5 : ROBOTIQUE VIRTUELLE ....................................................................................................................... 13 MODULE 6 : LES SPCIFICITS DU ROBOT-ORDINATEUR .......................................................................................... 19 MODULE 7 : LES TOURS DE MAIN ............................................................................................................................. 23 MODULE 8 : PROGRAMMATION VIRTUELLE EN PSEUDOCODE................................................................................... 23 MODULE 9 : LA SYNTAXE PASCAL ........................................................................................................................... 27 MODULE 10 : EXERCICES DE PROGRAMMATION EN PASCAL (NONCS) .................................................................. 27 MODULE 11 : LES VARIABLES INDICES................................................................................................................... 27 MODULE 13 : LES PROCDURES PARAMTRES ....................................................................................................... 27 APPORT DU DES-TEF............................................................................................................................................ 27 FICHE TECHNIQUE............................................................................................................................................... 27 CONCLUSIONS ....................................................................................................................................................... 28 REMERCIEMENTS ................................................................................................................................................ 28 BIBLIOGRAPHIE.................................................................................................................................................... 29 TABLE DES MATIRES ........................................................................................................................................ 30

Apprendre programmer : Pourquoi ? Comment ?

Rupert MdeD.

Page 30 sur 30