iniciar-programa
define-nueva-instruccion gira-derecha como
inicio
    repetir 3 veces
      gira-izquierda;
fin;
define-nueva-instruccion mira-norte como
inicio
    mientras no-orientado-al-norte hacer
         gira-izquierda;
fin;
define-nueva-instruccion mira-sur como
inicio
   mientras no-orientado-al-sur hacer
      gira-izquierda;
fin;
define-nueva-instruccion paso-atras como
inicio
   repetir 2 veces
      gira-izquierda;
   avanza;
   repetir 2 veces
     gira-izquierda;
fin;
define-nueva-instruccion marca como
inicio
   mientras derecha-libre hacer
   inicio
      si junto-a-zumbador entonces
      inicio
          deja-zumbador;
      fin;
      si frente-libre entonces
      inicio
          avanzA;
      fin
      sino
      inicio
         gira-derecha;
         avanza;
         mira-sur;
         mientras frente-libre hacer
           avanzA;
         mira-norte;
      fin;
   fin;
    mientras frente-libre hacer
    inicio
         si junto-a-zumbador entonces
             deja-zumbador;
         avanza;
    fin;
      si junto-a-zumbador entonces
          deja-zumbador;
fin;
define-nueva-instruccion mira-oeste como
inicio
    mientras no-orientado-al-oeste hacer
       gira-izquierda;
fin;
define-nueva-instruccion ubicate como
inicio
   mira-sur;
   mientras frente-libre hacer
      avanzA;
   mira-oeste;
   mientras frente-libre hacer
     avanza;
  mira-norte;
fin;
define-nueva-instruccion deja como
inicio
  si frente-libre entonces
  inicio
     avanza;
     si no-junto-a-zumbador entonces
        deja-zumbador;
     paso-atras;
  fin;
  si izquierda-libre entonces
  inicio
     gira-izquierda;
     avanza;
     si no-junto-a-zumbador entonces
        deja-zumbador;
     paso-atras;
     gira-derecha;
  fin;
  si derecha-libre entonces
  inicio
     gira-derecha;
     avanzA;
     si no-junto-a-zumbador entonces
         deja-zumbador;
     paso-atras;
     gira-izquierda;
  fin;
  repetir 2 veces
      gira-izquierda;
  si frente-libre entonces
  inicio
      avanza;
      si no-junto-a-zumbador entonces
         deja-zumbador;
      paso-atras;
  fin;
  repetir 2 veces
     gira-izquierda;
fin;
define-nueva-instruccion multiplica como
inicio
   mientras derecha-libre hacer
   inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          si junto-a-zumbador entonces
          inicio
             deja;
          fin
          sino
             deja-zumbador;
       fin;
       si frente-libre entonces
       inicio
           avanza;
       fin
       sino
       inicio
           gira-derecha;
           avanza;
           gira-derecha;
           mientras frente-libre hacer
              avanza;
           mira-norte;
       fin;
   fin;
   mientras frente-libre hacer
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         si junto-a-zumbador entonces
         inicio
             deja;
         fin
         sino
            deja-zumbador;
      fin;
      avanza;
   fin;
   si junto-a-zumbador entonces
   inicio
       coge-zumbador;
       si junto-a-zumbador entonces
       inicio
           deja;
       fin
       sino
          deja-zumbador;
   fin;
fin;
define-nueva-instruccion cuenta como
inicio
   si junto-a-zumbador entonces
   inicio
       coge-zumbador;
       cuenta;
       marca;
       ubicate;
       multiplica;
       ubicate;
   fin;
fin;
define-nueva-instruccion termina(n) como
inicio
    si frente-libre entonces
    inicio
       avanza;
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          termina(sucede(n));
       fin
       sino
          termina(n);
    fin
    sino
    inicio
       si junto-a-zumbador entonces
       inicio
           ubicate;
           repetir sucede(n) veces
              deja-zumbador;
       fin
       sino
       inicio
           ubicate;
           repetir n veces
              deja-zumbador;
       fin;
    fin;
fin;

define-nueva-instruccion final(n) como
inicio
    si derecha-libre entonces
    inicio
       si frente-libre entonces
       inicio
          avanza;
       fin
       sino
       inicio
          gira-derecha;
          avanza;
          gira-derecha;
          mientras frente-libre hacer
             avanzA;
          mira-norte;
       fin;
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          final(sucede(n));
       fin
       sino
       inicio
          final(n);
       fin;
    fin
    sino
    inicio
       ubicate;
       repetir n veces
          deja-zumbador;
       gira-derecha;
       mientras frente-libre hacer
          avanza;
      gira-izquierda;
      si no-junto-a-zumbador entonces
          termina(0)
      sino
          termina(1);
    fin;
fin;
    inicia-ejecucion
        cuenta;
        final(0);
        apagate;
    termina-ejecucion
finalizar-programa
