Karel (lenguaje de programación)
Karel es un lenguaje de programación educativo para principiantes, creado por Richard E. Pattis en su libro Karel The Robot: A Gentle Introduction to the Art of Programming. Pattis utilizó el idioma en sus cursos en la Universidad de Stanford, California. El idioma lleva el nombre de Karel Čapek, un escritor checo que introdujo la palabra robot en su obra R.U.R.
Principios
Se utiliza un programa en Karel para controlar un robot simple llamado Karel que vive en un entorno que consiste en una cuadrícula de calles (izquierda-derecha) y avenidas (arriba-abajo). Karel entiende cinco instrucciones básicas: move
(Karel se mueve un cuadrado en la dirección hacia la que mira), turnLeft
(Karel gira 90° a la izquierda), putBeeper
(Karel coloca un busca en el cuadrado en el que está), pickBeeper
(Karel levanta un busca en el cuadrado en el que está) y apagar
(Karel cambia se apaga, el programa finaliza). Karel también puede realizar consultas booleanas sobre su entorno inmediato, preguntando si hay un localizador en el lugar donde se encuentra, si hay barreras a su lado y sobre la dirección en la que mira. Un programador puede crear instrucciones adicionales definiéndolas en términos de las cinco instrucciones básicas y usando declaraciones de flujo de control condicionales if
y while
con consultas de entorno y usando el comando iterar construcción.
Ejemplo
El siguiente es un ejemplo sencillo de la sintaxis de Karel:
BEGINNING-OF-PROGRAM Vuelta DEFINERRECHO BEGIN turno Izquierda; turno Izquierda; turno Izquierda; FIN BEGINNING-OF-EXECUTION ITERATE 3 timess BEGIN turno Derecho; movimiento FIN desvío END-OF-EXECUTION END-OF-PROGRAM
Especificación
La siguiente implementación es Karel en el lenguaje de programación Python. Otras implementaciones están disponibles.
Funciones primitivas
Las siguientes son las funciones primitivas.
move()
: Karel mueve un cuadrado en la dirección hacia la que mira.
turn_left()
: Karel gira 90 grados a la izquierda.
put_beeper()
: Karel coloca un busca en su casilla actual.
pick_beeper()
: Karel recoge un busca de su casilla actual.
paint_corner(COLOR_NAME)
: Karel pinta su esquina actual con un color. Hay una lista finita de colores disponibles.
Estructuras del programa
Los programas Karel se estructuran de la siguiente manera:
- Comentarios: Cualquier línea que comience con
#
es un comentario y es ignorado por el intérprete. - Las funciones en Karel se declaran utilizando
def
, seguido por el nombre de la función y paréntesis. El cuerpo de la función sigue en líneas posteriores. main()
: Un programa ejecuta elmain
función. Las otras funciones no se ejecutan a menos que se llame.
Condiciones en Karel
Karel puede responder a ciertas condiciones en su mundo:
front_is_clear(),
beepers_present(),
beepers_in_bag(),
left_is_clear(),
right_is_clear(),
mirando_norte(),
mirando_sur()
,
mirando_este()
,
mirando_oeste()
Y sus inversas:
front_is_blocked(),
no_beepers_present(),
no_beepers_in_bag()
,
left_is_blocked()
,
right_is_blocked(),
not_facing_north(),
not_facing_south(),
not_facing_east() ,
not_facing_west()
.
También puede verificar el color del bloque actual mediante corner_color_is(COLOR_NAME)
.
Condiciones y bucles
Hay dos estructuras de control:
- Ejecución condicional utilizando
if
yelse
. - Bucles usando
for
ywhile
.
Variantes y descendientes
El lenguaje ha inspirado el desarrollo de varios clones y lenguajes educativos similares. Como el lenguaje está destinado a principiantes, existen variantes localizadas en algunos idiomas, especialmente en checo (el lenguaje de programación era bastante popular en Checoslovaquia).
Los principios de Karel se actualizaron al paradigma de programación orientada a objetos en un nuevo lenguaje de programación llamado Karel++. Karel++ se basa conceptualmente en Karel, pero utiliza una sintaxis completamente nueva, similar a Java.
Una implementación REALbasic, rbKarel, proporciona los comandos básicos de Karel dentro de un entorno RBScript con sintaxis BÁSICA que se utiliza para bucles y condicionales. Este proyecto de enseñanza proporciona una GUI multiplataforma para experimentos de Karel que incluye salida hablada y de un solo paso.
Un lenguaje y entorno inspirados en Karel llamado Robot Emil utiliza una vista 3D del mundo del robot. Robot Emil ofrece una amplia paleta de objetos que se pueden colocar para representar paredes, ventanas (transparencia), agua y hierba. La cámara se puede mover libremente por el entorno 3D. El robot puede controlarse de forma interactiva con botones en la GUI o mediante programas escritos en el lenguaje de programación similar a Karel de Emil. El autor afirma que el programa es gratuito para escuelas, estudiantes y niños. Hay versiones disponibles en inglés, checo y eslovaco.
Para programar los robots de FANUC Robotics se utiliza un lenguaje propietario, también llamado Karel. Sin embargo, FANUC Karel se deriva de Pascal.
CodeHS también ha implementado el lenguaje como Karel the Dog en JavaScript. Al igual que en el lenguaje original, esta implementación presenta a Karel en un mundo cuadriculado. Los programadores utilizan y desarrollan el vocabulario sencillo de comandos de Karel para realizar tareas de programación. En lugar de poner y coger localizadores, el perro Karel mete y recoge pelotas de tenis.
Una versión alemana de Karel se llama "Robot Karol".
Contenido relacionado
Precisión y exactitud
Evidencia empírica
Teoría del flogisto