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

          fin;
      fin;

    fin;
   define-nueva-instruccion final como
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         final;
         deja-zumbador;
      fin
      sino
         abajo;
   fin;
   define-nueva-instruccion cuenta(n) como
   inicio
      si orientado-al-este entonces
      inicio
         si frente-libre entonces
         inicio
            avanza;
            cuenta(sucede(n));
         fin
         sino
         inicio
            gira-izquierda;
            cuenta(n);
         fin;
      fin
      sino
      inicio
         si frente-libre entonces
         inicio
            avanza;
            cuenta(sucede(n));
         fin
         sino
         inicio
            abajo;
            repetir n veces
               paso(0);
            repetir precede(n) veces
               paso(0);
            final;

         fin;
      fin;
   fin;
    inicia-ejecucion
       abajo;
       cuenta(0);
        apagate;
    termina-ejecucion
finalizar-programa
