iniciar-programa

    define-nueva-instruccion gira(n) como inicio
      repetir n veces
        gira-izquierda;
    fin;

    define-nueva-instruccion avanzar como inicio
      avanza;
      gira(3);
      avanza;
      gira(1);
    fin;

    define-nueva-instruccion posicionate como inicio
      mientras no-orientado-al-norte hacer
        gira(1);
    fin;

    define-nueva-instruccion cuadro(n) como inicio
      gira(2);
      si frente-libre y izquierda-libre entonces inicio
        repetir 2 veces inicio
          avanza;
          gira-izquierda;
        fin;
        repetir 4 veces inicio
          coge-zumbador;
          mientras no-junto-a-zumbador hacer inicio
            repetir n veces
              deja-zumbador;
            avanza;
          fin;
          gira-izquierda;
        fin;
        cuadro(sucede(n));
      fin;
    fin;

    define-nueva-instruccion diagonal como inicio
      mientras frente-libre y derecha-libre hacer inicio
        avanzar;
        deja-zumbador;
      fin;
    fin;

    define-nueva-instruccion centro(n) como inicio
      si no-junto-a-zumbador y frente-libre entonces inicio
        deja-zumbador;
        avanzar;
        centro(sucede(n));
      fin sino inicio
        si frente-libre o junto-a-zumbador entonces inicio
          diagonal;
          gira-izquierda;
          mientras frente-libre hacer
            avanza;
          gira-izquierda;
          repetir n veces
            avanza;
          gira-izquierda;
          mientras no-junto-a-zumbador hacer
            avanza;
          si derecha-libre entonces
            cuadro(2);
        fin sino inicio
          gira(2);
          mientras no-junto-a-zumbador hacer
            avanza;
          coge-zumbador;
          gira(2);
          mientras frente-libre hacer
            avanza;
          gira(2);
          mientras frente-libre y derecha-libre hacer inicio
            avanzar;
            coge-zumbador;
          fin;
          gira(2);
          avanza;
          centro(0);
        fin;
      fin;
    fin;

    define-nueva-instruccion bdiagonal como inicio
      deja-zumbador;
      diagonal;
      gira(2);
      mientras frente-libre hacer
        avanza;
      gira(3);
      centro(0);
    fin;


    inicia-ejecucion
        posicionate;
        bdiagonal;
        apagate;
    termina-ejecucion
finalizar-programa
