iniciar-programa

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

define-nueva-instruccion esquina como inicio
    mientras no-orientado-al-sur hacer
      gira-izquierda;
    mientras frente-libre hacer
       avanza;
    gira-derecha;
    mientras frente-libre hacer
       avanza;
    gira-derecha;
fin;

define-nueva-instruccion diagonal-derecha como inicio
    mientras frente-libre y derecha-libre hacer inicio
        si no-junto-a-zumbador entonces
           deja-zumbador;
        avanza;
        gira-derecha;
        si frente-libre entonces inicio
          avanza;
          gira-izquierda;
        fin
        sino inicio
          sal-de-instruccion;
        fin;
    fin;
    deja-zumbador;
fin;

define-nueva-instruccion diagonal-izquierda como inicio
    mientras frente-libre y izquierda-libre hacer inicio
        si no-junto-a-zumbador entonces
           deja-zumbador;
        avanza;
        gira-izquierda;
        si frente-libre entonces inicio
          avanza;
          gira-derecha;
        fin
        sino inicio
          sal-de-instruccion;
        fin;
    fin;
    deja-zumbador;
fin;

define-nueva-instruccion centro como inicio
    si frente-libre entonces inicio
       avanza;
       si frente-libre entonces
         avanza;
       centro;
       avanza;
    fin
    sino inicio
      gira-izquierda;
      gira-izquierda;
    fin;


fin;




    inicia-ejecucion
    esquina;
    diagonal-derecha;
    esquina;
    mientras frente-libre hacer
      avanza;
    gira-izquierda;
    gira-izquierda;
    diagonal-izquierda;
    esquina;
    centro;
    gira-izquierda;
    deja-zumbador;
    mientras frente-libre hacer inicio
        avanza;
        si no-junto-a-zumbador entonces
           deja-zumbador;
    fin;
    esquina;
    mientras frente-libre hacer
      avanza;
    gira-derecha;
    centro;
    gira-izquierda;
    deja-zumbador;
    mientras frente-libre hacer inicio
        avanza;
        si no-junto-a-zumbador entonces
           deja-zumbador;
    fin;


        apagate;
    termina-ejecucion
finalizar-programa
