iniciar-programa
define-nueva-instruccion orienta-sur como
inicio
    si orientado-al-norte entonces
    inicio
        gira-izquierda;
        gira-izquierda;
        fin;

        si orientado-al-este entonces
        inicio
            gira-izquierda;
            gira-izquierda;
            gira-izquierda;
            fin;

            si orientado-al-oeste entonces
            inicio
                gira-izquierda;
                gira-izquierda;
                fin;

                fin;

    define-nueva-instruccion orienta-este como
    inicio

    si orientado-al-norte entonces
    inicio
        gira-izquierda;
        gira-izquierda;
        gira-izquierda;
        fin;


       si orientado-al-sur entonces
       inicio
           gira-izquierda;
           fin;

           si orientado-al-oeste entonces
           inicio
               gira-izquierda;
               gira-izquierda;
               fin;

               fin;

               define-nueva-instruccion orienta-oeste como
               inicio
                   si orientado-al-norte entonces
                   inicio
                        gira-izquierda;
                        fin;

                        si orientado-al-sur entonces
                        inicio
                            gira-izquierda;
                            gira-izquierda;
                            gira-izquierda;
                            fin;


                             si orientado-al-este entonces
                             inicio
                             gira-izquierda;
                             gira-izquierda;
                             fin;
                             fin;

    inicia-ejecucion

     orienta-sur;

  mientras frente-libre hacer
  inicio
      avanza;
      fin;

      si frente-bloqueado entonces
      inicio
          gira-izquierda;
          gira-izquierda;
          gira-izquierda;
          fin;

          mientras frente-libre hacer
          inicio
          avanza;
          fin;

       gira-izquierda;
       gira-izquierda;
       gira-izquierda;

  si no-junto-a-zumbador entonces
  inicio
  deja-zumbador;
  fin;
  orienta-este;

  mientras frente-libre hacer
  inicio
   si frente-libre entonces inicio
  avanza;

  gira-izquierda;
  avanza;
  si no-junto-a-zumbador entonces inicio
  deja-zumbador;
fin;
  orienta-este;
           fin;
           fin;

  orienta-sur;

  mientras frente-libre hacer
  inicio
      avanza;
      fin;

       si no-junto-a-zumbador entonces
       inicio
      deja-zumbador;
      fin;


    orienta-oeste;

 mientras frente-libre hacer
  inicio
   si frente-libre entonces inicio
  avanza;

  gira-izquierda;
  gira-izquierda;
  gira-izquierda;
  avanza;
  si no-junto-a-zumbador entonces inicio

  deja-zumbador;
  fin;
  orienta-oeste;
           fin;
           fin;


        apagate;
    termina-ejecucion
finalizar-programa
