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

Lógica de programação I - Funções

Oi pessoal. Segue meu código que fiz durante as aulas de funções.

Estou curtindo bastante o curso. Tive um pouco de dificuldade para entender o uso das funções, mas depois de algumas horas saiu kkk..

<meta charset = "UTF-8">

<script>

function pulaLinha(){
    document.write("<br> <br>");
}

function mostraIdade(idade){
    document.write("A idade da " + nome + " é " + idade + " anos.");
    pulaLinha();
}


function mostraTitulo(titulo){
    document.write("<h3>" + titulo +"</h3>");
}

function mostraDiferenca(idades){
    document.write("A diferença entre as idades é de " + idades + " anos.");
    pulaLinha();
}

var fraseTitulo = "Qual a idade dos membros da minha família?";

mostraTitulo(fraseTitulo);

var anoAtual = 2021;
var nome = "pessoa";

nome = "Yara";
var nascimentoYara = 1945;
var idadeYara = anoAtual - nascimentoYara;
mostraIdade(idadeYara);

nome = "Sumaia";
var nascimentoSumaia = 1970;
var idadeSumaia = anoAtual - nascimentoSumaia;
mostraIdade(idadeSumaia);

nome = "Bruno";
var nascimentoBruno = 1997;
var idadeBruno = anoAtual - nascimentoBruno;
mostraIdade(idadeBruno);

nome = "Tita";
var nascimentoTita = 1999;
var idadeTita = anoAtual - nascimentoTita;
mostraIdade(idadeTita);

fraseTitulo = "Qual a diferença de idade entre o mais velho e o mais novo da sua família?";
var diferencaIdade = idadeYara - idadeTita;

mostraTitulo(fraseTitulo);
mostraDiferenca(diferencaIdade);

</script>
5 respostas

Olá, Bruno, tudo bem?

Estamos muito felizes de ver seu progresso e de que está gostando do curso!! Obrigado por compartilhar seu código com a gente! :)

Parabéns por ter ido além das aulas e feito mais funcionalidades no programa!

Aliás, você pode melhorar seu programa ainda mais. Note que houve uma certa repetição de código ao calcular a idade dos membros da sua família! Então, você também poderia fazer uma função para isso, algo como:

function calculaIdade(anoAtual, anoDeNascimento) {
    // Código da função...
}

Deixo como exercício você escrever o código da função e aplicar no seu programa!

Qualquer dúvida estaremos aqui à disposição. Continue assim e bons estudos!

Oi Antônio. Muito obrigado pelo incentivo e motivação, e também pelo desafio

Cara.... quebrei a cabeça para conseguir resolver. Estou com uma certa dificuldade em entender como lidar com as funções, digo, as vezes eu preciso testar o que funciona e o que não funciona. Tentei chamar função dentro de função, mas acabava imprimindo o "código" inteiro.

Enfim... segue o resultado, e o que você puder me aconselhar eu super agradeço:

<meta charset = "UTF-8">

<script>

var fraseTitulo = "Qual a idade dos membros da minha família?";
var anoAtual = 2021;
var puxaIdade;
var diferencaIdade;

function mostraTitulo(titulo){
    document.write("<h3>" + titulo +"</h3>");
}

function pulaLinha(){
    document.write("<br> <br>");
}

function calculaIdade(anoDeNascimento){
    puxaIdade = anoAtual - anoDeNascimento;
}

function mostraIdade(nome, idade){
    document.write("A idade da " + nome + " é " + idade + " anos.");
    pulaLinha();
}

function mostraDiferenca(maiorIdade, menorIdade){
    diferencaIdade = maiorIdade - menorIdade;
    document.write("A diferença entre as idades é de " + diferencaIdade + " anos.")
}

mostraTitulo(fraseTitulo);

calculaIdade(1945);
mostraIdade("Yara", puxaIdade);
var idadeYara = puxaIdade;

calculaIdade(1970);
mostraIdade("Sumaia", puxaIdade);
var idadeSumaia = puxaIdade;

calculaIdade(1997);
mostraIdade("Bruno", puxaIdade);
var idadeBruno = puxaIdade;

calculaIdade(1999);
mostraIdade("Tita", puxaIdade);
var idadeTita = puxaIdade;

fraseTitulo = "Qual a diferença de idade entre o mais velho e o mais novo da sua família?";

mostraTitulo(fraseTitulo);
mostraDiferenca(idadeYara, idadeTita);

</script>

