Olá, devs!
Este artigo trata da análise da lógica de dois desafios do curso “Resolvendo Desafios Básicos em JavaScript”, do bootcamp “Eduzz Fullstack developer #2”, no qual estou matriculado.
Alguns problemas dos desafios de código são muito difíceis para que o dev iniciante chegue à sua lógica de resolução com facilidade, mas outros são bem fáceis e sua resolução pode parecer óbvia para os devs experientes, não para os iniciantes.
O objetivo é ajudar os devs iniciantes a entenderem como resolver um problema com programação, chegando à lógica computacional necessária para transformar um enunciado em um algoritmo, que deve ser codificado para implementar a sua resolução.
Neste artigo, eu vou analisar a lógica da resolução de dois desafios de código, partindo do enunciado e dos exemplos dados até chegar a um algoritmo para a solução.
Eu só vou chegar até o algoritmo básico, sem sugerir ou analisar um possível código-fonte, pois isso é tarefa do aluno. Ele é quem deve buscar, nos seus conhecimentos aprendidos nas aulas da plataforma, a sintaxe e estruturas da linguagem de programação pedida, a codificação adequada para resolver o problema.
1 - Introdução
No artigo anterior (Desafios de Código, o Guia Definitivo), eu analisei um desafio de código do curso “Resolvendo Desafios Básicos em JavaScript”, do bootcamp “Eduzz Fullstack developer #2”, no qual estou matriculado.
Nele, eu parti do enunciado, exemplos e código-fonte inicial, oferecido pela plataforma, e fiz a análise do problema, expliquei a lógica da solução, escrevi um algoritmo, dei sugestões de código-fonte, analisei a execução deste código nos testes abertos e fechados, fiz as correções necessárias no código até concluir o desafio, com a aprovação do código final em todos os testes abertos e fechados. Finalmente, dei várias dicas sobre entrada e saída de dados para os desafios de código e como obter ajuda na plataforma e com os devs da DIO.
O desafio analisado no artigo anterior foi: Múltiplos (1/3).
Para este novo artigo, eu escolhi analisar os desafios de código 2 e 3 do mesmo curso do artigo anterior, “Resolvendo Desafios Básicos em JavaScript”, do bootcamp “Eduzz Fullstack developer #2”.
E vou analisar agora os dois desafios restantes daquele curso.
2 – Análise do desafio de código Teste de Seleção 1 (2/3)
3 – Enunciado do desafio “Teste de Seleção 1”
Basicamente, o problema espera a entrada de 4 valores inteiros (A, B, C e D) e lista várias condições de aceitação para estes valores. Se todos os valores passarem nos testes, serão aceitos, do contrário, não serão aceitos. O programa deve escrever uma mensagem no final indicando um destes dois resultados.
As condições de aceitação para os números lidos são: o valor de B deve ser maior do que o de C, e D deve ser maior do que A, e a soma de C com D deve ser maior que a soma de A e B, e tanto C quanto D devem ser positivos, e A deve ser par.
4 - Exemplos
Na parte dos exemplos, são mostrados exemplos de entradas para dois casos (respectivamente, A, B, C e D do enunciado):
- 5, 6, 7 e 8 Valores nao aceitos
- 2, 3, 2 e 6 Valores nao aceitos
5 - O Algoritmo
O algoritmo para a solução é muito óbvio e já está dado pelo código já escrito, oferecido pela plataforma. Ele é composto apenas da entrada de dados, um teste (comando IF) e dois comandos de saída.
- Leia A
- Leia B
- Leia C
- Leia D
- Se a condição de aceitação for verdadeira
- Escreva uma mensagem de aceitação dos valores lidos
- Senão
- Escreva uma mensagem de não aceitação
6 - Análise da lógica do problema
Como o código já está quase pronto, as únicas coisas que faltam para concluir o código são a condição do IF e as mensagens de saída.
A condição do comando IF é uma condição múltipla, formada por várias condições individuais, dadas no enunciado. Os valores de entrada só serão aceitos se TODAS estas condições forem satisfeitas ao mesmo tempo:
SE
- B > C e;
- D > A e;
- (C+D) > (A+B) e;
- C>0 e;
- D>0 e;
- A é par.
ENTÃO os valores são aceitos
SENÃO os valores não são aceitos
Analisando os exemplos de entrada e saída esperada dados, temos:
E as mensagens de saída devem refletir o resultado do comando IF. Atenção! A sua mensagem de saída deve ser exatamente igual à mensagem esperada pelo problema, ou seja, a palavra nao sem o til e valores com inicial maiúscula.
Agora, use seus conhecimentos de Javascript aprendidos nas aulas e codifique o que falta, com base nesta análise.
Depois, execute seu código para os testes abertos, usando o botão “Executar Testes”:
- Se ele não for aprovado em todos os testes abertos, ele tem algum erro. Corrija seu código e repita o processo com os testes abertos;
- Se for aprovado em todos os testes abertos, é preciso testá-lo para os testes fechados.
Agora, execute seu código para os testes fechados, usando o botão “Entregar Desafio”:
- Se seu código não for aprovado em todos os testes fechados, ele tem algum erro. Corrija seu código e repita o processo com os testes abertos novamente.
- Se for aprovado em todos os testes fechados, está finalizado seu desafio e seu código foi aprovado!!
7 – Análise do desafio de código Folha de Pagamento (3/3)
8 – Enunciado do desafio de código “Folha de Pagamento”
Basicamente, o enunciado do problema pede que sejam lidos os seguintes dados: o número de um colaborador de uma empresa, o número de horas trabalhadas e o valor que ele recebe por hora trabalhada. Com base nestes dados, pede para calcular o salário dele e apresentar o número do trabalhador e o salário dele, com duas casas decimais.
Os dois primeiros dados de entrada são inteiros e o último é um número decimal, com duas casas decimais.
A saída deve ser composta de duas mensagens, uma para o número do trabalhador e, na linha seguinte, o seu salário, conforme os exemplos dados na próxima seção.
OBS: há um espaço em branco entes e depois de cada símbolo de igualdade, bem como após o símbolo $.
9 - Exemplos
Na parte dos exemplos, são mostrados exemplos de entradas para dois casos (respectivamente, variáveis valor1, valor2 e valor3 do código):