Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dificuldade

Prezados amigos,

No início do curso eu estava indo muito bem, mas agora estou com muita dificuldade em aprender. Boiei na parte de funções (percorreArray, (trAtual) etc.) mesmo vendo umas 3x cada aula sobre esse assunto.

O professor não tem uma didática muito boa.

Poderiam me indicar algum livro didático para que eu possa acompanhar junto ao curso?

4 respostas

Oi Igor, tudo bem? Pode me explicar melhor a dificuldade que você teve? Quais são duas dúvidas?

Esse curso que você está fazendo é um dos básicos da Alura que focam um pouco mais na lógica de programação, e é normal ter dúvidas no começo, as coisas vão ficando mais claras com o tempo. Um bom livro que posso te indicar é o de Lógica de Programação da Casa do Código (https://www.casadocodigo.com.br/pages/sumario-programacao)

Que é bem próximo do curso. Outro recurso que você pode utilizar são as explicações em texto disponíveis na própria aula. Contudo, exponha sua dúvidas aqui que a gente te ajuda. Tudo bem?

Fico no aguardo!

Por exemplo, nesse código aqui da aula:

var linhaPacientes = document.getElementsByClassName("paciente");

for(var posicaoAtual = 0; posicaoAtual <= linhaPacientes.length - 1;
posicaoAtual++){

    var pacienteTr = linhaPacientes[posicaoAtual];

    var tdNome = pacienteTr.getElementsByClassName("info-nome")[0];
    var tdPeso = pacienteTr.getElementsByClassName("info-peso")[0];
    var tdAltura = pacienteTr.getElementsByClassName("info-altura")[0];

    var paciente = {nome: tdNome.textContent, 
                    peso: tdPeso.textContent, 
                    altura: tdAltura.textContent,
                    pegaImc function(){
                        if(this.altura != 0){

                            var imc = this.peso / (this.altura * this.altura);
                            return imc;
                        }
                            else {
                                console.log("não posso executar uma divisão por 0!");
                        }
                    }
                    };
        var imc = pacienteAtual.pegaImc();

        var tdImc = pacienteTr.getElementsByClassName("info-imc")[0];    
        tdImc.textContent = imc;

        console.log(imc);

}

Não ficou claro para mim alguns pontos(aso olhos de voces acredito que seja uma poeira rs):

  1. o porquê do -1 após o .lenght
  2. quando eu devo colocar uma variante dentro dos () do function e quando não colocar nada que é o caso neste exercicio?
  3. no meu não está funcionando, o navegador informa que "pacienteAtual is not defined"

A principio é isso.

Olá Igor, desculpe a demora, mas vamos lá ver seus pontos.

  1. O -1 após o lenght é uma estratégia para que o laço vá até o último item da coleção. Coleções geralmente apresentam seu tamanho com o valor no número de items + 1, pois ela sempre guarda o último lugarzinho para um próximo item que possa ser adicionado. O -1 não precisa necessariamente existir, vou explicar porque: perceba que a condição está <=. Se ela fosse < (simplesmente menor quê) poderiamos remover o -1.

  2. Não entendi o tópico 2, poderia explicar novamente?

  3. Não está funcionando por que os nomes das váriaveis estão diferentes. A forma mais simples de resolver é renomear a variavel pacienteAtual para somente paciente.

Outra observação é que na difinição do objeto paciente, no método pegaImc, vocẽ esqueceu de por os dois pontos, assim como fez no peso e altura. O código corrigido está abaixo.

var paciente = {nome: tdNome.textContent, 
                    peso: tdPeso.textContent, 
                    altura: tdAltura.textContent,
                    pegaImc: function(){
                        if(this.altura != 0){

                            var imc = this.peso / (this.altura * this.altura);
                            return imc;
                        }
                            else {
                                console.log("não posso executar uma divisão por 0!");
                        }
                    }
                    };
        var imc = paciente.pegaImc();
solução!

Acho que entendi seu segundo ponto. Você quer saber quando usar:

function(algo){

}

e

function(){

}

É isso? Caso sim, já respondo. A primeira é quando você quer ter um valor de fora da função para executar alguma coisa. A segunda é quando não precisamos de nenhum valor externo.

Exemplos: Para imprimir o nome de uma pessoa, precisamos do nome dela, correto? Então podemos fazer o seguinte:

function imprimeNome(nomeParaImprimir){
    console.log(nomeParaImprimir);
}

A segunda, quando não precisamos de outros valores externos. O exemplo seria imprimir uma mensagem qualquer que não depende de terceiros.

function(){
    console.log('bom dia programador!');
}

Espero ter ajudado, bons estudos =)