iniciar-programa

 define-nueva-instruccion final como
  inicio
  repetir 2 veces gira-izquierda;
   mientras frente-libre hacer
    avanza;
   gira-izquierda;
    repetir 11 veces avanza;
   repetir 2 veces gira-izquierda;
 fin;
 define-nueva-instruccion lleva (n) como
   inicio
    si junto-a-zumbador entonces
      inicio
       coge-zumbador;
       lleva(sucede(n));
      fin;
      si izquierda-libre entonces
       inicio
         repetir 2 veces gira-izquierda;
          si frente-libre entonces avanza;
          repetir 3 veces gira-izquierda;
         si frente-libre entonces avanza;
         repetir n veces deja-zumbador;
       fin;


   fin;

 define-nueva-instruccion sumakar (n) como
   inicio
      si junto-a-zumbador entonces
        inicio
         coge-zumbador;
         sumakar(sucede(n));
        fin;
       final;

     mientras  frente-libre hacer
       inicio
         repetir n veces
           inicio
            si junto-a-zumbador y no-orientado-al-norte entonces
              coge-zumbador
            sino
             inicio
              deja-zumbador;
              si orientado-al-oeste entonces repetir 3 veces gira-izquierda;
             fin;
           fin;
           si orientado-al-oeste entonces
             inicio
               mientras no-orientado-al-norte hacer gira-izquierda;
               si frente-libre entonces avanza;
               deja-zumbador;
               repetir 2 veces gira-izquierda;
               si frente-libre entonces avanza;
               repetir 3 veces gira-izquierda;
             fin
             sino
               inicio
                mientras no-orientado-al-oeste hacer gira-izquierda;
                   repetir n veces
                     inicio
                       si junto-a-zumbador y no-orientado-al-norte entonces
                        coge-zumbador
                   sino
                     inicio
                       deja-zumbador;
                      si orientado-al-oeste entonces repetir 3 veces gira-izquierda;
                      fin;
                   fin;
                 fin;
                  si orientado-al-norte o no-junto-a-zumbador entonces
                   inicio
                   mientras no-orientado-al-norte hacer gira-izquierda;
                   si frente-libre entonces avanza;
                   si junto-a-zumbador entonces
                    lleva(0)
                   sino
                      inicio
                       repetir 2 veces gira-izquierda;
                       si frente-libre entonces avanza;
                       repetir 3 veces gira-izquierda;
                       si frente-libre entonces avanza;
                      fin;
                   fin;



     fin;
     si frente-bloqueado entonces apagate;


    fin;
  define-nueva-instruccion sum (n) como
    inicio
      si junto-a-zumbador entonces
      inicio
      coge-zumbador;
      sum(sucede(n));
     fin;

     si frente-libre entonces
       inicio
       avanza;
      repetir n veces
       deja-zumbador;
      fin;
      si frente-libre entonces
       sum(0);

     si frente-bloqueado entonces
      sal-de-instruccion;

    fin;
     inicia-ejecucion
      repetir 3 veces gira-izquierda;
      repetir 11 veces
       si frente-libre entonces avanza;
       gira-izquierda;
       si frente-libre entonces avanza;
       si frente-libre entonces avanza;
       repetir 2 veces gira-izquierda;
       repetir 11 veces
         inicio
          sum(0);
          si frente-bloqueado entonces
          repetir 2 veces gira-izquierda;
          repetir 2 veces si frente-libre entonces avanza;
          gira-izquierda;
          si frente-libre entonces avanza;
          gira-izquierda;
        fin;
        repetir 2 veces gira-izquierda;
        si frente-libre entonces avanza;
         si junto-a-zumbador entonces
          sumakar(0);




        apagate;
    termina-ejecucion
finalizar-programa
