iniciar-programa
define-nueva-instruccion portero(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
portero(sucede(n));
      fin
      sino inicio
      mientras no orientado-al-oeste  hacer gira-izquierda;
      mientras frente-libre hacer avanza;
      mientras no orientado-al-este hacer gira-izquierda;
      repetir  n veces avanza;

      si no-junto-a-zumbador entonces deja-zumbador;
               fin;
               fin;
              define-nueva-instruccion altura(u) como inicio
                 si junto-a-zumbador entonces inicio
coge-zumbador;
altura(sucede(u));
      fin
      sino inicio
      mientras no orientado-al-oeste  hacer gira-izquierda;
      mientras frente-libre y no junto-a-zumbador hacer avanza;
      mientras no orientado-al-norte hacer gira-izquierda;
      repetir  u veces inicio
      si frente-libre entonces avanza;

      si no-junto-a-zumbador entonces deja-zumbador;
               fin;
               fin;
               fin;
               define-nueva-instruccion distancia(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
distancia(sucede(n));
      fin
      sino inicio
      mientras no orientado-al-oeste  hacer gira-izquierda;
      mientras frente-libre y no junto-a-zumbador  hacer avanza;
      mientras no-orientado-al-norte hacer gira-izquierda;
      si frente-libre entonces avanza;
      mientras no orientado-al-este hacer gira-izquierda;
      repetir  n veces inicio
    si frente-libre entonces   avanza;
 si no-junto-a-zumbador entonces deja-zumbador;
      fin;
               fin;
               fin;

                 define-nueva-instruccion   a(n) como inicio

                         si frente-libre entonces inicio
                         avanza;
                                                 a(sucede(n));
                                                 fin
                                                 sino inicio
                                                 mientras no orientado-al-sur  hacer gira-izquierda;
      mientras frente-libre   hacer avanza;
      mientras no orientado-al-este hacer gira-izquierda;
si frente-libre entonces avanza;


      repetir n veces deja-zumbador;
      fin;
       fin;


    define-nueva-instruccion wewa(n) como inicio
    si frente-libre entonces inicio
si junto-a-zumbador entonces inicio
    si frente-libre entonces avanza;
   si junto-a-zumbador entonces wewa(0)
   sino
   si no junto-a-zumbador entonces wewa(1);
    fin
    sino inicio
      si frente-libre entonces
      avanza;
si junto-a-zumbador entonces wewa(0)
sino
   si no-junto-a-zumbador entonces wewa(1)


     fin;
     fin
     sino inicio
     si orientado-al-este entonces inicio

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

          fin;
          fin;


      si si-es-cero(n) entonces inicio


     MIENTRAS NO-ORIENTADO-AL-NORTE  HACER GIRA-IZQUIERDA;

              fin
      sino inicio

      si si-es-cero(precede(n)) entonces inicio

      si  orientaDO-AL-SUR   entonces inicio
deja-zumbador;
      FIN
      SINO INICIO
       SI ORIENTADO-AL-NORTE ENTONCES INICIO
      si frente-libre entonces  AVANZA;
       DEJA-ZUMBADOR;
       MIENTRAS NO-ORIENTADO-AL-SUR HACER GIRA-IZQUIERDA;
       FIN;



      fin;


         fin;
        fin;
        fin;





           define-nueva-instruccion gol(n) como inicio
           si junto-a-zumbador entonces inicio
           coge-zumbador;
           gol(sucede(n));
             fin
           sino inicio
           si frente-libre y no-orientado-al-sur entonces inicio
           avanza;
           mientras no-orientado-al-sur hacer gira-izquierda;
           fin;
           fin;

           repetir n veces inicio
           si junto-a-zumbador entonces coge-zumbador
           sino
           mientras no-orientado-al-oeste hacer gira-izquierda;
           fin;

            fin;









 inicia-ejecucion

    mientras no orientado-al-este hacer gira-izquierda;
    mientras no junto-a-zumbador hacer avanza;
    portero(precede (0));
    mientras no orientado-al-este hacer gira-izquierda;
    si frente-libre entonces inicio
    avanza;
    mientras no junto-a-zumbador y frente-libre hacer avanza;
    fin;
        altura(precede(0));
            mientras no orientado-al-sur hacer gira-izquierda;
            mientras frente-libre hacer avanza;
                   mientras no orientado-al-este hacer gira-izquierda;
                       si frente-libre entonces inicio
    avanza;
    mientras no junto-a-zumbador y frente-libre hacer avanza;
    fin;
    distancia(precede(0));
    mientras no-orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-este hacer gira-izquierda;
    si junto-a-zumbador entonces wewa(0)
    sino
   si no-junto-a-zumbador entonces wewa(1);
   mientras no-orientado-al-sur hacer gira-izquierda;
   mientras frente-libre hacer avanza;
   mientras no-orientado-al-norte hacer gira-izquierda;
   si frente-libre entonces avanza;
 gol(0);
 si orientado-al-oeste 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;
 mientras no-orientado-al-norte hacer gira-izquierda;
 si frente-libre entonces avanza;
 mientras no-orientado-al-este hacer gira-izquierda;




  a(1);
     fin
     sino inicio
     si junto-a-zumbador entonces inicio
     mientras no orientado-al-oeste hacer gira-izquierda;
     mientras frente-libre hacer avanza;
     mientras no-orientado-al-sur hacer gira-izquierda;
     mientras frente-libre hacer avanza;
     deja-zumbador;
     fin;
           fin;
        apagate;
    termina-ejecucion
finalizar-programa

