iniciar-programa
  define-nueva-instruccion gd como
  inicio
  repetir 3 veces
  gira-izquierda;
  fin;
  define-nueva-instruccion mv como
  inicio
  repetir 2 veces
  gira-izquierda;
  fin;
  define-nueva-instruccion baja como
  inicio
   mv;
   mientras frente-libre hacer
   avanza;
   gira-izquierdA;
   avanza;
   gira-izquierda;
  fin;
  define-nueva-instruccion recoge2 como
  inicio
   mientras no (frente-bloqueado y derecha-bloqueada) hacer
   inicio
    mientras frente-libre hacer
    inicio
     si junto-a-zumbador entonces
     inicio
     coge-zumbador;
     si no junto-a-zumbador entonces
     deja-zumbador;
     fin;
    avanza;
    fin;
   si junto-a-zumbador entonces
    inicio
    coge-zumbador;
    si no junto-a-zumbador entonces
    deja-zumbador;
    fin;
    si derecha-libre entonces
    baja;
   fin;
   si junto-a-zumbador entonces
   inicio
   coge-zumbador;
   si no junto-a-zumbador entonces
   deja-zumbador;
   fin;
  fin;
  define-nueva-instruccion expandir como
  inicio
   repetir 4 veces
   inicio
    si frente-libre entonces
    inicio
    avanza;
    si no junto-a-zumbador entonces
    repetir 2 veces deja-zumbador;
    mv;
    avanza;
    mv;
    fin;
   gira-izquierda;
   fin;
  fin;
  define-nueva-instruccion infecta como
  inicio
   si no (frente-bloqueado y derecha-bloqueada) entonces
   inicio
    si junto-a-zumbador entonces
    inicio
    coge-zumbador;
     si no junto-a-zumbador entonces
     expandir;
     deja-zumbador;
    fin;
   si frente-libre entonces
   avanza
   sino
   baja;
   infecta;
   fin
   sino
   inicio
    si junto-a-zumbador entonces
    inicio
    coge-zumbador;
     si no junto-a-zumbador entonces
     expandir;
    deja-zumbador;
   fin;
   mv;
   recoge2;
   fin;
  fin;
  define-nueva-instruccion dias como
  inicio
   si junto-a-zumbador entonces
   inicio
   coge-zumbador;
   dias;
   mientras no orientado-al-norte hacer
   gira-izquierda;
   infecta;
  fin;
  fin;
  define-nueva-instruccion barre como
  inicio
   si no(frente-bloqueado y derecha-bloqueada) entonces
   inicio
    si junto-a-zumbador entonces
     inicio
     coge-zumbador;
     barre;
     deja-zumbador
     fin
    sino
    inicio
     si frente-libre entonces
     inicio
     avanza;
     barre
     fin
     sino
     inicio
     baja;
     barre;
     fin;
   fin;
  fin
  sino
   inicio
    si junto-a-zumbador entonces
    inicio
    coge-zumbador;
    mv;
    mientras frente-libre hacer
    avanza;
    gd;
    mientras frente-libre hacer
    avanza;
    deja-zumbador
    fin
    sino
    inicio
    mv;
    mientras frente-libre hacer
    avanza;
    gd;
    mientras frente-libre hacer
    avanza;
    fin;
    fin;
   fin;
    inicia-ejecucion
      mientras no orientado-al-norte hacer
      gira-izquierda;
      dias;
      mv;
      barre;
        apagate;
    termina-ejecucion
finalizar-programa

