iniciar-programa
define-nueva-instruccion ganda(n) como
   inicio
     si junto-a-zumbador entonces
       inicio
         coge-zumbador;
         ganda(sucede(n));
       fin;
      si orientado-al-oeste entonces
        inicio
            gira-izquierda;
            si frente-libre entonces avanza;
            gira-izquierda;
            repetir n veces avanza;
         fin;

   fin;
   define-nueva-instruccion haz(n) como
      inicio
        si junto-a-zumbador entonces
          inicio
            coge-zumbador;
            haz(sucede(n));
          fin;
          si no-orientado-al-norte entonces
            inicio
              repetir 3 veces gira-izquierda;
              si frente-libre entonces avanza;
              repetir n veces deja-zumbador;
            fin;



      fin;
      define-nueva-instruccion trae(n) como
         inicio
           si junto-a-zumbador entonces
         inicio
          coge-zumbador;
          trae(sucede(n));
         fin;
        si no-orientado-al-oeste entonces
         inicio
          repetir 2 veces gira-izquierda;
           mientras no-junto-a-zumbador y frente-libre hacer avanza;
           si (junto-a-zumbador y orientado-al-oeste) entonces
             inicio
              repetir 2 veces gira-izquierda;
              si frente-libre entonces avanza;
            fin;
           repetir n veces deja-zumbador;
           mientras no-orientado-al-oeste hacer gira-izquierda;
         fin;


         fin;
      define-nueva-instruccion lleva(n) como
          inicio
        si junto-a-zumbador entonces        
         inicio
          coge-zumbador;
         lleva(sucede(n));
         fin;
         si no-orientado-al-oeste entonces
           inicio
            repetir 2 veces gira-izquierda;
            mientras frente-libre hacer avanza;
            gira-izquierda;
            si frente-libre entonces avanza;
            gira-izquierda;
            mientras junto-a-zumbador y frente-libre hacer avanza;
            repetir n veces deja-zumbador;
            repetir 2 veces gira-izquierda;
           fin;



         fin;
         define-nueva-instruccion ve como
           inicio
             mientras no-orientado-al-oeste hacer gira-izquierda;
             mientras frente-libre hacer avanza;
             repetir 3 veces gira-izquierda;
             si frente-libre entonces avanza;
             repetir 3 veces gira-izquierda;
             mientras no-junto-a-zumbador y frente-libre hacer avanza;
            si junto-a-zumbador entonces
            lleva(0);
            si frente-bloqueado entonces apagate;
           fin;

 define-nueva-instruccion cuenta(n) como
    inicio
      si junto-a-zumbador entonces
         inicio
          coge-zumbador;
          cuenta(sucede(n));
         fin;
        si frente-libre entonces avanza;
        si junto-a-zumbador entonces coge-zumbador;
        ganda(0);
        repetir 2 veces gira-izquierda;
          repetir n veces
            inicio
               si frente-libre entonces avanza;
               haz(0);
               repetir 2 veces gira-izquierda;
               si frente-libre entonces avanza;
               repetir 3 veces gira-izquierda;

            fin;
         repetir 2 veces gira-izquierda;
         mientras frente-libre o orientado-al-oeste hacer
           inicio
              mientras no-orientado-al-este hacer gira-izquierda;
               si junto-a-zumbador y frente-libre entonces avanza;
              mientras no-junto-a-zumbador y frente-libre hacer
                avanza;

                  si junto-a-zumbador entonces
                    trae(0);
              fin;

          mientras frente-libre o frente-bloqueado hacer
          ve;



    fin;
    inicia-ejecucion
     mientras no-orientado-al-norte hacer gira-izquierda;
     si frente-libre entonces avanza;
     repetir 3 veces gira-izquierda;
     si frente-libre entonces avanza;
     repetir 2 veces gira-izquierda;
     cuenta(0);

        apagate;
    termina-ejecucion
finalizar-programa
