iniciar-programa
define-nueva-instruccion gira-derecha como
inicio
  repetir 3 veces
    gira-izquierda;
fin;
define-nueva-instruccion mira-norte como
inicio
  mientras no-orientado-al-norte hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-este como
inicio
  mientras no-orientado-al-este hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-oeste como
inicio
  mientras no-orientado-al-oeste hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-sur como
inicio
  mientras no-orientado-al-sur hacer
    gira-izquierda;
fin;
define-nueva-instruccion paso-atras como
inicio
  repetir 2 veces
    gira-izquierda;
  avanza;
  repetir 2 veces
    gira-izquierda;
fin;
define-nueva-instruccion recoge como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    recoge;
    deja-zumbador;
    paso-atras;
    deja-zumbador;
    avanza;
  fin;
fin;
define-nueva-instruccion resta(n) como
inicio
  si no(si-es-cero(N)) y junto-a-zumbador entonces
  inicio
     coge-zumbador;
     resta(precede(n));
  fin
  sino
  inicio
    si si-es-cero(n) entonces
    inicio
      recoge;
      repetir n veces
        deja-zumbador;
    fin;
  fin;
fin;
define-nueva-instruccion diferencia(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    diferencia(sucede(n));
    deja-zumbador;
  fin
  sino
  inicio
    avanza;
    resta(n);
  fin;
fin;
define-nueva-instruccion lado(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    lado(n);
    repetir n veces
      deja-zumbador;
  fin;
fin;
define-nueva-instruccion multiplica(m) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    multiplica(sucede(m));
  fin
  sino
  inicio
    gira-derecha;
    avanza;
    lado(m);
    si no-junto-a-zumbador entonces
      repetir m veces
        deja-zumbador;
    paso-atras;
    gira-izquierda;
    repetir precede(m) veces
    inicio
      si algun-zumbador-en-la-mochila entonces
      deja-zumbador;
    fin;
  fin;
fin;
define-nueva-instruccion cuenta(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    cuenta(sucede(N));
  fin
  sino
  inicio
    avanza;
    repetir n veces
    inicio
      multiplica(0);
    fin;
  fin;
fin;
define-nueva-instruccion acomoda como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    acomoda;
    deja-zumbador;
  fin
  sino
  inicio
    mira-sur;
    mientras frente-libre hacer
      avanza;
    mira-oeste;
    mientras frente-libre hacer
      avanza;
    mira-norte;
  fin;
fin;
    inicia-ejecucion
    avanza;
    diferencia(0);
    paso-atras;
    cuenta(0);
    gira-derecha;
    avanza;
    gira-izquierda;
    acomoda;
        apagate;
    termina-ejecucion
finalizar-programa
 