iniciar-programa
  define-nueva-instruccion gd como
  inicio
  repetir 3 veces
  gira-izquierda;
  fin;
  define-nueva-instruccion mv como
  repetir 2 veces
  gira-izquierda;
  define-nueva-instruccion portero como
  inicio
   si junto-a-zumbador entonces
   inicio
    coge-zumbador;
    portero;
    avanza
    fin
   sino
   inicio
    repetir 2 veces
    inicio
    mientras frente-libre hacer
    avanza;
    gd;
    fin;
   fin;
   fin;
   define-nueva-instruccion ancho como
   inicio
    si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     ancho;
     si no junto-a-zumbador entonces
     deja-zumbador;
     si frente-libre entonces
     avanza;
    fin
    sino
    inicio
     repetir 2 veces
     inicio
      mientras frente-libre hacer
      avanza;
      gd;
     fin;
    mientras no junto-a-zumbador hacer
    avanza;
    fin;
   fin;
   define-nueva-instruccion medir1 como
   inicio
    si frente-libre entonces
    inicio
     avanza;
     medir1;
     deja-zumbador
    fin
    sino
    inicio
     mv;
     mientras frente-libre hacer
     avanza;
     gd;
     mientras frente-libre hacer
     avanza;
     gira-izquierda;
     avanza;
    fin;
   fin;
   define-nueva-instruccion medir2 como
   inicio
    si frente-libre entonces
    inicio
     avanza;
     medir2;
     deja-zumbador
    fin
    sino
    inicio
     gd;
     mientras frente-libre hacer
     avanza;
     gira-izquierda;
     avanza;
     avanza;
    fin;
   fin;
   define-nueva-instruccion cuenta como
   inicio
    si frente-libre entonces
    inicio
     avanza;
     cuenta;
     deja-zumbador
    fin
    sino
    inicio
     gd;
     mientras frente-libre hacer
     avanza;
     gira-izquierda;
     avanza;
    fin;
   fin;
    inicia-ejecucion
      gd;
      avanza;
      avanza;
      mientras junto-a-zumbador hacer
      coge-zumbador;
      mv;
      avanza;
      portero;
      mv;
      avanza;
      deja-zumbador;
      repetir 2 veces
      inicio
       mientras frente-libre hacer
       avanza;
       gira-izquierda;
      fin;
      mientras no junto-a-zumbador hacer
      avanza;
      mv;
      ancho;
      mv;
      mientras frente-libre hacer
      avanza;
      mv;
      mientras no junto-a-zumbador hacer
      avanza;
      mv;
      medir1;
      mv;
      repetir 2 veces
      inicio
      mientras frente-libre hacer
      avanza;
      gd;
      fin;
      mientras frente-libre hacer
      avanza;
      mv;
      mientras no junto-a-zumbador hacer
      avanza;
      mv;
      medir2;
      mv;
      avanza;
      mv;
      mientras junto-a-zumbador hacer
      inicio
       coge-zumbador;
       avanza;
       mv;
      fin;
      si orientado-al-oeste entonces
      inicio
       avanza;
       mientras junto-a-zumbador hacer
       coge-zumbador;
       deja-zumbador
      fin
      sino
      inicio
       avanza;
       mientras junto-a-zumbador hacer
       coge-zumbador;
       mv;
       repetir 2 veces
       inicio
        mientras frente-libre hacer
        avanza;
        gd;
       fin;
       cuenta;
       deja-zumbador;
      fin;
         apagate;
    termina-ejecucion
finalizar-programa
