├── JavaScript ├── 001.js ├── 004.js ├── 002.js ├── 003.js └── 005.js ├── Java ├── Desafio05.java ├── Desafio01.java ├── Desafio02.java ├── Desafio03.java └── Desafio04.java └── README.md /JavaScript/001.js: -------------------------------------------------------------------------------- 1 | //Desafios JavaScript na DIO têm funções "gets" e "print" acessíveis globalmente: 2 | //- "gets" : lê UMA linha com dado(s) de entrada (inputs) do usuário; 3 | //- "print": imprime um texto de saída (output), pulando linha. 4 | 5 | const saldoAtual = parseFloat(gets()); 6 | const valorDeposito = parseFloat(gets()); 7 | const valorRetirada = parseFloat(gets()); 8 | 9 | //TODO: Calcular o saldo atualizado de acordo com a descrição deste desafio. 10 | 11 | const saldoAtualizado = saldoAtual + valorDeposito - valorRetirada; 12 | 13 | //TODO: Imprimir o a saída de conforme a tabela de exemplos (uma casa decimal). 14 | 15 | print(`Saldo atualizado na conta: ${saldoAtualizado.toFixed(1)}`); 16 | -------------------------------------------------------------------------------- /JavaScript/004.js: -------------------------------------------------------------------------------- 1 | // Desafios JavaScript na DIO têm funções "gets" e "print" acessíveis globalmente: 2 | // - "gets" : lê UMA linha com dado(s) de entrada (inputs) do usuário; 3 | // - "print": imprime um texto de saída (output), pulando linha. 4 | 5 | const valorInicial = parseFloat(gets()); 6 | const taxaJuros = parseFloat(gets()); 7 | const periodo = parseInt(gets()); 8 | 9 | let valorFinal = valorInicial; 10 | 11 | // Iterar, baseado no período em anos, para cálculo do valorFinal com os juros compostos. 12 | for (let i = 1; i <= periodo; i++) { 13 | valorFinal += valorFinal * taxaJuros; // Calcula o valor dos juros compostos 14 | } 15 | 16 | print('Valor final do investimento: R$', valorFinal.toFixed(2)); 17 | -------------------------------------------------------------------------------- /JavaScript/002.js: -------------------------------------------------------------------------------- 1 | //Desafios JavaScript na DIO têm funções "gets" e "print" acessíveis globalmente: 2 | //- "gets" : lê UMA linha com dado(s) de entrada (inputs) do usuário; 3 | //- "print": imprime um texto de saída (output), pulando linha.const ativos = []; 4 | 5 | // Entrada da quantidade de ativos 6 | const quantidadeAtivos = parseInt(gets()); 7 | 8 | //Entrada dos tipos de ativos 9 | const ativos = [ ]; 10 | for (let i = 0; i < quantidadeAtivos; i++) { 11 | const codigoAtivo = gets(); 12 | ativos.push(codigoAtivo); 13 | } 14 | 15 | //TODO: Ordenar os ativos em ordem alfabética. 16 | ativos.sort(); 17 | 18 | //TODO: Imprimir a lista de ativos ordenada, conforme a tabela de exemplos. 19 | ativos.forEach(codigoAtivo => { 20 | print(codigoAtivo); 21 | }); -------------------------------------------------------------------------------- /JavaScript/003.js: -------------------------------------------------------------------------------- 1 | // Função para realizar o saque 2 | function realizarSaque(saldoDisponivel, valorSaque) { 3 | if (valorSaque <= saldoDisponivel) { 4 | saldoDisponivel -= valorSaque; 5 | return { sucesso: true, novoSaldo: saldoDisponivel }; 6 | } else { 7 | return { sucesso: false }; 8 | } 9 | } 10 | 11 | // Entrada de dados 12 | let saldoTotal = parseInt(gets()); 13 | let valorSaque = parseInt(gets()); 14 | 15 | // Realizar o saque 16 | const resultadoSaque = realizarSaque(saldoTotal, valorSaque); 17 | 18 | // Condições para impressão da saída 19 | if (resultadoSaque.sucesso) { 20 | print(`Saque realizado com sucesso. Novo saldo: ${resultadoSaque.novoSaldo}`); 21 | } else { 22 | print("Saldo insuficiente. Saque nao realizado!"); 23 | } 24 | -------------------------------------------------------------------------------- /JavaScript/005.js: -------------------------------------------------------------------------------- 1 | // Desafios JavaScript na DIO têm funções "gets" e "print" acessíveis globalmente: 2 | // - "gets" : lê UMA linha com dado(s) de entrada (inputs) do usuário; 3 | // - "print": imprime um texto de saída (output), pulando linha. 4 | 5 | while (true) { 6 | const valor = parseFloat(gets()); 7 | 8 | if (valor > 0) { 9 | const saldoAtual = 0; // Supondo que o saldo inicial é 1000 10 | const novoSaldo = saldoAtual + valor; 11 | print("Deposito realizado com sucesso!"); 12 | print("Saldo atual: R$ " + novoSaldo.toFixed(2)) 13 | break; // Sai do loop após um valor válido ser informado. 14 | } else if (valor < 0) { 15 | print("Valor invalido! Digite um valor maior que zero."); 16 | break; 17 | } else { 18 | print("Encerrando o programa..."); 19 | break; // Sai do loop quando o usuário digita zero ou valor negativo. 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Java/Desafio05.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | public class Desafio05 { 4 | 5 | public static void main(String[] args) { 6 | Scanner scanner = new Scanner(System.in); 7 | 8 | String entrada = scanner.nextLine(); 9 | String[] partes = entrada.split(","); 10 | 11 | String data = partes[0]; 12 | String hora = partes[1]; 13 | String descricao = partes[2]; 14 | double valor = Double.parseDouble(partes[3]); 15 | 16 | Transacao transacao = new Transacao(data, hora, descricao, valor); 17 | 18 | transacao.imprimir(); 19 | } 20 | } 21 | 22 | class Transacao { 23 | private String data; 24 | private String hora; 25 | private String descricao; 26 | private double valor; 27 | 28 | public Transacao(String data, String hora, String descricao, double valor) { 29 | this.data = data; 30 | this.hora = hora; 31 | this.descricao = descricao; 32 | this.valor = valor; 33 | } 34 | 35 | public void imprimir() { 36 | System.out.println(this.descricao); 37 | System.out.println(this.data); 38 | System.out.println(this.hora); 39 | System.out.printf("%.2f", this.valor); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Java/Desafio01.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | public class Desafio01 { 4 | public static void main(String[] args) { 5 | // Lendo os dados de Entrada: 6 | Scanner scanner = new Scanner(System.in); 7 | int numeroConta = scanner.nextInt(); 8 | scanner.nextLine(); // Consome a quebra de linha após a entrada do número da conta 9 | String nomeTitular = scanner.nextLine(); 10 | double saldo = scanner.nextDouble(); 11 | 12 | // Criar uma instância de "ContaBancaria" com os valores de Entrada. 13 | ContaBancaria conta = new ContaBancaria(numeroConta, nomeTitular, saldo); 14 | 15 | System.out.println("Informacoes:"); 16 | // Imprimir as informações da conta usando o objeto criado acima. 17 | System.out.println("Conta: " + conta.numero); 18 | System.out.println("Titular: " + conta.titular); 19 | System.out.println("Saldo: R$ " + conta.saldo); 20 | } 21 | } 22 | 23 | class ContaBancaria { 24 | int numero; 25 | String titular; 26 | double saldo; 27 | 28 | public ContaBancaria(int numero, String titular, double saldo) { 29 | this.numero = numero; 30 | this.titular = titular; 31 | this.saldo = saldo; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Java/Desafio02.java: -------------------------------------------------------------------------------- 1 | 2 | import java.text.DecimalFormat; 3 | import java.util.Scanner; 4 | 5 | public class Desafio02 { 6 | 7 | public static void main(String[] args) { 8 | // Lendo os dados de Entrada: 9 | Scanner scanner = new Scanner(System.in); 10 | String titular = scanner.next(); 11 | int numeroConta = scanner.nextInt(); 12 | double saldo = scanner.nextDouble(); 13 | double taxaJuros = scanner.nextDouble(); 14 | 15 | ContaPoupanca contaPoupanca = new ContaPoupanca(numeroConta, titular, saldo, taxaJuros); 16 | 17 | System.out.println("Conta Poupanca:"); 18 | contaPoupanca.exibirInformacoes(); 19 | } 20 | } 21 | 22 | class ContaBancaria { 23 | protected int numero; 24 | protected String titular; 25 | protected double saldo; 26 | 27 | public ContaBancaria(int numero, String titular, double saldo) { 28 | this.numero = numero; 29 | this.titular = titular; 30 | this.saldo = saldo; 31 | } 32 | 33 | public void exibirInformacoes() { 34 | DecimalFormat decimalFormat = new DecimalFormat("#.0"); 35 | System.out.println(titular); 36 | System.out.println(numero); 37 | System.out.println("Saldo: R$ " + decimalFormat.format(saldo)); 38 | } 39 | } 40 | 41 | class ContaPoupanca extends ContaBancaria { 42 | private double taxaJuros; 43 | 44 | public ContaPoupanca(int numero, String titular, double saldo, double taxaJuros) { 45 | super(numero, titular, saldo); 46 | this.taxaJuros = taxaJuros; 47 | } 48 | 49 | @Override 50 | public void exibirInformacoes() { 51 | super.exibirInformacoes(); 52 | System.out.println("Taxa de juros: " + taxaJuros + "%"); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Java/Desafio03.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | 4 | public class Desafio03 { 5 | public static void main(String[] args) { 6 | Scanner scanner = new Scanner(System.in); 7 | String tipoCofre = scanner.nextLine(); 8 | 9 | if (tipoCofre.equalsIgnoreCase("digital")) { 10 | int senha = scanner.nextInt(); 11 | int confirmacaoSenha = scanner.nextInt(); 12 | CofreDigital cofreDigital = new CofreDigital(senha); 13 | 14 | if (cofreDigital.validarSenha(confirmacaoSenha)) { 15 | cofreDigital.imprimirInformacoes(); 16 | System.out.println("Cofre aberto!"); 17 | } else { 18 | System.out.println("Tipo: " + cofreDigital.tipo); 19 | System.out.println("Metodo de abertura: " + cofreDigital.metodoAbertura); 20 | System.out.println("Senha incorreta!"); 21 | } 22 | } else if (tipoCofre.equalsIgnoreCase("fisico")) { 23 | CofreFisico cofreFisico = new CofreFisico(); 24 | cofreFisico.imprimirInformacoes(); 25 | } else { 26 | System.out.println("Tipo de cofre invalido"); 27 | } 28 | } 29 | } 30 | 31 | abstract class Cofre { 32 | protected String tipo; 33 | protected String metodoAbertura; 34 | 35 | public Cofre(String tipo, String metodoAbertura) { 36 | this.tipo = tipo; 37 | this.metodoAbertura = metodoAbertura; 38 | } 39 | 40 | public void imprimirInformacoes() { 41 | System.out.println("Tipo: " + this.tipo); 42 | System.out.println("Metodo de abertura: " + this.metodoAbertura); 43 | } 44 | } 45 | 46 | class CofreDigital extends Cofre { 47 | 48 | private int senha; 49 | 50 | public CofreDigital(int senha) { 51 | super("Cofre Digital", "Senha"); 52 | this.senha = senha; 53 | } 54 | 55 | public boolean validarSenha(int confirmacaoSenha) { 56 | return confirmacaoSenha == this.senha; 57 | } 58 | } 59 | 60 | class CofreFisico extends Cofre { 61 | 62 | public CofreFisico() { 63 | super("Cofre Fisico", "Chave"); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Java/Desafio04.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import java.util.Date; 3 | import java.text.SimpleDateFormat; 4 | import java.text.ParseException; 5 | import java.util.List; 6 | import java.util.Scanner; 7 | 8 | public class Desafio04{ 9 | 10 | public static void main(String[] args) throws ParseException { 11 | try (Scanner scanner = new Scanner(System.in)) { 12 | String dataInicial = scanner.nextLine(); 13 | String dataFinal = scanner.nextLine(); 14 | 15 | SistemaAcionistas sistemaAcionistas = new SistemaAcionistas(); 16 | List analises = sistemaAcionistas.obterAnalisesDesempenho(dataInicial, dataFinal); 17 | 18 | for (String analise : analises) { 19 | System.out.println(analise); 20 | } 21 | } 22 | } 23 | } 24 | 25 | class SistemaAcionistas { 26 | public List obterAnalisesDesempenho(String dataInicialStr, String dataFinalStr) throws ParseException { 27 | SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 28 | Date dataInicial = df.parse(dataInicialStr); 29 | Date dataFinal = df.parse(dataFinalStr); 30 | 31 | List analises = new ArrayList<>(); 32 | analises.add(new Analise(df.parse("01/01/2023"), "Analise de Desempenho Financeiro")); 33 | analises.add(new Analise(df.parse("15/02/2023"), "Analise de Riscos e Exposicoes")); 34 | analises.add(new Analise(df.parse("31/03/2023"), "Analises Corporativas")); 35 | analises.add(new Analise(df.parse("01/04/2023"), "Analise de Politicas e Regulamentacoes")); 36 | analises.add(new Analise(df.parse("15/05/2023"), "Analise de Ativos")); 37 | analises.add(new Analise(df.parse("30/06/2023"), "Analise de Inovacao e Tecnologia")); 38 | 39 | List analisesFiltradas = new ArrayList<>(); 40 | for (Analise analise : analises) { 41 | if ((analise.data.after(dataInicial) || analise.data.equals(dataInicial)) && 42 | (analise.data.before(dataFinal) || analise.data.equals(dataFinal))) { 43 | if (analise.data.equals(df.parse("10/04/2023"))) { 44 | analisesFiltradas.add("Nova Analise de Politicas e Regulamentacoes"); 45 | } else if (analise.data.equals(df.parse("20/05/2023"))) { 46 | analisesFiltradas.add("Nova Analise de Ativos"); 47 | } else { 48 | analisesFiltradas.add(analise.descricao); 49 | } 50 | } 51 | } 52 | return analisesFiltradas; 53 | } 54 | 55 | class Analise { 56 | Date data; 57 | String descricao; 58 | 59 | public Analise(Date data, String descricao) { 60 | this.data = data; 61 | this.descricao = descricao; 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Desafios de Código - Santander Bootcamp 2023 2 | 3 | Bem-vindo ao repositório dos desafios de código do Santander Bootcamp 2023 - Fullstack Java+Angular, realizado em parceria com a DIO (Digital Innovation One). Este repositório contém as soluções desenvolvidas por mim para cada um dos desafios em JavaScript e Java. 4 | 5 | ## Desafios em JavaScript 6 | 7 | 1. **Desafio Full Stack - JavaScript: Equilibrando o Saldo** 8 | - Arquivo: [001.js](https://github.com/CarlosEduardoLemos/Desafios-Bootcamp2023/blob/main/JavaScript/001.js) 9 | 10 | 2. **Desafio Full Stack - JavaScript: Organizando Seus Ativos** 11 | - Arquivo: [002.js](https://github.com/CarlosEduardoLemos/Desafios-Bootcamp2023/blob/main/JavaScript/002.js) 12 | 13 | 3. **Desafio Full Stack - JavaScript: Condicionamento Rico** 14 | - Arquivo: [003.js](https://github.com/CarlosEduardoLemos/Desafios-Bootcamp2023/blob/main/JavaScript/003.js) 15 | 16 | 4. **Desafio Full Stack - JavaScript: Juros Compostos** 17 | - Arquivo: [004.js](https://github.com/CarlosEduardoLemos/Desafios-Bootcamp2023/blob/main/JavaScript/004.js) 18 | 19 | 5. **Desafio Full Stack - JavaScript: O Grande Depósito** 20 | - Arquivo: [005.js](https://github.com/CarlosEduardoLemos/Desafios-Bootcamp2023/blob/main/JavaScript/005.js) 21 | 22 | ## Desafios em Java 23 | 24 | 1. **Desafio Full Stack - Java: Abrindo Contas** 25 | - Arquivo: [Desafio01.java](https://github.com/CarlosEduardoLemos/Desafios-Bootcamp2023/blob/main/Java/Desafio01.java) 26 | 27 | 2. **Desafio Full Stack - Java: Herança Bancária** 28 | - Arquivo: [Desafio02.java](https://github.com/CarlosEduardoLemos/Desafios-Bootcamp2023/blob/main/Java/Desafio02.java) 29 | 30 | 3. **Desafio Full Stack - Java: Cofres Seguros** 31 | - Arquivo: [Desafio03.java](https://github.com/CarlosEduardoLemos/Desafios-Bootcamp2023/blob/main/Java/Desafio03.java) 32 | 33 | 4. **Desafio Full Stack - Java: Reunião de Acionistas** 34 | - Arquivo: [Desafio04.java](https://github.com/CarlosEduardoLemos/Desafios-Bootcamp2023/blob/main/Java/Desafio04.java) 35 | 36 | 5. **Desafio Full Stack - Java: A Última Transação** 37 | - Arquivo: [Desafio05.java](https://github.com/CarlosEduardoLemos/Desafios-Bootcamp2023/blob/main/Java/Desafio05.java) 38 | 39 | Sinta-se à vontade para explorar as soluções de cada desafio, verificar o código fonte e até mesmo contribuir com melhorias ou otimizações. Este repositório foi criado como parte do meu progresso no Santander Bootcamp 2023 - Fullstack Java+Angular, e estou animado em compartilhar minhas soluções com a comunidade. Se você tiver alguma dúvida ou sugestão, não hesite em abrir uma **issue** ou entrar em contato. 40 | 41 | Divirta-se codificando e aprendendo! 42 | --------------------------------------------------------------------------------