iniciar-programa
define-nueva-instruccion gira-d como repetir 3 veces gira-izquierda;

define-nueva-instruccion coger-viga como
inicio
mientras no-orientado-al-sur hacer gira-izquierda;
si frente-libre y junto-a-zumbador entonces
inicio
coge-zumbador;
avanza;
coger-viga;
avanza;
fin
sino
inicio
repetir 2 veces gira-izquierda;
coge-zumbador;
fin;
fin;

define-nueva-instruccion contar como
inicio
mientras no-orientado-al-sur hacer gira-izquierda;
si derecha-bloqueada entonces
inicio
avanza;
contar;
avanza;
fin
sino inicio
gira-d;
avanza;
si algun-zumbador-en-la-mochila entonces
deja-zumbador;
repetir 2 veces gira-izquierda;
avanza;
gira-izquierda;
fin;
fin;

define-nueva-instruccion ultima-fila como
inicio
mientras no-orientado-al-oeste hacer gira-izquierda;
si junto-a-zumbador y frente-libre entonces
inicio
coge-zumbador;
mientras frente-libre hacer avanza;
deja-zumbador;
apagate;
fin
sino inicio
si frente-bloqueado entonces inicio
apagate;
fin
sino inicio
avanza;
ultima-fila;
fin;
fin;
fin;

define-nueva-instruccion buscar como
inicio
si junto-a-zumbador y frente-libre entonces
inicio
coger-viga;
gira-izquierda;
buscar;
fin
sino inicio
si frente-bloqueado entonces
inicio
si junto-a-zumbador entonces coger-viga;
contar;
mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
gira-d;
mientras frente-libre hacer avanza;
si derecha-libre entonces
inicio
gira-d;
avanza;
gira-d;
si izquierda-libre entonces
inicio
buscar;
fin
sino inicio
ultima-fila;
fin;
fin
sino inicio
ultima-fila;
fin;
fin
sino inicio
avanza;
buscar;
fin;
fin;
fin;
    inicia-ejecucion
    mientras frente-libre hacer avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;
    mientras izquierda-libre hacer buscar;
    ultima-fila;
        apagate;
    termina-ejecucion
finalizar-programa
