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

Idade entre irmãos

Boa noite!

Fiz a "diferença de idade entre os irmãos" desta forma para exercitar um pouco. O que vocês acharam? Posso melhorar a parte lógica de alguma forma com o conhecimento obtido ate este ponto?

<meta charset="UTF-8">

<script>
    function diferencaDeIdade(irmaoMaisVelho, irmaoMaisNovo){
        document.write("Nossa diferença de idade é de " + (irmaoMaisVelho - irmaoMaisNovo) + " anos de idade.");
    }
    var irmaoMaisVelho = 18;
    var irmaoMaisNovo = 15;
    diferencaDeIdade(irmaoMaisVelho, irmaoMaisNovo);

</script>
3 respostas

Com o conhecimento até então você fez um código bem otimizado, mas se quiser avançar um pouco pode fazer através de uma abordagem diferente.

Perceba que você está utilizando dois números para representar a idade de cada irmão. Mas imagina se fosse uma família de 4 irmãos?

Criar uma variável para cada irmão não seria a melhor coisa a fazer, ao invés disso você pode criar uma lista de idade, dessa forma:

idadeDosIrmaos = [18, 15];

E agora para acessar cada um desses valores basta indicar a posição dele na lista, assim:

idadeDosIrmaos[0] // Acessa o primeiro valor da lista, que é 18
idadeDosIrmaos[1] // Segundo valor da lista, que é 15

Perceba como listas em JS (e praticamente qualquer linguagem) começam do 0 e não 1. Isso porque seria um desperdício não usar essa posição.

Bom, mas agora para fazer seu programa funcionar, tem que chamar a função de uma forma diferente:

// Para passar os valores, basta passar a lista.
// Ou seja, mesmo se tiverem 100 filhos, só precisa passar um parâmetro
diferencaDeIdade(idadeDosIrmaos);

// E a função fica assim:
function diferencaDeIdade(idadeDosIrmaos) {
    document.write("Nossa diferença de idade é de " +
    (idadeDosIrmaos[0] - idadeDosIrmaos[1]) +
    " anos de idade.");
}

Agora surgiu um problema, e se a ordem das idades não estiver do mais velho para o mais novo? Para solucionar esse problema é preciso primeiro ordenar a lista de idades em ordem decrescente.

Então se estiver afim de avançar na linguagem, tente implementar esta solução

Esta é realmente uma ótima opção, porem no atual ponto de estudos, de acordo com a sequência, não podemos utilizar listas.

solução!

Cassio, muito bom. Legal que você tenha conseguido avançar e perguntar aqui o que poderia melhorar.

Além do que o Lucas disse e você já replicou, uma coisa que eu gostaria de chamar a sua atenção é quanto ao objetivo do seu método. Já adianto que ele não está errado e está claro para o que serve. Contudo, note que ele faz duas coisas:

1) Calcula a diferença de idades; 2) Coloca o resultado dentro de um document.write() para escrever na tela.

Veja bem, eu posso utilizar esse método em diversos locais da minha aplicação que ele sempre vai escrever na tela "Nossa diferença de idade é de x anos de idade.". Se precisar mudar o texto, você vai lá no método e muda, assim replicaria em todos os locais. Entretanto, o que aconteceria se eu precisasse calcular apenas a diferença entre dois números? Seria possível com esse método? A resposta é não. Isso porque ele calcula a diferença e já retorna uma string na tela.

Enfim, uma abordagem diferenciada seria deixar esse método com um nome mais genérico, tipo "diferencaEntreNumeros" que retornasse a diferença apenas e você montasse a frase com o retorno do método. Você poderia me dizer que aí você perderia a facilidade de utilizar a mesma frase em vários locais. Ora, como eu posso separar uma frase pra que seja retornada em vários locais e fique centralizada caso eu queria alterar? Fazendo um outro método que receba um parâmetro (no caso, o resultado do método diferencaEntreNumeros) e retorne uma frase pronta.

Desta forma, você deixaria seu código reutilizável em diversos cenários. Já da forma como está - que não está errada -, caso você precisasse apenas da diferença entre dois números, precisaria criar outro método só pra isso.