image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Alessandra Rigonatti
Alessandra Rigonatti30/08/2025 09:38
Share

DOCUMENTANDO APRENDIZADOS (Desafio promoção relâmpago)

    Riachuelo - Primeiros Passos com Java

    Uma aula de 2h, para mim, dura muito mais de duas horas.

    Uma forma que encontrei de não ter de ficar tão refém de AI, de conseguir conectar métodos, atributos, classes, de assimilar a sequência de um código, de entender erros e até conseguir encontra-los sem desespero, foi documentando os códigos.

    Por mais que algumas vezes sinta que estou perdendo tempo, no geral, percebo que , sabendo o que cada peça faz e como se conecta, mais me incentiva a querer estudar novos pontos e me deixa menos frustrada com bugs, além de permitir ter entendimento mais claro do que é dado em aula.

    Meu objetivo, além de aprender, é poder entender este código em qualquer momento, seja depois de ter ficado muito tempo sem estudar ou porque já comecei a esquecer do básico.

    Esta forma é como meu aprendizado funciona, ver, ouvir, escrever, testar (pausando muitas vezes, não só para testar antes, mas para escrever e arrumar ), cada um tem o seu jeito, funcionado para que mudar?

    ------------------------------------------------------------------------------------------------------
    
    package Desafios;
    
    import java.math.BigDecimal;
    import java.util.Scanner;
    
    public class PromocaoRelampago {
    
      public static void main(String[] args) {
          Scanner scanner = new Scanner(System.in);
          String valorCompra = scanner.nextLine();
          System.out.println(calcularDesconto(valorCompra));
          scanner.close();
      }
    
      // método para calcular desconto que recebe como parâmetro String e valor de compra do método anterior
      // este  método possui conversão do string para BigDecimal ("tipo" que corrige falhas do float e double)
    
      public static String calcularDesconto(String valorCompra) {
    
          /*
          Método que analisa valores de entrada e retorna mensagem do respectivo desconto
           */
    
          // variável recebe instância que cria uma nova classe BigDecimal, com parâmetro valorCompra
          // esta classe "representa n°s decimais com precisão arbitráia" - não importa quantidade de casas após
          // a vírgula, manterá a precisão
          BigDecimal valor = new BigDecimal(valorCompra);
          BigDecimal descontoPercentual;
    
          // TODO: Verifique se o valor é menor que 50.00:
                  /*
                                              Explicando linha de comando
    
                          O valor de entrada é uma String, já que se for valor numérico o java irá transformar em
                       Doble, que não possui a mesma precisão que BigDecimal.
                          Para comparar valor desta classe/tipo não se usa operadores de comparação (==, < ..), deve
                        usar o MÉTODO (static) .compareTo(). Este compara dois BigData e retorna um valor int
                        -1 para menor
                        0 para igual
                        1 para maior
                          O motivo de "new BigDecimal" é porque deve instanciar objeto para comparação
                        1° instaciar novo objeto -> new BigDecimal
                        2° converter para bigD -> ("50")
                        3° método .compareTo() - comparar valores BigD -> valor.compareTo(new BigDecimal("50")) == -1
                        Retorno de -1 indica que o valor é menor que 50
                        4° Retorno que será -1,0 ou 1 (conforme necessidade do programa)
                   */
          if(valor.compareTo(new BigDecimal("50")) == -1){
              String msg = "Desconto de 0%, " + valor;
              // Devo utilizar a variável e converter para String porque a assinatura do método é string
              // caso não converta dá Error - missing return statement
              // lembrando que depois que já foi criado uma variável, e quer converter deve 1° chamar-la e depois
              // adicionar o método de conversão
              // já quando vai declarar uma variável 1° fala o tipo e depois o nome que será dado
              return msg;
          }
    
    
          // TODO: Verifique se o valor é entre 50.00 e 100.00 (inclusive):
    
          //observação: no desafio deve entrar apenas mensagem "Desconto de 10%", então tirei cód de cálculo
          else if(valor.compareTo(new BigDecimal("50")) >= 0 && valor.compareTo(new BigDecimal("100"))<=0){
              BigDecimal deconto = new BigDecimal("90");
              descontoPercentual = valor.multiply(deconto);
              String msg = "Desconto de 10%, " + descontoPercentual;
              return msg;
          }
    
    
          // TODO: Caso contrário, o valor é maior que 100.00:
          else {
              BigDecimal deconto = new BigDecimal("80");
              descontoPercentual = valor.multiply(deconto);
              String msg = "Desconto de 20%, " + descontoPercentual;
              return msg;
              }
    
    
          // TODO: Retorne a string formatada com o desconto aplicado, conforme exigido no desafio:
          }
    }
    
    /*
    após método do desconto coloquei
     System.out.println(calcularDesconto(valorCompra));
    Erro - unreachable statement - Linha que nuca será alcançada - quando já há um return e o programa encerra
                                                               - laço infinito
    O motivo do erro é porque o programa é encerrado conforme resultado do próprio laço
    
     */
    
    Share
    Recommended for you
    Ri Happy - Front-end do Zero #2
    Avanade - Back-end com .NET e IA
    Akad - Fullstack Developer
    Comments (1)
    Edmundo Batista
    Edmundo Batista - 30/08/2025 14:33

    Adorei a sua ideia, Alessandra!

    Excelente. Também costumo fazer isso.

    Antes de tudo, preciso desabafar: 

    Eu tinha colocado aqui um monte de ideias legais que me surgiram a partir da sua ideia, do seu artigo. Sendo que do nada a página deu um refresh. Não sei se foi um problema da página ou do navegador (Edge). Não costumo usar o Edge mas abri o seu artigo aqui nele pra manter as minhas páginas de estudo inalteradas lá no Chrome. Então agora não consigo confiar em editar a resposta aqui porque pode dar esse refresh denovo e perder tudo o que digitei. Acho que dá esse refresh automático pelo tempo que fica "sem interação na página". Sendo que estar digitando algo na página quase que ininterruptamente não é de fato uma interação inconstante. Além disso eu não costumo ficar nem 10 segundos parado, sempre vou pensando e digitando ao mesmo tempo. Eu sou hiperativo. Fiquei chateado, frustrado com isso então agora, por segurança, prefiro digitar tudo no bloco de notas e depois colar aqui.

    Parece que aqui no navegador Edge, o trecho de código que você colou no editor mantém minimamente alguma formatação, cores etc, porque quando é no Chrome, fica tudo sem graça, monocromático, confuso kkk

    Ainda não testei abrir no Firefox, Brave, Opera, OperaGX etc. Você já? E já chegou a observar isso? Depois me conta rsrsrs

    Você usa Vscode ou uma IDE de fato?

    Eu gosto de usar o #region / #endregion no VSCODE, porque aí se torna possível dar um "code folding / comment folding" nas partes de documentação "in place" que tanto nos ajudam nos códigos.

    Eu tinha falado sobre extensões que pudessem fazer esse "comment folding", a importância do que você fez, Github, manter duas versões do código, uma comentada para dev e outra para prod no Github e várias outras ideías que agora com a raiva que fiquei me fogem à mente... rsrsrs

    Então em breve vou escrever meu terceiro artigo na DIO sobre isso que você está fazendo, para ajudar, orientar e manter ainda mais a motivação dos colegas, refazendo no meu bloco de notas tudo o que eu havia digitado no comentário do seu artigo. Vou organizar tudo e fazer um artigo sobre.

    Aqui está o meu código C# com um trecho fazendo "doc folding / comment folding" usando o #region / #endregion nativo do Vscode.

    List<string> listaString = new List<string>();
    
    
    listaString.Add("SP");
    listaString.Add("BA");
    listaString.Add("MG");
    listaString.Add("RJ");
    
    
    Console.WriteLine($"Itens na minha lista: {listaString.Count} - Capacidade: {listaString.Capacity}");
    
    
    listaString.Add("SC");
    
    
    Console.WriteLine($"Itens na minha lista: {listaString.Count} - Capacidade: {listaString.Capacity}");
    
    
    listaString.Remove("MG");
    #region Removendo um item da lista
    // Esta remoção foi feita 
    // para podermos entender como a remoção/adição
    // de um item numa lista em C# trata a capacidade da lista 
    // de forma dinâmica, aumentando-a ou diminuindo-a para se adequar corretamente.
    #endregion
    
    
    Console.WriteLine($"Itens na minha lista: {listaString.Count} - Capacidade: {listaString.Capacity}");
    
    
    


    Vou deixar aqui pra você meus artigos da DIO e minhas redes sociais pra a gente desenvolver ainda mais essas ideias de aprendizado / motivação / foco, aos poucos, em tempo. Porque o que vejo mais nos Bootcamps e cursos livres por aí afora não são pessoas que estão desistindo porque se sentem incapazes, mas sim porque precisam de uma ajuda funcional e de direção, e talvez elas mesmas não saibam que na verdade é isso que lhes está acontecendo. Porque quando a gente entende o que está fazendo, nos mantemos motivados e auto recompensados, mantendo a nossa dopamina do conhecimento sempre no topo.

    Minhas redes:

    LinkedIn => https://www.linkedin.com/in/edmundo-josé-3660b76a/

    Github => https://github.com/eddgh

    Discord => https://discord.gg/P6AkjRGt


    Meus artigos na DIO:

     - Desafio - Decida o melhor seguro (como passei nos 4 testes!)

    https://web.dio.me/articles/desafio-decida-o-melhor-seguro-como-passei-nos-4-testes-674ef6cfe76e?back=/articles

    - Essência da Programação - Entendendo o fluxo e mantendo a motivação.

    https://web.dio.me/articles/essencia-da-programacao-entendendo-o-fluxo-e-mantendo-a-motivacao-6d2512531bba?back=/articles