iniciar-programa
define-nueva-instruccion gira-derecha como inicio
repetir 3 veces
gira-izquierda;
fin;
    inicia-ejecucion

    (*primera*)

    mientras frente-libre y no-junto-a-zumbador hacer inicio
    avanza;
    fin;

    si junto-a-zumbador entonces inicio
    gira-izquierda;
    gira-izquierda;
    avanza;
    deja-zumbador;
    gira-izquierda;
    gira-izquierda;
    avanza;
    gira-derecha;
    mientras frente-libre hacer inicio
    avanza;
    fin;
    gira-derecha;
    avanza;
    si no junto-a-zumbador entonces
    deja-zumbador;
    gira-derecha;
    si frente-libre entonces
    avanza;
    mientras no-junto-a-zumbador hacer inicio
    deja-zumbador;
    avanza;
    fin;
    gira-izquierda;
    gira-izquierda;
    mientras junto-a-zumbador y frente-libre hacer inicio
    avanza;
    fin;
    gira-izquierda;
    mientras frente-libre y no-junto-a-zumbador hacer inicio
    avanza;
    fin;
    fin;


     (*aqui*)
     mientras frente-bloqueado  y izquierda-bloqueada hacer inicio

    si no-junto-a-zumbador entonces inicio
    gira-derecha;
    mientras frente-libre y no-junto-a-zumbador hacer inicio
    avanza;
    fin;
    si junto-a-zumbador entonces inicio
    gira-izquierda;
    gira-izquierda;
    mientras frente-libre hacer inicio
    avanza;
    fin;
    gira-izquierda;
    avanza;
    deja-zumbador;
    gira-izquierda;
    gira-izquierda;
    avanza;
    gira-derecha;
    mientras frente-libre hacer inicio
    avanza;
    fin;
    gira-derecha;
    avanza;
    deja-zumbador;
    gira-derecha;
    avanza;
    mientras frente-libre y no-junto-a-zumbador hacer inicio
    deja-zumbador;
    avanza;
    fin;
    gira-izquierda;
    gira-izquierda;
    mientras junto-a-zumbador y frente-libre hacer inicio
    avanza;
    fin;
    fin;
    si frente-bloqueado entonces inicio
    gira-derecha;
    Si frente-libre entonces inicio
    avanza;
    fin
    sino
    apagate;       (*                                          *)

    si no izquierda-bloqueada entonces
    gira-izquierda;
    si frente-libre y no izquierda-bloqueada entonces
    avanza;
    gira-izquierda;
    mientras frente-libre hacer inicio
    avanza;
    fin;
    fin;
    si frente-libre entonces inicio
    gira-izquierda;
    avanza;
    fin;

    fin;

    si junto-a-zumbador entonces inicio
    gira-izquierda;
    gira-izquierda;
    avanza;
    deja-zumbador;
    gira-izquierda;
    gira-izquierda;
    avanza;
    gira-derecha;
    mientras frente-libre hacer inicio
    avanza;
    fin;
    gira-derecha;
    si derecha-libre entonces inicio
    avanza;
    si no-junto-a-zumbador entonces
    deja-zumbador;
    gira-derecha;
    avanza;
    mientras no-junto-a-zumbador hacer inicio
    deja-zumbador;
    avanza;
    fin;
    fin;
    si derecha-bloqueada entonces inicio
    avanza;
    gira-derecha;

    fin;
    gira-izquierda;
    gira-izquierda;
    mientras junto-a-zumbador y frente-libre hacer inicio
    avanza;
    fin;
    gira-izquierda;
    mientras frente-libre y no-junto-a-zumbador hacer inicio
    avanza;
    fin;
    fin;
    fin;













        apagate;
    termina-ejecucion
finalizar-programa
