iniciar-programa
define-nueva-instruccion verifica(n) como inicio
   Si junto-a-zumbador y  no(si-es-cero(n))  entonces inicio
      coge-zumbador;
      verifica(precede(n));
      si orientado-al-oeste o orientado-al-norte entonces
      deja-zumbador;
   fin
   sino
     inicio
      Si si-es-cero(n) entonces inicio
         Si junto-a-zumbador entonces inicio
           gira-izquierda;
         fin;
      fin
      sino
          inicio
              Repetir 2 veces gira-izquierda;
            avanza;
            gira-izquierda;
          fin;
     fin;
fin;
Define-nueva-instruccion Ejecuta(n) como inicio
 si junto-a-zumbador y orientado-al-norte entonces inicio
     coge-zumbador;
     ejecuta(sucede(n));
 fin;
   si orientado-al-norte y no-junto-a-zumbador entonces inicio
    Repetir n veces deja-zumbador;
    Si frente-libre   entonces inicio
     avanza;
     Verifica(n);
     si orientado-al-oeste entonces
      Repetir 3 veces gira-izquierda;
    fin;
     ejecuta(0);
   fin;
fin;
Define-nueva-instruccion Ejecutaeste(n) como inicio
 si junto-a-zumbador y orientado-al-este entonces inicio
     coge-zumbador;
     ejecutaeste(sucede(n));
 fin;
   si orientado-al-este y no-junto-a-zumbador entonces inicio
    Repetir n veces deja-zumbador;
    Si frente-libre   entonces inicio
     avanza;
     Verifica(n);
     si orientado-al-norte entonces
      Repetir 3 veces gira-izquierda;
    fin;
     ejecutaeste(0);
   fin;
fin;
    inicia-ejecucion
      Ejecuta(0);
      ejecutaeste(0);
        apagate;
    termina-ejecucion
finalizar-programa
