## Instructions

Félicitations ! Vous venez d'écrire votre premier programme ! Vous avez compris l'idée maintenant : programmer, c'est simplement donner des instructions à l'ordinateur, qui les applique aveuglément. La plus grande difficulté est d'expliquer quoi faire à quelque chose d'aussi bête que l'ordinateur...

Notre second programme sera un peu plus compliqué, mais pas tellement. L'objectif de votre buggle est simplement de se dessiner une maison (une boîte), et de se cacher dedans. Vérifiez le monde objectif pour voir exactement ce que cela veut dire.

Pour cela, vous aurez besoin de `avance()`, `gauche()` et `droite()`. Utilisez votre brosse pour marquer le sol en marchant. Commencez à marquer le sol avec `baisseBrosse()`, et arrêtez avec `leveBrosse()` (par exemple pour entrer dans votre maison sans marquer le sol).

### Qu'est exactement qu'un programme ?

Les programmes sont des enchaînements d'appels de méthodes, qui forment des listes d'ordres simples donnés à la machine. C'est assez comparable à une recette de cuisine où l'on dit cassez les œufs puis ajoutez du sel puis mélangez le tout puis faites cuire. En [!thelang], il faut séparer ces instructions par des symboles point-virgule (;)[!python|scala] ou par des retours à la ligne[/!], et suivis de parenthèses. Notre recette s'écrirait de la façon suivante [!python|scala](vous pourriez aussi ajouter des points-virgules à la fin des lignes, mais c'est optionel)[/!] .

    casserLesOeufs()[!java|c];[/!]
    ajouterDuSel()[!java|c];[/!]
    melangerLeTout()[!java|c];[/!]
    faireCuire()[!java|c];[/!]

N'écrivez pas tout sur la même ligne, même si cela ne fait aucune différence pour l'ordinateur[!python|scala] (si vous ajoutez les points-virgules)[/!]. C'est une très mauvaise idée car cela rend le code plus difficile à relire. Comme disait Harold Abelson, les programmes doivent surtout être écrits pour être lisibles par les humains, et accessoirement pour être exécutables par les machines.

Les buggles peuvent comprendre un ensemble fini d'instructions (et nous verrons plus tard comment leur apprendre de nouveaux trucs). Il y a une méthode associée à chaque bouton du panneau de commande interactive. Pour faire la même chose que le bouton avance (faire avancer la buggle d'un pas), il faut écrire dans l'éditeur :

    [!java|scala|python]avance()[!java];[/!][/!][!c]avancePas();[/!]

De même, pour faire l'équivalent des boutons [!java|scala|python]recule[/!][!c]reculePas[/!], gauche et droite, il faut utiliser respectivement :

    recule()[!java|c];[/!]
    gauche()[!java|c];[/!]
    droite()[!java|c];[/!]

Le bouton marquer est un peu particulier, puisqu'il correspond à deux méthodes : la première lève le crayon, tandis que la seconde le baisse.

    leveBrosse()[!java|c];[/!]
    baisseBrosse()[!java|c];[/!]

La buggle offre d'autres méthodes, présentées dans le menu "Aide/À propos de ce monde". Elles seront introduites au fur et à mesure des besoins.