1
resposta

Não consigo entender o for nesse exercício!

Alguém poderia me explicar qual a função da aplicação do "for" na function desenhaBarra? não consigo entender a lógica desse var somaAltura = 0!

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;
1 resposta

Angelo,

a função desenhaRetangulo desenha retângulos baseados nos argumentos x, y (coordenadas do canto esquerdo superior do retângulo), largura, altura (altura, de cima para baixo) do retângulo, e cor que deve ter o retângulo. Isto para um retângulo.

A função desenhaBarra existe para enviar à função desenhaRetangulo informação para desenhar 4 retângulos empilhados. O 'for'existe para mandar os 4 conjuntos de informações para cada retângulo (através dos índices de 0 a 3), em especial a coordenada y, a altura e a cor de cada um deles.

As cores são obtidas da string cores.

A variável altura é obtida dos valores da string series2015/2016 e define a altura de cada retângulo.

A variável somaAltura é acumulativa, serve pra informar para desenhaRetangulo qual a coordenada y (início) de cada retângulo. É a soma da coordenada y do primeiro retângulo, com a altura do retângulo desenhado anteriormente.

  • o primeiro retângulo deve ser desenhado com início na posição y=50+0 (50); zero porque não há retângulo anteriormente desenhado;
  • o segundo, com início na posição y = 50 + 50 (100);
  • o terceiro, com início na posição y = 100 + 25 (125);
  • o quarto, com início na posição y = 125 + 20 (145);
  • se houvesse um quinto retângulo, teria início na posição y = 145 + 5 (150).