iniciar-programa
define-nueva-instruccion abajo(n) como
   inicio
      si no-junto-a-zumbador entonces
         deja-zumbador;
      repetir precede(n) veces
      inicio
         avanza;
         si no-junto-a-zumbador entonces
            deja-zumbador;
      fin;
      si no si-es-cero(precede(n)) entonces
      inicio
         repetir 3 veces
            gira-izquierda;
         avanza;
         repetir 3 veces
            gira-izquierda;
         mientras frente-libre hacer
            avanza;
         gira-izquierda;
         gira-izquierda;
         abajo(precede(n));
      fin;
   fin;


   define-nueva-instruccion arriba(n) como
   inicio
      si no-junto-a-zumbador entonces
         deja-zumbador;
      repetir precede(n) veces
      inicio
         avanza;
         si no-junto-a-zumbador entonces
            deja-zumbador;
      fin;
      si no si-es-cero(precede(n)) entonces
      inicio
         gira-izquierda;
         avanza;
         gira-izquierda;
         mientras frente-libre hacer
            avanza;
         gira-izquierda;
         gira-izquierda;
         arriba(precede(n));
      fin;
   fin;
   define-nueva-instruccion principal(n) como
   inicio
       repetir n veces
          avanza;
       gira-izquierda;
       si no si-es-cero(precede(n)) entonces
          abajo(precede(n));
       gira-izquierda;
       mientras frente-libre hacer
          avanza;
       gira-izquierda;
       gira-izquierda;
       repetir precede(n) veces
          avanza;
       gira-izquierda;
       arriba(n);
       si algun-zumbador-en-la-mochila entonces
       inicio
           gira-izquierda;
           gira-izquierda;
           mientras frente-libre hacer
              avanza;
           gira-izquierda;
           principal(sucede(n));
       fin
       sino
       inicio
          repetir 3 veces
             gira-izquierda;
          avanza;
          mientras junto-a-zumbador hacer
          inicio
              avanza;
              gira-izquierda;
              avanza;
              repetir 3 veces
                gira-izquierda;
          fin;
          gira-izquierda;
          gira-izquierda;
          avanza;
          apagate;
       fin;
   fin;
    inicia-ejecucion
       mientras no-orientado-al-este hacer
          gira-izquierda;
       principal(1);
        apagate;
    termina-ejecucion
finalizar-programa
