Informática, perguntado por Djessica4935, 1 ano atrás

Escreva um algoritmo que leia a idade de um atleta e escreva na tela em que categoria ele se enquadra, seguindo a tabela abaixo: Faixa Etária Categoria de 5 a 10 anos infantil de 11 a 17 anos juvenil de 18 a 30 anos profissional acima de 30 anos sênior

Soluções para a tarefa

Respondido por bokomoko
0
Faixa Etária........... Categoria
de 5 a 10 anos........ infantil
de 11 a 17 anos...... juvenil
de 18 a 30 anos...... profissional
acima de 30 anos... sênior

Essa é a tabela

Verificando-a, fica certificado que nenhuma faixa sobrepóe a outra, ou seja, não tem como uma pessoa pertencer a mais de uma faixa

Então temos várias maneiras de fazer esse programa. A maneira mais burral seria fazer um ninho de if's assim

if idade >= 5 and idade <= 10 then categoria = "Infantil"
elseif idade >= 11 and idade <= 17 then categoria = "juvenil"
elseif idade >= 18 and idade <= 30 then categoria = "profissional"
elseif idade >= 30 then categoria = "senior"

Totalmente funcional.

Só que tem um problema nessa abordagem. Se houve alguma mudança de faixa, adiçao de alguma categoria, vai ter que mexer no programa e no ninho de if's. Ninhos de if's são ruins e devem ser evitados. As vezes ... nao tem jeito. Podendo evitá-lo, evite-os. No caso, dá para evitar e o programa fica muito mais legal.

Uma forma mais inteligente é guardar as faixas numa tabela onde só precisamos armazenar o valor da idade máxima, que no caso seriam várias idades máximas uma para cada faixa, assim
até 10 anos
até 18 anos
até 30 anos

Aí temos duas situações ... E como fica a faixa de quem tem mais de 30 ? 
E como fica a faixa de quem tem MENOS de 5 anos ? 
No enunciado ele deixa implícito que tem uma faixa de menos de 5 anos que nao é aceita 
E a faixa de mais de 30 anos pode ser colocada como uma faixa com limite superior de 150 anos .. (ninguem vive tanto) 
Então podemos criar as faixas assim

menor de 5 anos -> fora da categoria
menor de 10 anos -> infantil
menor de 18 anos -> juvenil
menor de 30 anos -> profissional
menor de 150 anos -> senior

Ou seja, adicionamos mais uma faixa no início e ajustamos a última faixa

Observe, todas as faixas agora sao facilmente definidas com um IF só, idade menor que a idade máxima
podemos colocar num vetor assim
limites = [ 5, 10, 18, 30, 150 ]
faixas = [ 'inválida', 'infantil', 'juvenil', 'profissional', 'senior'] 

No primeiro vetor temos os limites
no segundo vetor temos o nome da faixa

aí podemos obter a idade do atleta e definir em que faixa ele se enquadra
idade = int(input('Informe a idade do atleta'))
faixa = 0
while limites[faixa] < idade :
     faixa += 1

print(faixas[faixa])

vamos testar  ? 
https://repl.it/@bokomoko/atletas-e-faixas-etarias

Perguntas interessantes