Nossa Antônio... acho que consegui. Foi só assistir as duas aulas seguintes que deu pra entender melhor.

Para puxar uma função no código eu preciso de uma variável e de um parametro.

Acho que agora o código ficou bem mais limpo e funcional:

<meta charset = "UTF-8">

<script>

var fraseTitulo = "Qual a idade dos membros da minha família?";
var anoAtual = 2021;
var puxaIdade;
var diferencaIdade;

function mostraTitulo(titulo){
    document.write("<h3>" + titulo +"</h3>");
}

function pulaLinha(){
    document.write("<br> <br>");
}

function calculaIdade(anoDeNascimento){
    puxaIdade = anoAtual - anoDeNascimento;
    return puxaIdade;
}

function mostraNomeIdade(nome, idade){
    document.write("A idade da " + nome + " é " + idade + " anos.");
    pulaLinha();
}

function mostraDiferenca(maiorIdade, menorIdade){
    diferencaIdade = maiorIdade - menorIdade;
    document.write("A diferença entre as idades é de " + diferencaIdade + " anos.")
}

mostraTitulo(fraseTitulo);

idadeYara = calculaIdade(1945);
mostraNomeIdade("Yara", puxaIdade);

idadeSumaia = calculaIdade(1970);
mostraNomeIdade("Sumaia", puxaIdade);

idadeBruno = calculaIdade(1997);
mostraNomeIdade("Bruno", puxaIdade);

idadeTita = calculaIdade(1999);
mostraNomeIdade("Tita", puxaIdade);

fraseTitulo = "Qual a diferença de idade entre o mais velho e o mais novo da sua família?";

mostraTitulo(fraseTitulo);
mostraDiferenca(idadeYara, idadeTita);

</script>
solução!

Olá novamente, Bruno!

Muito bacana que você chegou a uma solução! Mas acabei de perceber que passei o desafio quando você ainda não estudou retorno de funções! Você verá em uma das aulas de calcular IMC, mas já posso te adiantar um pouco ;)

Ainda assim, você foi capaz de chegar numa solução bem interessante. Sua lógica foi criar uma variável puxaIdade, cujo valor poderia ser alterado quando você executasse a função calculaIdade, correto?

Porém, com o tempo você perceberá que não é uma prática muito boa de programação quando uma função altera variáveis externas àquela função. Então, o que fazer nesse caso, onde eu digo para a função o ano de nascimento, e quero a idade da pessoa calculada? É para isso que servem os retornos de funções!

Ou seja, nesse caso queremos dizer o ano de nascimento da pessoa e queremos que a função calculaIdade retorne a idade dela! Como fazemos isso? Assim:

function calculaIdade(anoAtual, anoDeNascimento){
    var idade = anoAtual - anoDeNascimento;
    return idade;
}

Além disso, também é uma boa prática que as funções usem apenas as variáveis que foram passadas como parâmetro ou as que foram inicializadas dentro da própria função! Por isso também passei anoAtual como parâmetro, em vez de usar a variável anoAtual que é externa à função.

Bem, mas agora como pegamos o valor que a função retornou? Fazemos assim:

var idadeYara = calculaIdade(anoAtual, 1945);

Olha só que legal! É como se estivéssemos atribuindo a função à variável idadeYara. O que estamos atribuindo à variável, na verdade, é o resultado da função, ou o retorno da função, que é exatamente a idade calculada! (nesse caso, 76)

E agora podemos ter o seguinte:

var idadeYara = calculaIdade(anoAtual, 1945);
mostraIdade("Yara", idadeYara);

Ou seja, não precisamos mais da variável puxaIdade!

Se tiver ficado confuso, não se preocupe, você poderá estudar essa parte do assunto com calma nas próximas aulas. Apenas vi uma boa oportunidade de colocar em prática esse assunto, que ajudou a deixar um pouco mais limpo o programa que você pensou :)

Talvez você tenha tido dificuldade em fazer o programa justamente porque estava fazendo as funções lidarem com variáveis externas a elas. Mas se fizermos elas lidaram apenas com variáveis internas à função, o código fica mais bem organizado e legível.

Espero ter te ajudado! Não tenha pressa em aprender, revise o conteúdo, estude os exemplos e continue se desafiando! Qualquer dúvida a mais que você tiver estaremos aqui para te auxiliar.

Bons estudos!

Sensacional Antônio. Vi as aulas seguintes a essa, vi sua resposta e agora tudo fez sentido kkkk

Obrigado de verdade pela atenção e resposta tão completa.