Eduzz, resolvendo desafios básicos em Javascript
- #Informática Básica
- #Lógica de Programação
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):
10 - 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, uma expressão matemática e dois comandos de saída.
- Leia o número do colaborador (valor1, inteiro)
- Leia o número de horas trabalhadas (valor2, inteiro)
- Leia o valor que ele recebe por hora trabalhada (valor3, decimal)
- Calcule o valor do salário do trabalhador (salary, decimal)
- Escreva uma mensagem informando o número do trabalhador
- Escreva uma mensagem informando o salário do trabalhador
11 - Análise da lógica do problema
Como o código já está quase pronto, a única coisa que falta para concluir o código é a expressão matemática para o cálculo do salário, dados o número de horas trabalhadas e o valor pago por hora trabalhada.
Esse cálculo pode ser determinado por regra de 3 simples:
- O trabalhador númro “valor1” recebe “valor2” por hora trabalhada
- Então ele receberá “salary” por “valor3” horas trabalhadas
Ou seja:
- Ele recebe valor2 dólares -----> 1 hora trabalhada
- E receberá salary dólares -----> valor3 dólares / horas trabalhadas
Logo: salary = valor2 x valor3 dólares
E essa é a expressão que calcula o salário do trabalhador. Agora, use seus conhecimentos de Javascript aprendidos nas aulas e codifique esta expressão.
As mensagens de saída devem informar os valores pedidos seguindo o modelo dos exemplos dados.
Atenção! A sua mensagem de saída deve ser exatamente igual à mensagem esperada pelo problema, ou seja, usar NUMBER e SALARY (ao invés de número e salário), ambas em maiúsculas, US$ (ao invés de R$), com os espaços em branco exigidos no enunciado.
É importante checar os resultados dos cálculos realizados nos exemplos e verificar se sua saída bate com a formatação para as saídas esperadas.
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!!
12 - Finalizando...
Eu publiquei um novo artigo listando todos os artigos que já escrevi para a DIO uma espécie de índice (ou sumário), pois vejo que os artigos antigos acabam ficando inacessíveis após algum tempo. Este novo artigo será referenciado em todos os artigos que eu escrever daqui para a frente e será atualizado a cada artigo novo que eu escrever.
Segue o link abaixo:
Iniciantes 5 – Meus artigos na DIO
Bem, por hoje é só! Obrigado por ter lido até aqui.
OBS: Se você gostou deste artigo, veja o artigo anterior que eu escrevi na DIO:
Desafios de Código, o Guia definitivo
E o meu artigo seguinte a este:
O dia em que em eu encontrei o Android em pessoa