iniciar-programa

define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;

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

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

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



define-nueva-instruccion mayor(n) como inicio

    si no si-es-cero (n) entonces   inicio

        si junto-a-zumbador entonces inicio

            coge-zumbador;

            mayor(precede(n));

            deja-zumbador;

        fin sino inicio

            repetir n veces  inicio

               deja-zumbador;

            fin;

        fin;

    fin;

  fin;



define-nueva-instruccion comparar(n) como inicio

    mayor(n);

fin;



    define-nueva-instruccion retrocede como inicio

          repetir 2 veces gira-izquierda;

          avanza;

          repetir 2 veces gira-izquierda;

    fin;





    define-nueva-instruccion CaminaDer como inicio

       (*busco a la derecha*)

       gira-izquierda;

       gira-izquierda;

       avanza;

    fin;





    define-nueva-instruccion CaminaIzq como inicio

       (*busco a la izquierda*)

       gira-izquierda;

       si frente-libre entonces inicio

          avanza;

          si no junto-a-zumbador entonces inicio

            retrocede;

            caminaDer;

          fin;

       fin sino inicio

          caminaDer

       fin;

    fin;



    define-nueva-instruccion camina como inicio

       si frente-libre entonces inicio

          avanza;

          si no-junto-a-zumbador entonces inicio

             retrocede;

             CaminaIzq;

          fin;

       fin sino inicio

          caminaIZQ

       fin

    fin;





    define-nueva-instruccion sigCiudad como inicio

        si junto-a-zumbador entonces inicio

           coge-zumbador;

           si junto-a-zumbador entonces inicio

               deja-zumbador

           fin sino inicio

               deja-zumbador;

               camina;

               sigCiudad;

           fin;

        fin

    fin;



define-nueva-instruccion pon(n) como   inicio

     mientras junto-a-zumbador hacer coge-zumbador;

     repetir n veces deja-zumbador;

fin;







define-nueva-instruccion resultado(n) como inicio

   si orientado-al-este entonces inicio

      avanza;

      comparar(n);

      retrocede;

   fin;

   si orientado-al-sur entonces inicio

      este;

      avanza;

      comparar(n);

      retrocede;

      sur;

   fin;

   si orientado-al-norte entonces inicio

      este;

      avanza;

      comparar(n);

      retrocede;

      norte;

   fin;

fin;



define-nueva-instruccion regresar como  inicio

    repetir 2 veces gira-izquierda;

    avanza;

    sigCiudad;

    repetir 2 veces gira-izquierda;

fin;









define-nueva-instruccion autobus(n) como inicio

     repetir 2 veces inicio

        coge-zumbador;

     fin;



     si junto-a-zumbador entonces inicio

         coge-zumbador;

         si junto-a-zumbador entonces inicio

             repetir 3 veces inicio

                 deja-zumbador;

             fin;

         fin sino inicio

             pon(3);

             resultado(n);

         fin;

     fin sino inicio

       si no si-es-cero(n) entonces inicio

         pon(4);

         si frente-libre entonces inicio   (*frente*)

              avanza;

              si no junto-a-zumbador entonces inicio

                 retrocede

              fin sino inicio

                  sigciudad;

                  autobus(precede(n));

                  regresar;

              fin;

         fin;

         gira-izquierda;  (* izquierda *)

         si frente-libre entonces inicio

              avanza;

              si no junto-a-zumbador entonces inicio

                 retrocede

              fin sino inicio

                  sigciudad;

                  autobus(precede(n));

                  regresar;

              fin;

         fin;

         repetir 2 veces gira-izquierda;  (*derecha*)

         si frente-libre entonces inicio

              avanza;

              si no junto-a-zumbador entonces inicio

                 retrocede

              fin sino inicio

                  sigciudad;

                  autobus(precede(n));

                  regresar;

              fin;

         fin;

         pon(2);   (*desmarca* y coloca a karel para regresar*)

         gira-izquierda;

       fin sino inicio (*cunado el parametro es cero= se agotaron los viajes*)

         pon(2);   (*desmarca* y coloca a karel para regresar*)

       fin;

     fin;

   fin;







define-nueva-instruccion contar(n) como

   inicio

     si junto-a-zumbador entonces

       inicio

         coge-zumbador;

         contar(sucede(n));

       fin sino

         inicio

          deja-zumbador;

          deja-zumbador;

          autobus(n);

         fin;

    fin;



    inicia-ejecucion

        contar(0);

        apagate;

    termina-ejecucion

finalizar-programa
