iniciar-programa
define-nueva-instruccion deja(n) como inicio
 repetir n veces deja-zumbador;
 fin;

define-nueva-instruccion pon como inicio
mientras frente-libre hacer inicio
mientras frente-libre y no-junto-a-zumbador hacer avanza;
si junto-a-zumbador entonces inicio
gira-izquierda;
gira-izquierda;
si frente-libre entonces avanza;
si no junto-a-zumbador entonces inicio
deja-zumbador; deja-zumbador;
fin;
gira-izquierda; gira-izquierda;
si frente-libre entonces avanza;
si frente-libre entonces avanza;
mientras frente-libre y no-junto-a-zumbador  hacer avanza;
fin;



                    si frente-bloqueado y (orientado-al-este o orientado-al-sur) entonces inicio
                    si junto-a-zumbador entonces inicio
gira-izquierda;
gira-izquierda;
si frente-libre entonces avanza;
si no junto-a-zumbador entonces inicio
deja-zumbador; deja-zumbador;
fin;
gira-izquierda; gira-izquierda;
si frente-libre entonces avanza;
si frente-libre entonces avanza;
mientras frente-libre y no-junto-a-zumbador  hacer avanza;
fin;
                     gira-izquierda; gira-izquierda;gira-izquierda;
        si frente-libre entonces inicio
        avanza;
              gira-izquierda; gira-izquierda;gira-izquierda;
              mientras frente-libre hacer avanza;
              gira-izquierda;
              gira-izquierda;
              fin;
              fin
              sino inicio
                si frente-bloqueado y (orientado-al-oeste o orientado-al-norte) entonces inicio
                si junto-a-zumbador entonces inicio
gira-izquierda;
gira-izquierda;
si frente-libre entonces avanza;
si no junto-a-zumbador entonces inicio
deja-zumbador; deja-zumbador;
fin;
gira-izquierda; gira-izquierda;
si frente-libre entonces avanza;
si frente-libre entonces avanza;
mientras frente-libre y no-junto-a-zumbador  hacer avanza;
fin;
                     gira-izquierda;
        si frente-libre entonces inicio
        avanza;
              gira-izquierda;
              mientras frente-libre hacer avanza;
              gira-izquierda;
              gira-izquierda;
              fin;
              fin;
              fin;
              fin;
                fin;



               define-nueva-instruccion junta(n) como inicio
               si frente-libre entonces  inicio
mientras frente-libre y no-junto-a-zumbador hacer avanza;
si junto-a-zumbador entonces inicio
          coge-zumbador;
si junto-a-zumbador entonces inicio
coge-zumbador;
si no-junto-a-zumbador entonces junta(sucede(n))
fin
sino inicio
deja-zumbador;
  si frente-libre entonces avanza;
     junta(n);

fin ;

fin
sino inicio
junta(n);
fin;
fin
sino inicio
si frente-bloqueado entonces inicio
  si frente-bloqueado  y (orientado-al-este o orientado-al-sur ) entonces inicio
          gira-izquierda; gira-izquierda;gira-izquierda;
        si frente-libre entonces inicio
        avanza;
              gira-izquierda; gira-izquierda;gira-izquierda;
              mientras frente-libre hacer avanza;
              gira-izquierda;
              gira-izquierda;
              junta(n);
              fin;
              fin
              sino inicio
                  si frente-bloqueado  y (orientado-al-oeste o orientado-al-norte)  entonces inicio
          gira-izquierda;
        si frente-libre entonces inicio
        avanza;
              gira-izquierda;
              mientras frente-libre hacer avanza;
              gira-izquierda;
              gira-izquierda;
              junta(n);
              fin;
              fin;
              fin;
              fin;
si frente-bloqueado  entonces inicio
mientras no-orientado-al-sur hacer gira-izquierda;
mientras frente-libre hacer avanza;
mientras no-orientado-al-oeste hacer gira-izquierda;
mientras frente-libre hacer avanza;
fin;
si orientado-al-oeste entonces inicio
 si no-junto-a-zumbador entonces  inicio
 deja(n);
   mientras no-orientado-al-este hacer gira-izquierda;
   fin
 sino inicio
 si junto-a-zumbador entonces coge-zumbador;
  deja(n);
 mientras no-orientado-al-norte hacer gira-izquierda;
 fin;
 fin;
fin;
fin;
define-nueva-instruccion  a55 como inicio
 mientras no-orientado-al-norte hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-este hacer gira-izquierda;
    pon;
    mientras no-orientado-al-norte hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-este hacer gira-izquierda;
    junta(0);
         fin;
 define-nueva-instruccion  b55 como inicio
 mientras no-orientado-al-norte hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-este hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-oeste hacer gira-izquierda;
       pon;
         mientras no-orientado-al-norte hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-este hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-oeste hacer gira-izquierda;
      junta(0);
      fin;
    define-nueva-instruccion  c55 como inicio

      mientras no-orientado-al-este hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-norte hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-sur  hacer gira-izquierda;
    pon;

      mientras no-orientado-al-este hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-norte hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-sur  hacer gira-izquierda;
    junta(0);
         fin;
        define-nueva-instruccion  d55 como inicio


      mientras no-orientado-al-este  hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-sur  hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-norte  hacer gira-izquierda;
         pon;

      mientras no-orientado-al-este  hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-sur  hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-norte  hacer gira-izquierda;
    junta(0);
    fin;

 define-nueva-instruccion  cuenta4(n)  como inicio
      si junto-a-zumbador entonces inicio
      coge-zumbador;
      cuenta4(sucede(n));
      fin
      sino inicio
      mientras junto-a-zumbador hacer coge-zumbador;
     REPETIR N VECES deja-zumbador;
FIN;
           fin;
 define-nueva-instruccion  cuenta3(n)  como inicio
      si junto-a-zumbador entonces inicio
      coge-zumbador;
      cuenta3(sucede(n));
      fin
      sino inicio
        si orientado-al-norte entonces deja-zumbador;
      D55;
       CUENTA4(N)
         FIN;

         fin;
define-nueva-instruccion  cuenta2(n)  como inicio
      si junto-a-zumbador   entonces inicio
      coge-zumbador;
      cuenta2(sucede(n));
      fin
      sino inicio
      si orientado-al-norte entonces deja-zumbador;
      C55;
      cuenta3(N);
      FIN ;
      fin ;


define-nueva-instruccion  cuenta1(n)  como inicio
      si junto-a-zumbador entonces inicio
      coge-zumbador;
      cuenta1(sucede(n));
      fin
      sino inicio
        si orientado-al-norte entonces deja-zumbador;
 b55;
      cuenta2(N);
      FIN;

        fin;
define-nueva-instruccion  todo  como inicio
    a55;
     cuenta1(0);

 fin;

inicia-ejecucion
 todo;
apagate;
    termina-ejecucion
finalizar-programa
