iniciar-programa
    define-nueva-instruccion norte como inicio
        mientras no-orientado-al-norte hacer inicio
            gira-izquierda;
        fin;
    fin;

  define-nueva-instruccion sur como inicio
        mientras no-orientado-al-sur hacer inicio
            gira-izquierda;
       fin;
    fin;

  define-nueva-instruccion este como inicio
        mientras no-orientado-al-este hacer inicio
            gira-izquierda;
        fin;
    fin;

  define-nueva-instruccion oeste como inicio
        mientras no-orientado-al-oeste hacer inicio
            gira-izquierda;
        fin;
    fin;

  define-nueva-instruccion limpiar como inicio
     mientras junto-a-zumbador hacer inicio
        coge-zumbador;
     fin;
  fin;

  define-nueva-instruccion llenarFila como inicio
     este;
     mientras frente-libre hacer inicio
        limpiar;
        deja-zumbador;
        avanza;
     fin;
     limpiar;
     deja-zumbador;
  fin;
  define-nueva-instruccion bajarRenglon como inicio
      oeste;
      mientras izquierda-bloqueada y frente-libre hacer inicio
           avanza;
      fin;
      sur;
      si frente-libre entonces inicio
         avanza;
         oeste;
         mientras frente-libre hacer inicio
             avanza;
         fin;
         este;
      fin;
  fin;

 define-nueva-instruccion copia(n) como inicio
   si junto-a-zumbador entonces inicio
      coge-zumbador;
      copia( sucede(n));
   fin sino inicio
      repetir n veces inicio
         deja-zumbador;
      fin;
      gira-izquierda;
      gira-izquierda;
      avanza;
      repetir n veces inicio
         deja-zumbador;
      fin;
      este;
   fin;
 fin;


  define-nueva-instruccion suma como inicio
     mientras frente-libre  hacer inicio
        limpiar;
        oeste;
        si frente-libre entonces inicio
           avanza;
           copia(0);
        fin;
        norte;
        si frente-libre entonces inicio
           avanza;
           copia(0);
        fin;
       este;
       si frente-libre entonces inicio
          avanza;
       fin;

     fin;

        limpiar;
        oeste;
        si frente-libre entonces inicio
           avanza;
           copia(0);
        fin;
        norte;
        si frente-libre entonces inicio
           avanza;
           copia(0);
        fin;
       este;
       si frente-libre entonces inicio
          avanza;
       fin;


  fin;

    inicia-ejecucion
        llenarfila;
        mientras orientado-al-este hacer inicio
            bajarRenglon;
            si orientado-al-este entonces inicio
            suma;
            fin;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
