iniciar-programa
define-nueva-instruccion ve como
inicio
    si frente-libre entonces
    inicio
           avanza;
           ve;
           avanza;
     fin
     sino
     inicio
             gira-izquierda;
             avanza;
             deja-zumbador;
             repetir 2 veces
             gira-izquierda;
             avanza;
             repetir 3 veces gira-izquierda;
     fin;

fin;
define-nueva-instruccion llega(e) como
inicio
        si frente-libre entonces
        inicio
               avanza;
               llega(e);
               avanza;
        fin
        sino
        inicio
                repetir 3 veces
                    gira-izquierda;
                avanza;
                repetir 3 veces
                    gira-izquierda;
                 repetir e veces avanza;
                 deja-zumbador;
                 repetir 2 veces
                 gira-izquierda;
                 mientras frente-libre hacer
                 avanza;
                 gira-izquierda;
                 avanza;
                 gira-izquierda;
         fin;
fin;
define-nueva-instruccion deja(x) como
inicio
        si junto-a-zumbador entonces
        inicio
               coge-zumbador;
               deja(sucede(x));
        fin
        sino
        inicio
                repetir 2 veces
                    gira-izquierda;
                llega(precede(x));
        fin;
fin;
    inicia-ejecucion
        mientras junto-a-zumbador hacer
        inicio
                deja(0);
                si frente-libre entonces avanza;
        fin;
        repetir 2 veces
            gira-izquierda;
        mientras frente-libre hacer
        avanza;
        repetir 3 veces
            gira-izquierda;
        avanza;
        repetir 3 veces
            gira-izquierda;
        mientras frente-libre o junto-a-zumbador hacer
        inicio
                si junto-a-zumbador entonces inicio
                       coge-zumbador;
                       repetir 2 veces
                       gira-izquierda;
                       ve;
                fin;
                si frente-libre entonces avanza;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
