iniciar-programa
define-nueva-instruccion perimetro como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      mientras frente-libre hacer
         avanza;
      repetir 3 veces
         gira-izquierda;
      mientras frente-libre hacer
         avanza;
   fin
   sino
   inicio
      si izquierda-bloqueada entonces
          avanza
      sino
      inicio
         gira-izquierda;
         avanza;
      fin;
      perimetro;
      deja-zumbador;
   fin;
fin;
define-nueva-instruccion coge(n) como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      coge(sucede(n));
   fin
   sino
   inicio
      gira-izquierda;
      gira-izquierda;
      avanza;
      mientras junto-a-zumbador hacer
      inicio
         gira-izquierda;
         gira-izquierda;
         coge-zumbador;
         avanza;
         avanza;
         gira-izquierda;
         gira-izquierda;
         deja-zumbador;
         avanza;
         avanza;
         repetir precede(n) veces
            si junto-a-zumbador entonces
            inicio
               coge-zumbador;
               gira-izquierda;
               gira-izquierda;
               avanza;
               avanza;
               avanza;
               deja-zumbador;
               gira-izquierda;
               gira-izquierda;
               avanza;
               avanza;
               avanza;
            fin;
       fin;
       apagate;
   fin;
fin;
    inicia-ejecucion
       mientras no-orientado-al-norte hacer
          gira-izquierda;
       avanza;
       repetir 3 veces
          gira-izquierda;
       avanza;
       deja-zumbador;
       avanza;
       perimetro;
       deja-zumbador;
       gira-izquierda;
       gira-izquierda;
       avanza;
       coge(0);
        apagate;
    termina-ejecucion
finalizar-programa
