iniciar-programa
    define-nueva-instruccion gira(n) como inicio
        repetir n veces
            gira-izquierda;
    fin;
    define-nueva-instruccion norte como inicio
       mientras no-orientado-al-norte hacer
          gira(1);
    fin;
    define-nueva-instruccion sur como inicio
       mientras no-orientado-al-sur hacer
          gira(1);
    fin;
    define-nueva-instruccion este como inicio
       mientras no-orientado-al-este hacer
          gira(1);
    fin;
    define-nueva-instruccion oeste como inicio
       mientras no-orientado-al-oeste hacer
          gira(1);
    fin;
    define-nueva-instruccion ava como inicio
       si derecha-bloqueada entonces inicio
          si frente-libre entonces inicio
             avanza;
             mientras derecha-libre hacer inicio
                gira(3);
                avanza;
             fin;
             mientras no-orientado-al-norte y no-orientado-al-sur hacer inicio
                mientras derecha-bloqueada y frente-libre hacer
                   avanza;
                si derecha-libre entonces inicio
                   mientras derecha-libre hacer inicio
                      gira(3);
                      avanza;
                   fin;
                fin
                sino inicio
                   gira(1);
                fin;
             fin;
          fin
          sino inicio
             gira(1);
             mientras derecha-bloqueada y frente-libre hacer
                avanza;
             mientras derecha-libre hacer inicio
                gira(3);
                avanza;
             fin;
             mientras no-orientado-al-norte y no-orientado-al-sur hacer inicio
                mientras derecha-bloqueada y frente-libre hacer
                   avanza;
                si derecha-libre entonces inicio
                   mientras derecha-libre hacer inicio
                      gira(3);
                      avanza;
                   fin;
                fin
                sino inicio
                   gira(1);
                fin;
             fin;
          fin;
       fin;
    fin;
    define-nueva-instruccion cuenta como inicio
        si orientado-al-norte entonces inicio
           ava;
           si no-orientado-al-sur entonces inicio
              cuenta;
              ava;
           fin;
        fin;
    fin;
    inicia-ejecucion
        norte;
        cuenta;
        deja-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
