iniciar-programa
  define-nueva-instruccion gd como repetir 3 veces gira-izquierda;
  define-nueva-instruccion mv como repetir 2 veces gira-izquierda;
  define-nueva-instruccion checa-lados como
  inicio
  si izquierda-libre entonces
  inicio
   gira-izquierda;
   avanza;
   si no junto-a-zumbador entonces
   inicio
    mv;
    avanza;
    si frente-libre entonces avanza
    sino
    inicio
     mv;
     avanza;
    fin;
   fin;
  fin
  sino
  inicio
  si derecha-libre entonces
  inicio
   gd;
   avanza;
   si no junto-a-zumbador entonces
   inicio
    mv;
    avanza;
    si frente-libre entonces avanza
    sino
    inicio
    mv;
    avanza;
    fin;
   fin;
  fin 
  sino
   si frente-libre entonces avanza;
  fin;
  fin;
  define-nueva-instruccion pasa como
  inicio
   si frente-libre entonces
    inicio
     avanza;
     si no junto-a-zumbador entonces
     inicio
      mv;
      avanza;
      mv;
      checa-lados;
     fin;
    fin
    sino
    inicio
    checa-lados;
    fin;
  fin;
  define-nueva-instruccion lleno(N) como
  inicio
   si junto-a-zumbador y (izquierda-libre o derecha-libre o frente-libre) entonces
   inicio
    coge-zumbador;
    si junto-a-zumbador entonces
    inicio
     pasa;
     lleno(sucede(N));
    fin
    sino
    inicio
    pasa;
    lleno(N);
    fin;
   fin
   sino
   inicio
    si no junto-a-zumbador entonces
    inicio
     mv;
     si frente-libre entonces avanza;
     mientras junto-a-zumbador hacer coge-zumbador;
     repetir N veces deja-zumbador; deja-zumbador;
    fin
    sino
    inicio
     coge-zumbador;
     si junto-a-zumbador entonces
     inicio
     mientras junto-a-zumbador hacer coge-zumbador;
     repetir N veces
     deja-zumbador;
     repetir 2 veces deja-zumbador;
     fin
     sino
     inicio
     repetir N veces deja-zumbador; deja-zumbador;
     fin;
    fin;
   fin;
  fin;
  define-nueva-instruccion camino(N) como
  inicio
   si junto-a-zumbador y (izquierda-libre o derecha-libre o frente-libre) entonces
   inicio
   coge-zumbador;
   si junto-a-zumbador entonces
   inicio
   pasa;
   si no(si-es-cero(N)) entonces
   camino(precede(N))
   sino
   lleno(N);
   fin
   sino
   inicio
   pasa;
   camino(N);
   fin;
   fin
   sino
   inicio
    si no junto-a-zumbador entonces
    inicio
    mv;
    si frente-libre entonces avanza;
    fin;
    mientras junto-a-zumbador hacer coge-zumbador;
    mientras no orientado-al-este hacer gira-izquierda;
    avanza;
    repetir 5 veces deja-zumbador;
   fin;
  fin;
  define-nueva-instruccion camion(N) como
  inicio
   si junto-a-zumbador entonces
   inicio
   coge-zumbador;
   camion(sucede(N));
   fin
   sino
   inicio
   si frente-libre entonces
   avanza;
   camino(N);
   fin;
  fin;
    inicia-ejecucion
      camion(0);
        apagate;
    termina-ejecucion
finalizar-programa
