iniciar-programa

      define-nueva-instruccion  gira-derecha como inicio
      gira-izquierda;
      gira-izquierda;
      gira-izquierda;
      fin;

       define-nueva-instruccion  media-vuelta como inicio
      gira-izquierda;
      gira-izquierda;
       fin;


      define-nueva-instruccion contar  como inicio
       avanza;
       si frente-libre y derecha-bloqueada    entonces inicio
        contar;
        deja-zumbador;
        fin
       sino si derecha-libre  y no orientado-al-oeste entonces inicio
        gira-derecha;
        contar;
        fin;
        fin;

       define-nueva-instruccion pasa(k) como inicio
        si junto-a-zumbador entonces inicio
         coge-zumbador;
         pasa(sucede(k));

         fin
         sino inicio
          gira-derecha;
          avanza;
          repetir k veces deja-zumbador;
          gira-derecha;
          coge-zumbador;
          avanza;
          repetir k veces deja-zumbador;
          fin;
          fin;

    define-nueva-instruccion coge(n) como inicio
     si junto-a-zumbador entonces inicio
      coge-zumbador;
      coge(sucede(n));
      fin
      sino
      inicio
       media-vuelta;
        mientras frente-libre hacer inicio
           avanza;
           fin;

       repetir n veces deja-zumbador;
                sal-de-instruccion;

       fin;
       fin;
    define-nueva-instruccion coge2(n) como inicio
     si junto-a-zumbador entonces inicio
      coge-zumbador;
      coge2(sucede(n));
      fin
      sino
      inicio
       media-vuelta;
        mientras frente-libre hacer inicio
           avanza;
           fin;
           gira-izquierda; avanza; gira-izquierda; avanza;

       repetir n veces deja-zumbador;
                sal-de-instruccion;

       fin;

       fin;
    define-nueva-instruccion cociente como inicio
     avanza;
     mientras junto-a-zumbador hacer
     coge-zumbador;
     media-vuelta;
     avanza;
     avanza;
     deja-zumbador;
     media-vuelta;
     avanza;
     fin;

      define-nueva-instruccion mueve como inicio
     coge-zumbador;
        avanza;
        deja-zumbador;
        media-vuelta;
        avanza;
        media-vuelta;
        fin;
    define-nueva-instruccion divide(k) como inicio
    mientras junto-a-zumbador hacer inicio
      repetir k veces inicio
       si junto-a-zumbador entonces inicio
        mueve;
        fin
        sino inicio
        sal-de-instruccion;
        fin;
        fin;
        cociente;
        fin;
        fin;

    define-nueva-instruccion primero(k) como inicio
      si junto-a-zumbador entonces inicio
      coge-zumbador;
      primero(sucede(k));
      fin
      sino
      inicio
      avanza;
      gira-derecha;

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

        fin;
        fin;

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

        fin;
        fin;

     define-nueva-instruccion multiplica(n) como inicio
       si junto-a-zumbador entonces inicio
         coge-zumbador;
         multiplica(n);
         repetir n veces inicio
          deja-zumbador;
          fin;
         fin
         sino
         inicio
         media-vuelta;
         avanza;
         avanza;
         avanza;
         fin;
         fin;

      define-nueva-instruccion baya(n) como inicio
      si junto-a-zumbador entonces inicio
       coge-zumbador;
       baya(sucede(n));
       fin
       sino
       inicio
       si orientado-al-oeste entonces inicio
       repetir n veces deja-zumbador;
       avanza; avanza;
       multiplica(n);

       fin;


       fin;

      fin;






    inicia-ejecucion
    mientras no orientado-al-norte hacer inicio
     gira-izquierda;
     fin;
        gira-derecha;
        avanza;

        gira-izquierda;
        avanza;
         contar;
       repetir 4 veces deja-zumbador;
         gira-izquierda;
         avanza;
         pasa(0);
         gira-derecha;
         primero(0);
         media-vuelta;
         avanza;
         media-vuelta;
         final(0);
          media-vuelta;
          baya(0);



        apagate;
    termina-ejecucion
finalizar-programa
