Funciones en Karel el robot

Podemos crear nuestras propias funciones en Karel el robot, lo que nos permite personalizar el comportamiento del robot y adaptar su programación a diversas tareas específicas. Esto abre un abanico de posibilidades creativas, ya que cada función puede diseñarse para realizar acciones únicas y eficientes, facilitando el aprendizaje de conceptos fundamentales de programación en un entorno lúdico y accesible. Además, al experimentar con estas funciones, los estudiantes desarrollan habilidades críticas de resolución de problemas y pensamiento lógico.

Para llevar a cabo la creación de una función, debemos seguir la sintaxis que se detalla a continuación.

define-nueva-instrucción nombre como
inicio
Instrucción 1;
Instrucción 2;
.
Instrucción n;
fin;

Ejemplo: La primera función soñada de todo usuario de Karel el robot es tener la posibilidad de girar a la derecha, así que ahora podremos definirla.

define-nueva-instrucción gira-derecha como
inicio
gira-izquierda;
gira-izquierda;
gira-izquierda;
fin;

También podemos hacerlo utilizando ciclos (repeticiones) como sigue

define-nueva-instrucción gira-derecha como
inicio
repetir 3 veces gira-izquierda;
fin;

Las funciones se definen después de la línea de iniciar programa y se mandan llamar después de iniciar ejecución. Ejemplo:

iniciar-programa

    define-nueva-instrucción gira-derecha como
    inicio
        gira-izquierda;
        gira-izquierda;
        gira-izquierda;
    fin;

    inicia-ejecucion
        gira-derecha;
        apagate; 
    termina-ejecucion
finalizar-programa

Si utilizamos repeticiones quedaría como sigue:

iniciar-programa

    define-nueva-instrucción gira-derecha como
    inicio
        repetir 3 veces gira-izquierda;
    fin;

    inicia-ejecucion
        gira-derecha;
        apagate; 
    termina-ejecucion
finalizar-programa

Otra funciones que podemos crear son las siguientes:

Girar 180 grados

define-nueva-instrucción girar_180 como
inicio
    gira-izquierda;
    gira-izquierda;
fin;

Recoger todos los zumbadores de una casilla

define-nueva-instrucción recoger_todos_zumbadores como
inicio
    mientras junto-a-zumbador hacer
    inicio
        coge-zumbador;
    fin;
fin;

Avanzar hasta llegar a una barrera

define-nueva-instrucción avanzar_hasta_pared como
inicio
    mientras frente-libre hacer
    inicio
        avanza;
    fin;
fin;

Dejar todos los zumbadores de la mochila

define-nueva-instrucción dejar_todos_los-zumbadores como
inicio
    mientras algun-zumbador-en-la-mochila hacer
    inicio
        deja-zumbador;
    fin;
fin;

Recoger todos los zumbadores de una fila hasta llegar a una barrera.

define-nueva-instrucción explorar_fila como
inicio
    mientras frente-libre hacer
    inicio
        mientras junto-a-zumbador hacer
        inicio
            coge-zumbador;
        fin;
        avanza;
    fin;
fin;

Decidir avanzar o girar

define-nueva-instrucción decidir_camino como
inicio
    si frente-libre entonces
    inicio
        avanza;
    fin;
    si frente-bloqueado entonces
    inicio
        gira-izquierda;
    fin;
fin;

Evitar obstáculos

define-nueva-instrucción esquivar_obstaculo como
inicio
    mientras frente-bloqueado hacer
    inicio
        gira-izquierda;
        avanza;
        repetir 3 veces gira-izquierda;
    fin;
fin;