iniciar-programa
    define-nueva-instruccion gira(e)como inicio
       repetir e veces
          gira-izquierda;
    fin;
    define-nueva-instruccion mitad como inicio
       si frente-libre entonces inicio
          avanza;
          si frente-libre entonces
              avanza;
              mitad;
          avanza;
    fin
    sino inicio
       gira(2);
          fin;
       fin;
    define-nueva-instruccion po como inicio
         mientras frente-libre hacer
           avanza;
        si frente-bloqueado entonces
           gira(1);
        si frente-libre entonces
           avanza
          sino inicio
              gira(1);
          mientras  derecha-bloqueada y frente-libre hacer
           avanza;
          si frente-bloqueado y derecha-bloqueada entonces
             apagate;
           gira(3);
           avanza;
           gira(3);
           mientras frente-libre hacer
               avanza;
           gira(1);

           fin;
           si derecha-libre entonces inicio
               repetir 3 veces
                   gira-izquierda;
               mientras frente-libre hacer
                   avanza;
                   gira(1);
           fin;
           gira(1);
           mitad;
            deja-zumbador;
    fin;
    define-nueva-instruccion lu como inicio
         mitad;
        deja-zumbador;
         repetir 50 veces
            po;
       fin;
    inicia-ejecucion
       mientras no-orientado-al-oeste hacer
        gira-izquierda;
        mientras frente-libre hacer
         avanza;
        si frente-bloqueado entonces
           gira-izquierda;
           gira-izquierda;
         lu;
        apagate;
    termina-ejecucion
finalizar-programa