image

Access unlimited bootcamps and 650+ courses

50
%OFF
Article image
Rodrigo Barros
Rodrigo Barros06/04/2025 17:02
Share
Microsoft Certification Challenge #3 DP-100Recommended for youMicrosoft Certification Challenge #3 DP-100

Passos para Resolver Desafios com //TODO

    1. Compreenda o que é necessário

    Antes de começar a codificar, leia o comentário //TODO cuidadosamente. Muitas vezes, o comentário traz uma descrição clara do que é esperado de você, como uma função que precisa ser implementada ou uma lógica específica que deve ser aplicada.

    Exemplo:

    // TODO: Implemente a lógica para verificar se o saque é permitido considerando o saldo e o limite:
    

    Aqui, a instrução é clara: você precisa verificar se o saque é permitido com base no saldo e no limite.

    2. Identifique o que já está implementado

    Na maioria dos casos, o código já está parcialmente pronto. Isso significa que você não precisa se preocupar em criar a estrutura básica, mas apenas preencher os detalhes. Então, antes de adicionar qualquer código, veja o que já foi feito.

    3. Entenda o contexto antes de implementar

    Verifique as variáveis, as classes e as funções já existentes. Muitas vezes, o que você precisa fazer está diretamente relacionado a outras partes do código.

    Por exemplo, se a classe Conta já tem um atributo saldo, você sabe que a lógica de verificação do saldo provavelmente envolverá esse atributo. A chave é entender as entradas e saídas esperadas.

    4. Preencha o //TODO com a lógica correta

    Agora é hora de preencher o código no lugar do //TODO com a lógica que é solicitada. Certifique-se de seguir a descrição do comentário e use o que já foi implementado no código.

    Exemplo:

    Se o desafio pede para implementar a lógica de um saque em uma conta bancária com limite, o código poderia ficar assim:

    public void sacar(double valor) {
      // TODO: Implemente a lógica para verificar se o saque é permitido considerando o saldo e o limite:
      if (saldo - valor >= -limite) { 
          saldo -= valor; 
          System.out.printf("Saque realizado: %.2f%n", valor);
      } else {
          System.out.println("Saque invalido: Excede limite");
      }
    }
    

    5. Teste o código

    Depois de preencher os //TODO, execute o código e verifique se está funcionando corretamente. Teste com diferentes entradas para garantir que a lógica implementada está funcionando como esperado.

    6. Refatore, se necessário

    Após passar pelos testes iniciais, observe se há alguma parte do código que pode ser melhorada ou simplificada. Talvez você possa otimizar ou melhorar a legibilidade da sua implementação.

    Dicas Úteis:

    • Mantenha a clareza: A lógica que você implementa deve ser clara e simples. Evite complicar desnecessariamente.
    • Siga as orientações do enunciado: Como o código geralmente já está parcialmente pronto, siga o que foi indicado nos comentários para preencher as partes faltantes corretamente.
    • Evite modificar outras partes do código: Concentre-se apenas nos lugares onde há o //TODO. Modificar o que já foi feito pode causar erros ou tornar o código mais difícil de manter.

    Exemplo Completo:

    Desafio: Implementar um saque em uma conta bancária

    Imagine que o enunciado do desafio seja criar uma classe ContaBancária, onde você precisa implementar a lógica para fazer um saque, levando em consideração o saldo e o limite de crédito.

    abstract class Conta {
      protected double saldo; 
    
      public Conta(double saldo) {
          this.saldo = saldo;
      }
    
      public abstract void sacar(double valor);
    
      public void exibirSaldo() {
          System.out.printf("Saldo Atual: %.2f%n", saldo);
      }
    }
    
    class ContaCorrente extends Conta {
      private double limite;
    
      public ContaCorrente(double saldo, double limite) {
          super(saldo);
          this.limite = limite;
      }
    
      @Override
      public void sacar(double valor) {
          // TODO: Implemente a lógica para verificar se o saque é permitido considerando o saldo e o limite:
          if (saldo - valor >= -limite) { 
              saldo -= valor; 
              System.out.printf("Saque realizado: %.2f%n", valor);
          } else {
              System.out.println("Saque invalido: Excede limite");
          }
          exibirSaldo();
      }
    }
    
    class ContaPoupanca extends Conta {
    
      public ContaPoupanca(double saldo) {
          super(saldo);
      }
    
      @Override
      public void sacar(double valor) {
          // TODO: Implemente a lógica para verificar se o saque é permitido considerando apenas o saldo:
          if (saldo >= valor) { 
              saldo -= valor; 
              System.out.printf("Saque realizado: %.2f%n", valor);
          } else {
              System.out.println("Saque invalido: Saldo insuficiente");
          }
          exibirSaldo();
      }
    }
    
    public class Main {
      public static void main(String[] args) {
          Scanner scanner = new Scanner(System.in);
          
          String tipoConta = scanner.next(); // Recebe o tipo de conta (Corrente ou Poupança)
          double saldoInicial = scanner.nextDouble(); // Recebe o saldo inicial
    
          Conta conta;
    
          // TODO: Implemente a lógica para criar uma instância de ContaCorrente ou ContaPoupanca:
          if (tipoConta.equals("Corrente")) {
              double limite = scanner.nextDouble(); // Recebe o limite de cheque especial para Conta Corrente
              conta = new ContaCorrente(saldoInicial, limite);
          } else {
              conta = new ContaPoupanca(saldoInicial);
          }
    
          // Realiza os saques
          while (scanner.hasNextDouble()) {
              double valorSaque = scanner.nextDouble();
              conta.sacar(valorSaque); 
          }
    
          scanner.close();
      }
    }
    

    Conclusão

    Resolver desafios da DIO com //TODO pode parecer intimidador no começo, mas é uma excelente maneira de aprimorar suas habilidades. O processo envolve:

    1. Ler e entender o que precisa ser feito nos //TODO.
    2. Preencher as lacunas com a lógica correta.
    3. Testar o código e garantir que funciona corretamente.
    4. Refatorar e melhorar o código se necessário.

    Lembre-se de que a prática constante e a resolução desses desafios são cruciais para se tornar um desenvolvedor mais eficiente e confiante.

    Share
    Recommended for you
    Microsoft Azure Cloud Native
    XP Inc. - Cloud com Inteligência Artificial
    Microsoft AI for Tech - Azure Databricks
    Comments (2)
    Rodrigo Barros
    Rodrigo Barros - 08/04/2025 18:44

    Fico feliz que tenha gostado da explicação! Eu diria que, para muitos iniciantes, o processo de entender o contexto do código existente antes de implementar a solução é onde surgem mais dúvidas. Em muitos desafios com //TODO, o código já contém uma estrutura que precisa ser aproveitada, mas entender como essas partes se conectam e o que já está implementado pode ser um pouco confuso no início.

    Aqui estão algumas estratégias que poderiam tornar essa parte mais acessível para iniciantes:

    1. Comentando o código existente: Antes de se concentrar no //TODO, é útil que o programador adicione seus próprios comentários explicando o que cada parte do código faz. Isso ajuda a entender rapidamente os fluxos de dados e o comportamento esperado das funções e variáveis.
    2. Quebrar o problema em etapas menores: Quando um código já está parcialmente implementado, pode ser útil dividir o que é solicitado no //TODO em etapas menores. Por exemplo, ao verificar se um saque é permitido, o desenvolvedor poderia primeiro pensar na lógica de verificação do saldo, depois analisar como o limite de crédito se aplica.
    3. Fazer perguntas: Se algo não está claro no código existente, fazer perguntas ao responsável pelo desafio ou pesquisar sobre conceitos específicos pode ajudar. Isso pode incluir como as classes se interagem ou qual a diferença entre as variáveis. Claro, isso depende do ambiente em que você está (se for um desafio de prática, essa parte pode ser mais difícil, mas é sempre bom tentar).
    4. Exercícios de repetição: Praticar desafios similares de maneira repetitiva ajuda a internalizar o processo de leitura e compreensão do código existente. Quanto mais você interage com diferentes estruturas de código, mais fácil fica entender o que precisa ser feito com os //TODO.
    DIO Community
    DIO Community - 07/04/2025 14:41

    Rodrigo, gostei muito da explicação sobre como resolver desafios com //TODO! O passo a passo está claro e fácil de seguir, o que ajuda a manter o foco no processo de implementação. A maneira como você destaca a importância de entender o que já está implementado e a lógica por trás dos //TODO facilita muito o trabalho de preencher as lacunas com a solução correta.

    Além disso, o exemplo completo de como implementar a lógica de saque em uma conta bancária, tanto para a Conta Corrente quanto para a Conta Poupança, é bem ilustrativo e mostra como aplicar a lógica de forma prática.

    Qual parte do processo você acha que geralmente gera mais dúvidas para os iniciantes ao resolver um //TODO e como podemos tornar essa parte mais acessível?

    Recommended for youMicrosoft Certification Challenge #3 DP-100