iniciar-programa
    define-nueva-instruccion orientacion como inicio
    si orientado-al-este entonces
    inicio
    gira-izquierda;
    fin;
    si orientado-al-oeste entonces
    inicio
        repetir 3 veces
        inicio
            gira-izquierda;
        fin;
    fin;
    si orientado-al-sur entonces
    inicio
        gira-izquierda;
        gira-izquierda;
    fin;
    fin;

    define-nueva-instruccion ida como inicio
        mientras izquierda-bloqueada hacer
        inicio
        avanza;
        fin;
        gira-izquierda;
        mientras frente-libre hacer
        inicio
        avanza;
        fin;
        gira-izquierda;
        mientras frente-libre hacer
        inicio
        avanza;
        fin;
        coge-zumbador;
        gira-izquierda;
        gira-izquierda;
    fin;

        define-nueva-instruccion arriba como inicio
        mientras frente-libre hacer
        inicio
        avanza;
        fin;
        si frente-bloqueado y derecha-libre entonces
        inicio
        repetir 3 veces
        inicio
        gira-izquierda;
        fin;
        avanza;
        repetir 3 veces
        inicio
        gira-izquierda;
        fin;
        fin;
        si frente-bloqueado y derecha-bloqueada entonces
        inicio
           gira-izquierda;
           mientras derecha-bloqueada hacer
           inicio
           avanza;
           fin;
           repetir 3 veces
           inicio
           gira-izquierda;
           fin;
           avanza;
           repetir 3 veces
           inicio
           gira-izquierda;
           fin;
           avanza;
           mientras derecha-bloqueada hacer
           inicio
           avanza;
           fin;
           repetir 3 veces
           inicio
           gira-izquierda;
           fin;
           avanza;
           deja-zumbador;
           apagate;
        fin;
    fin;

        define-nueva-instruccion abajo como inicio
        mientras frente-libre hacer
        inicio
        avanza;
        fin;
          si frente-bloqueado y izquierda-libre entonces
        inicio
        gira-izquierda;
        avanza;
        gira-izquierda;
        fin;

        si frente-bloqueado y izquierda-bloqueada entonces
        inicio
            repetir 3 veces
            inicio
           gira-izquierda;
           fin;
           mientras izquierda-bloqueada hacer
           inicio
           avanza;
           fin;
           gira-izquierda;
           avanza;
           gira-izquierda;
           avanza;
           mientras derecha-bloqueada hacer
           inicio
           avanza;
           fin;
           repetir 3 veces
           inicio
           gira-izquierda;
           fin;
           avanza;
           deja-zumbador;
           apagate;
        fin;

        fin;


    inicia-ejecucion
        orientacion;
        ida;
        mientras frente-libre o frente-bloqueado hacer
        inicio
        arriba;
        abajo;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
