iniciar-programa
define-nueva-instruccion gira-derecha como repetir 3 veces gira-izquierda;
define-nueva-instruccion media-vuelta como repetir 2 veces gira-izquierda;
    define-nueva-instruccion esquina como
    inicio
        gira-derecha;
        mientras frente-libre hacer
            avanza;
        media-vuelta;
    fin;
    define-nueva-instruccion regresa(x) como
    inicio
        si si-es-cero(x) entonces
        inicio
            gira-izquierda;               
            deja-zumbador;
        fin
        sino inicio
            avanza;
            regresa(precede(precede(x)));
        fin;
    fin;
    define-nueva-instruccion mide(x) como
    inicio
        si frente-bloqueado entonces
        inicio
           media-vuelta;
           regresa(x);
           si frente-libre entonces
           inicio
               avanza;
               esquina;
               mide(0);
           fin
           sino inicio
               esquina;
               mientras derecha-bloqueada y frente-libre hacer
                   avanza;
               si derecha-libre entonces
               inicio
                  gira-derecha;
                  avanza;
                  esquina;
                  mide(0);
               fin
               sino inicio
                   apagate;
               fin;
           fin;
        fin
        sino inicio
            avanza;
            mide(sucede(x));
        fin;
    fin;
    inicia-ejecucion
        esquina;
        mide(0);
        apagate;
    termina-ejecucion
finalizar-programa
