Chapitre 1: Présentation de Karel le robot


Dans les années 1970, Rich Pattis, un étudiant diplômé de Stanford, décida qu'il serait plus facile d'enseigner les bases de la programmation si les étudiants pouvaient en quelque sorte apprendre les idées de base dans un environnement simple, exempt des complexités qui caractérisent la plupart des langages de programmation. Rich a conçu un environnement de programmation d'introduction dans lequel les étudiants apprennent à un robot à résoudre des problèmes simples. Ce robot s'appelait Karel, d'après le dramaturge tchèque Karel Čapek , dont 1923 jouent R.U.R. ( Les robots universels de Rossum ) a donné le mot robot à la langue anglaise.

Karel the Robot a été un succès. Karel a été utilisé dans des cours d'initiation à l'informatique dans le monde entier et a été enseigné à des millions d'étudiants. De nombreuses générations d'étudiants à Stanford ont appris comment fonctionne la programmation avec Karel. Il s'agit toujours de l'introduction en douceur au codage utilisée à Stanford.

Qu'est-ce que Karel?

Karel est un robot très simple vivant dans un monde très simple. En donnant à Karel un ensemble de commandes, vous pouvez lui demander d'exécuter certaines tâches dans son monde. Le processus de spécification de ces commandes est appelé la programmation . À l’origine, Karel ne comprend qu’un très petit nombre de commandes prédéfinies, mais une partie importante du processus de programmation lui apprend de nouvelles commandes qui étendent ses capacités.

Les programmes Karel ont à peu près la même structure et impliquent les mêmes éléments fondamentaux que Python , un important langage de programmation . La différence essentielle est que le langage de programmation de Karel est extrêmement petit et que, par conséquent, les détails sont faciles à maîtriser. Néanmoins, vous découvrirez que la résolution d'un problème peut être difficile.

En commençant par Karel, vous pouvez vous concentrer sur la résolution des problèmes dès le début. La résolution de problèmes est l'essence de la programmation. Et comme Karel encourage l'imagination et la créativité, vous pourrez vous amuser beaucoup en chemin.

Le monde de Karel

Le monde de Karel est défini par les lignes exécuter horizontalement (est-ouest) et les colonnes exécuter verticalement (nord-sud). L'intersection d'une ligne et d'une colonne s'appelle un coin. Karel ne peut être positionné que dans les coins et doit faire face à l'une des quatre directions standard de la boussole (nord, sud, est, ouest). Un exemple du monde Karel est présenté ci-dessous. Ici Karel est situé à l'angle de la 1ère rangée et de la 1ère colonne, face à l'est.

Plusieurs autres composants du monde de Karel peuvent être vus dans cet exemple. L'objet devant Karel est un jeton . Comme décrit dans le livre de Rich Pattis, jetons sont des «cônes en plastique qui émettent un bip silencieux». Karel ne peut détecter un jeton s'il se trouve dans le même coin. Les lignes pleines du diagramme sont des murs. Les murs servent de barrières dans le monde de Karel. Karel ne peut pas traverser les murs et doit plutôt les contourner. Le monde de Karel est toujours délimité par des murs le long des bords, mais le monde peut avoir des dimensions différentes en fonction du problème spécifique que Karel doit résoudre.

Les commandes de Karel

Lorsque Karel est expédié de l'usine, il répond à un très petit ensemble de commandes. Essayons les commandes. Utilisez les boutons ci-dessous pour obtenir le "monde" correspondant au "but":

Monde:
Objectif:

Voici ce que fait chaque commande:
CommanderLa description
avancer() avancer à Karel de avancer avancer d'un bloc. Karel ne peut pas répondre à un avancer() commande s'il y a un mur bloquant son chemin.
tourner_gauche() Demande à Karel de pivoter de 90 degrés vers la gauche (dans le sens antihoraire).
ramasser_jeton() Demande à Karel d'en prendre un jeton dans un coin et range le jeton dans son sac jeton , qui peut contenir un nombre infini de jetons . Karel ne peut pas répondre à un ramasser_jeton() sauf s'il y a un jeton sur le coin courant.
laisser_jeton() jeton à Karel de prendre un jeton de son sac jeton et de le poser sur le coin actuel. Karel ne peut pas répondre à un laisser_jeton() commande sauf s'il y a jetons dans son sac jeton .

La paire de parenthèses vides qui apparaît dans chacune de ces commandes fait partie de la syntaxe commune partagée par Karel et Python et est utilisée pour spécifier l'invocation de la commande. Finalement, les programmes que vous écrivez comprendront des informations supplémentaires dans l'espace entre les parenthèses, mais ces informations ne font pas partie du monde primitif de Karel. Ces parenthèses seront donc vides dans les programmes Karel standards, mais n'oubliez pas de les inclure tout de même.

Si Karel tente de faire quelque chose d'illégal, comme se déplacer à travers un mur ou ramasser un jeton inexistant, une condition d'erreur se produit.

Les commandes de Karel ne sont pas exécutées seules. Au lieu de cela, vous devez les incorporer dans un programme Karel. Vous aurez l'occasion de voir quelques programmes Karel simples au chapitre 2!


Chapitre suivant