iniciar-programa
   define-nueva-instruccion camina(N) como inicio

   repetir n veces inicio
       si frente-libre entonces inicio
       avanza;
       deja-zumbador;
       fin;
       fin;
      mientras no orientado-al-este hacer gira-izquierda;
      si frente-libre entonces inicio
      avanza;
      repetir n veces deja-zumbador;
      fin;

       SI NO SI-ES-CERO(PRECEDE(N)) ENTONCES INICIO
       mientras no-orientado-al-norte hacer gira-izquierda;
        fin
        SINO INICIO
        SI FRENTE-LIBRE ENTONCES AVANZA;
        FIN;
        FIN;
    define-nueva-instruccion corre(n) como inicio
repetir n veces inicio
       si frente-libre entonces inicio
       avanza;
       deja-zumbador;
       fin;
       fin;
      mientras no orientado-al-este hacer gira-izquierda;
      si frente-libre entonces inicio
      avanza;
      fin;
        mientras no-orientado-al-sur hacer gira-izquierda;

           fin;

define-nueva-instruccion parabola(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
parabola(sucede(n));
fin
sino inicio
si frente-libre entonces inicio
     deja-zumbador;
si frente-libre entonces camina(precede(n));
         fin;
         fin;
fin;

define-nueva-instruccion parabola2(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
parabola2(sucede(n));
fin
sino inicio
si frente-libre entonces inicio
     deja-zumbador;
si frente-libre entonces corre(precede(n));
         fin;
         repetir n veces deja-zumbador;
         fin;
fin;

    define-nueva-instruccion mide(N) como inicio
    si frente-libre y no junto-a-zumbador entonces inicio
    avanza;
    mide(SUCEDE(N));
    FIN
    SINO INICIO

     mientras no orientado-al-oeste hacer gira-izquierda;
           mientras frente-libre hacer avanza;
           MIENTRAS JUNTO-A-ZUMBADOR HACER COGE-ZUMBADOR;
             REPETIR N VECES  DEJA-ZUMBADOR;
             mientras no-orientado-al-ESTE hacer gira-izquierda;
             fin;
             fin;

    inicia-ejecucion
    mientras no-orientado-al-norte hacer gira-izquierda;
    si frente-libre entonces inicio
    mientras (junto-a-zumbador y frente-libre) Y DERECHA-LIBRE hacer  parabola(0);
    fin
    sino inicio

     mientras no orientado-al-este hacer gira-izquierda;
    deja-zumbador;
    si frente-libre entonces avanza;
    fin;
    mientras no orientado-al-este hacer gira-izquierda;
    deja-zumbador;


     si frente-libre entonces inicio
     avanza;
     deja-zumbador;
           mientras no-orientado-al-sur hacer gira-izquierda;
        mientras junto-a-zumbador y frente-libre hacer parabola2(1);
         fin
         sino
         inicio
         mientras no-orientado-al-SUR hacer gira-izquierda;
         mientras frente-libre hacer avanza;
         mientras no-orientado-al-oeste hacer gira-izquierda;
         mide(1);

         fin;
         si no-orientado-al-ESTE entonces inicio
           mientras no orientado-al-oeste hacer gira-izquierda;
            si frente-libre entonces inicio
          mientras frente-libre hacer avanza;
           mientras no-orientado-al-este hacer gira-izquierda;
          SI NO JUNTO-A-ZUMBADOR ENTONCES mide(1)
          SINO INICIO
          SI JUNTO-A-ZUMBADOR ENTONCES INICIO
         SI FRENTE-LIBRE ENTONCES AVANZA;
         MIDE(2);
         FIN;
         FIN;
            fin
            sino inicio
            si no-orientado-al-sur entonces inicio
            mientras junto-a-zumbador hacer coge-zumbador;
            deja-zumbador
            fin;
            fin;
              fin;
        apagate;
    termina-ejecucion
finalizar-programa

