iniciar-programa
    define-nueva-instruccion e como inicio
       si frente-libre entonces inicio
          avanza;
          e;
          deja-zumbador;
       fin;
    fin;
    define-nueva-instruccion s(n) como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          s(sucede(n));
       fin
       sino inicio
          repetir precede(n) veces
             avanza;
          repetir n veces
             deja-zumbador;
       fin;
    fin;
    define-nueva-instruccion p(n) como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          p(sucede(n));
       fin
       sino inicio
          repetir n veces
             avanza;
          si junto-a-zumbador entonces inicio
             mientras no-orientado-al-oeste hacer
                gira-izquierda;
             e;
             deja-zumbador;
             apagate;
          fin;
          repetir n veces
             deja-zumbador;
       fin;
    fin;
    inicia-ejecucion
       mientras no orientado-al-este hacer
          gira-izquierda;
       s(0);
       mientras frente-libre o frente-bloqueado hacer inicio
          avanza;
          mientras no-junto-a-zumbador hacer
             avanza;
          repetir 2 veces
             gira-izquierda;
          p(0);
          avanza;
          mientras no junto-a-zumbador hacer
             avanza;
          repetir 2 veces
             gira-izquierda;
          p(0);
       fin;
    termina-ejecucion
finalizar-programa


