iniciar-programa
define-nueva-instruccion topa como inicio
    mientras frente-libre hacer inicio
        avanza;
    fin;
fin;
define-nueva-instruccion topa2 como inicio
    mientras derecha-bloqueada hacer inicio
        avanza;
    fin;
fin;
define-nueva-instruccion atras como inicio
    gira-izquierda;
    gira-izquierda;
fin;
define-nueva-instruccion gd como inicio
    gira-izquierda;
    gira-izquierda;
    gira-izquierda;
fin;
define-nueva-instruccion regresa como inicio
    atras;
    topa;
    gd;
    mientras izquierda-bloqueada hacer inicio
        avanza;
    fin;
    gira-izquierda;
    avanza;
    gira-izquierda;
    topa;
    gd;
    topa;
fin;
define-nueva-instruccion recursiva2 como inicio
    si frente-libre entonces inicio
        avanza;
        recursiva2;
        avanza;
    fin;
    si orientado-al-oeste entonces inicio
        atras;
        topa;
        gira-izquierda;
        topa2;
        gd;
        avanza;
        gd;
        topa;
        gira-izquierda;
    fin;
fin;
define-nueva-instruccion recursiva0 como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        recursiva0;
    fin
    sino inicio
        atras;
        recursiva2;
    fin;
    deja-zumbador;
fin;
define-nueva-instruccion recursiva1 como inicio
    mientras no orientado-al-este hacer inicio
        gira-izquierda;
    fin;
    mientras no junto-a-zumbador y frente-libre hacer inicio
        avanza;
    fin;
    si frente-bloqueado y no junto-a-zumbador entonces inicio
        apagate;
    fin;
    recursiva0;
    coge-zumbador;
    regresa;
    recursiva1;
fin;
    inicia-ejecucion
        recursiva1;
        apagate;
    termina-ejecucion
finalizar-programa
