1
resposta

Dúvida percorrer o ARRAY-Gráfico de Barras Exercícios

Olá pessoal, eu fiquei com bastante dúvida nesse exercicio do gráfico de barras !!! a parte que mais fiquei na dúvida foi a function desenhaBarra:

function desenhaBarra(x, y, serie, cores, texto) {

    desenhaTexto(x, y - 10, texto);

    var somaAltura = 0;
    for (var i = 0; i < serie.length; i++) {
      var altura = serie[i];
      desenhaRetangulo(x, y + somaAltura, 50, altura, cores[i]);
      somaAltura = somaAltura + altura;
    }
  }

Tipo eu queria que alguem me explicasse melhor destrinchando o porquê que tem que fazer assim , acho que minha duvida principal ta em como percorrer o array, afinal é dessa forma que o for vai, ele percorre o array e fiquei na duvida de como o valor do array serie2015/serie2016 é puxado esse valor para a altura dos quadradinhos.... se alguem poder me indicar algum lugar para eu treinar ou até mesmo para estudar mais agradeço, segue o código inteiro:

<canvas width="600" height="400"></canvas>

<script>

  function desenhaRetangulo(x, y, largura, altura, cor) {
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

    pincel.fillStyle = cor;
    pincel.fillRect(x, y, largura, altura);
    pincel.strokeStyle = 'black';
    pincel.strokeRect(x, y, largura, altura);
  }

  function desenhaTexto(x, y, texto) {
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

    pincel.font = '15px Georgia';
    pincel.fillStyle = 'black';
    pincel.fillText(texto, x, y);
  }

  function desenhaBarra(x, y, serie, cores, texto) {

    desenhaTexto(x, y - 10, texto);

    var somaAltura = 0;
    for (var i = 0; i < serie.length; i++) {
      var altura = serie[i];
      desenhaRetangulo(x, y + somaAltura, 50, altura, cores[i]);
      somaAltura = somaAltura + altura;
    }
  }

  var cores = ['blue', 'green', 'yellow', 'red'];
  var serie2015 = [50, 25, 20, 5];
  var serie2016 = [65, 20, 13, 2];

  desenhaBarra(50, 50, serie2015, cores, '2015');
  desenhaBarra(150, 50, serie2016, cores, '2016');

</script>
1 resposta

Bom dia meu xará, tudo certo?

Eu vou dar outra perspectiva aqui sobre funções e como funciona a passagem de parâmetros:

A função desenhaBarra recebe os seguintes parâmetros:

  • x: Uma coordenada no eixo X para posicionar o gráfico;
  • y: Uma coordenada no eixo Y para posicionar o gráfico;
  • serie: Um vetor que contenha os valores que serão mostrados no gráfico;
  • cores: Um vetor com as cores que serão desenhadas as barras;
  • texto: O título do gráfico.

Ou seja, ao definir esses parâmetros na chamada da função, estamos dizendo: "Essa função vai receber essas informações aqui e vai executar essas linhas de código com elas". Sendo assim, lá nas últimas linhas quando chamamos

desenhaBarra(50, 50, serie2015, cores, '2015');

A função desenhaBarra está sendo chamada e o seguinte acontece:

  • O valor 50 está sendo copiado e interpretado como se fosse x dentro da função
  • O valor 50 está sendo copiado e interpretado como se fosse y dentro da função
  • Os valores da variável serie2015 estão sendo copiados e interpretados como se fosse o vetor serie dentro da função
  • Os valores da variável cores estão sendo copiados e interpretados como se fosse o vetor cores dentro da função
  • O valor '2015' está sendo copiado e interpretado como se fosse texto dentro da função

E, em sequência, todos aqueles passos que usavam x ou y, por exemplo, vão ser executados como se tivessem os valores 50 dentro deles. Sendo assim, a variável serie dentro da função "assume" os valores de onde foi chamada, podendo ser os valores de serie2015, serie2016 ou qualquer outra variável que você tenha inicializado antes de fazer a chamada da função.

Eu dei uma perspectiva um pouco diferente da aula e espero que ela tenha contribuído com algum ponto onde você tinha alguma dúvida. Caso queira, tem esse conteúdo sobre funções do Marco Bruno que pode te auxiliar e dar ainda outra perspectiva.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software