Si ya instalaste el paquete karel
, estamos en
condiciones de empezar a usarlo. Vamos a ejecutar la instrucción
library(karel)
para poder usarlo:
Antes que nada tenemos que generar un mundo para que
Karel pueda andar por ahí. Esto lo hacemos con la instrucción
generar_mundo()
, aclarando entre los paréntesis y con
comillas el nombre del mundo que queremos usar. El paquete trae
incorporados unos cuantos que iremos explorando, por ejemplo:
Como se puede ver en la imagen, en el mundo de Karel hay algunos elementos:
Además, Karel puede realizar estas actividades:
AVANZAR
: se mueve un paso hacia la celda que tiene
adelante, si no hay una pared que se lo impida.GIRAR A LA IZQUIERDA
: rota 90 grados hacia su izquierda
(sentido contrarreloj).JUNTAR COSO
: levanta el coso que hay en su
celda y lo guarda en su mochila, que es invisible en el
diagrama pero puede contener infinitos cosos. Debe haber al
menos un coso en la celda para que Karel pueda realizar esta
acción.PONER COSO
: toma un coso de su mochila y lo
coloca en la celda. Debe haber al menos un coso en la mochila
de Karel para que pueda realizar esta acción.Las acciones escritas tal como están arriba son expresiones que podemos entender nosotros, pero para que puedan ser entendidas por Karel, tendremos que respetar las instrucciones con las cuales están implementadas en R:
avanzar()
girar_izquierda()
juntar_coso()
poner_coso()
Los paréntesis indican que las instrucciones anteriores son funciones de R, es decir, que las acciones que Karel sabe realizar se ejecutan en R mediante el uso de funciones. Si bien más adelante estudiaremos funciones con mayor profundidad, por ahora podemos decir que una función es una sección de un programa que cumple con una tarea específica y que tiene un nombre determinado.
Algunas funciones vienen incorporadas en el lenguaje de programación,
por ejemplo, cuando calculamos un logaritmo en la consola de R durante
nuestros primeros pasos: log(27)
. log
es el
nombre de una función que ya viene en R y toma logaritmo del número que
está entre paréntesis. Otras funciones se agregan cuando cargamos un
paquete, es el caso de las cuatro funciones que mencionamos recién,
vienen en el paquete karel
. Otras funciones son creadas o
programadas por las personas, como haremos muy pronto.
Algunas observaciones importantes sobre las funciones que ejecutan las acciones de Karel en R:
generar_mundo("mundo001")
ya usamos una función de R que
necesita como dato adicional el nombre del mundo a dibujar.avanzar()
cuando Karel tiene una pared por delante. Cada vez que cometamos un
errror, debemos volver a empezar, incluso generando el mundo otra vez
corriendo la instrucción generar_mundo("mundo001")
.girar_izquierda
,
nunca tiene espacios blancos en el medio (no podría llamarse
GIRAR A LA IZQUIERDA
, sí podría llamarse
girarizquierda
, pero por convención de estilo, las
funciones del paquete karel
tienen nombres con guión bajo
de separador).Por sobre todas las cosas, hay que recordar que estas funciones no
andan por sí solas. Siempre tienen que estar precedidas por la ejecución
de la función generar_mundo("mundo001")
, luego corremos
todas las acciones de Karel que queramos, pero para poder ver su efecto,
tenemos que terminar corriendo la función
ejecutar_acciones()
.
Veamos un primer ejemplo. Vamos a pedirle a Karel que avance, junte el coso y vuelva a avanzar:
> # Este programa hace que Karel avance un espacio, junte un coso y vuelva a avanzar
> generar_mundo("mundo001")
> avanzar()
> juntar_coso()
> avanzar()
> ejecutar_acciones()
Un problema un poquito más interesante sería que luego de que Karel junte el coso, lo coloque en la Calle 2 y Avenida 5 y finalmente avance a la Calle 2 y Avenida 6:
Los primeros tres comandos que necesitamos en el programa son los mismos de antes, pero luego Karel tiene que girar a su izquierda para poder bordear la pared y avanzar un lugar, quedando de cara al norte:
Ahora necesitamos que Karel gire a la derecha, para que quede mirando
al este. Sin embargo, Karel sólo sabe girar a la izquierda, no existe
ninguna función girar_derecha()
. ¿Puede girar a la derecha
usando las acciones disponibles? Claro que sí, ya que se puede lograr el
mismo efecto girando tres veces a la izquierda. Luego, sólo resta que
avance, coloque el coso y vuelva a avanzar una vez:
> generar_mundo("mundo001")
> avanzar()
> juntar_coso()
> avanzar()
> girar_izquierda()
> avanzar()
> girar_izquierda()
> girar_izquierda()
> girar_izquierda()
> avanzar()
> avanzar()
> poner_coso()
> avanzar()
> ejecutar_acciones()
Algunos ejemplos presentados en este tutorial fueron adaptados de Karel the robot learns Java (Eric Roberts, 2005).