1
resposta

Consolidando o conhecimento: programa de Stefany corrigido

Olá, segue o código do programa de Stefany corrigido:

// Quando passamos uma variável como argumento de uma função, esta é passada por referência e
// quando é executada, altera o valor original da variável que foi passada como argumento.
// Para que isso não aconteça, devemos criar uma nova variável objeto dentro da função
// e está terá as mesmas propriedades da variável original, que foi passada por referência,
// alterando, se preciso for, as propriedades da nova variável.


function calculaProximaIdade(idade) {
    idade += 1;
    console.log(idade+"\n");
}

function calculaProximasIdades(idades) {    //altera o valor da variável passada como argumento
    for (let i = 0; i < idades.length; i += 1) {
        idades[i] += 1;
    }
    console.log(idades+"\n");
}

function calculaProximasIdades1(idades) {   //NÃO altera o valor da variável passada como argumento
    let lista = [];
    for (let i = 0; i < idades.length; i += 1) {
        lista[i] = idades[i] + 1;
    }
    console.log(lista+"\n");
}

function calculaIdadesDaqui5Anos(idades) {  //altera o valor da variável passada como argumento
    for (let i = 0; i < idades.length; i += 1) {
        idades[i] += 5;
    }
    console.log(idades+"\n");
}

function calculaIdadesDaqui5Anos1(idades) { //NÃO altera o valor da variável passada como argumento
    let lista = []; 
    for (let i = 0; i < idades.length; i += 1) {
        lista[i] = idades[i] + 5;
    }
    console.log(lista+"\n");
}

// passagem por referência

console.log("<------------Passagem por referência: ------------>\n")

let idadeStefany = 21;
calculaProximaIdade(idadeStefany);

let idadesAmigos = [idadeStefany, 20, 23, 18, 7];
calculaProximasIdades(idadesAmigos);
console.log("Aqui a função anterior alterou os valores da lista original \n")
calculaIdadesDaqui5Anos(idadesAmigos);


console.log("<------------Passagem por valor: ------------>\n")
// passagem por valor
idadeStefany = 21;
calculaProximaIdade(idadeStefany);

idadesAmigos = [idadeStefany, 20, 23, 18, 7];
calculaProximasIdades1(idadesAmigos);

calculaIdadesDaqui5Anos1(idadesAmigos);
1 resposta

Oi, tudo bem?

Meus parabéns por ter ido além e desenvolvido o código de resolução proposto! Dessa maneira você compartilha seu aprendizado e até pode apoiar o aprendizado de outros alunos da plataforma.

Gostei muito do cuidado que você teve em criar as novas funções e comparar as saídas novas com as anteriores, esse tipo de comparação ajuda a enxergarmos melhor aquilo que a pessoa instrutora mostrou na aula. Também achei que você conseguiu encontrar uma boa saída para o problema, muito bem!

Vou deixar aqui o link de um outro tópico em que um aluno resolveu esse mesmo problema de uma forma diferente caso você queira dar uma olhada, pois na programação tudo pode ser resolvido por vários caminhos e é interessante conhecermos mais de um. Nesse mesmo link também há algumas sugestões bem legais de materiais extras e cursos de lógica de programação que podem te ajudar a desenvolver ainda mais esses conhecimentos:

Meus parabéns por sua dedicação!

Se houver alguma dúvida, estou por aqui!

Bons estudos!