Karel (lenguaje de programación)

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
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 el main 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 y else.
  • Bucles usando for y while.

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

En un conjunto de medidas, la exactitud es la cercanía de las medidas a un valor específico, mientras que la precisión es la cercanía de las medidas entre...

Evidencia empírica

La evidencia empírica de una proposición es evidencia, es decir, lo que apoya o contrarresta esta proposición, que está constituida por o accesible a la...

Teoría del flogisto

La teoría del flogisto es una teoría científica superada que postulaba la existencia de un elemento parecido al fuego llamado flogisto contenido dentro de...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save