4

Guia de bolso #1 - Desafios da DIO

#Kotlin #JavaScript #Java
Josélio Júnior
Josélio Júnior

Oi pessoal!!! Espero que estejam bem!!!


Hoje vou explicar como funcionam alguns mecanismos de entrada dos desafios da plataforma.


Link para o artigo no GitHub: https://github.com/joseliojunior/library/tree/main/guia-de-bolso/01-desafios-da-dio


Entradas

    Todos os desafios possuem maneiras diferentes de entrada de dados, ou seja, todos os valores que o desafio mostra em cada teste:

  • Entram por alguma função (método) de entrada;
  • Passam pelo nosso código;
  • Saem por alguma função (método) de saída.


Métodos de entrada

    Dependendo da linguagem de programação que você esteja aprendendo o método de entrada é diferente. Aqui abaixo tem uma pequena lista com a linguagem e o método de entrada.


JavaScript gets()

const entrada = gets();


Java new Scanner(System.in)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);        
    }
}


Kotlin readLine()

fun main() {
    val entrada = readLine()!! // Forma assertiva
}
fun main() {
    val entrada = readLine() ?: "" // Forma assegurada
}

    Lembrando que gets( ) é uma função que funciona apenas na plataforma para a linguagem JavaScript.


Exemplos de entrada

    Supondo que tenhamos um arquivo de entrada:

abacaxi
banana
cereja

    Onde precisamos pegar os valores de cada linha e guardar em uma variável, como faríamos?


JavaScript

const entrada1 = gets(); // abacaxi
const entrada2 = gets(); // banana
const entrada3 = gets(); // cereja


Java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        String entrada1 = entrada.nextLine(); // abacaxi
        String entrada2 = entrada.nextLine(); // banana
        String entrada3 = entrada.nextLine(); // cereja
        entrada.close();
    }
}


Kotlin

fun main() {
    val entrada1 = readLine() ?: "" // abacaxi
    val entrada2 = readLine() ?: "" // banana
    val entrada3 = readLine() ?: "" // cereja
}


Exemplo com o código de soma

    A partir de agora vamos fazer um código de soma simples e entender alguns comportamentos de entrada e de saída.


Entrada

15
20
7

Algoritmo

INÍCIO DO PROCESSO
    > Armazenar a primeira entrada.
    > Não armazenar a segunda entrada.
    > Armazenar a terceira entrada.
    > Armazenar a soma da primeira com a terceira entrada.
    > Exibir o resultado do cálculo.
FIM DO PROCESSO

    Para que possamos "pular" a segunda entrada basta executar a função de entrada sem nunca atribui-la a uma variável, dessa maneira a entrada é obtida, porém nunca armazenada.


JavaScript

const entrada1 = Number(gets()); // 15
gets(); // "20"
const entrada3 = Number(gets()); // 7

const soma = entrada1 + entrada3;
console.log(soma); // 22


Java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int entrada1 = entrada.nextInt(); // 15
        entrada.nextInt(); // 20
        int entrada3 = entrada.nextInt(); // 7
        entrada.close();

        System.out.println(entrada1 + entrada3); // 22
    }
}


Kotlin

fun main() {
    val entrada1 = readLine()?.toInt() ?: 0 // 15
    readLine() // "20"
    val entrada3 = readLine()?.toInt() ?: 0 // 7

    println(entrada1 + entrada2) // 22
}

    Caso mudemos a entrada o nosso código deverá exibir a saída esperada para cada ocasião.


Exemplos

Considerando o algoritmo acima que "pula" a segunda entrada temos:


Teste 1

Entrada

10
20
30

Saída esperada

40


Teste 2

Entrada

55
4890
15

Saída esperada

70

    Logo o código feito para cada linguagem daria certo em ambos os testes, pois sempre entrariam a primeira e a terceira linha de entrada, faria-se a soma e seria por fim exibido o resultado que é igual a saída esperada por cada teste.


Observações

    Existem maneiras diferentes de obter dados numéricos em cada linguagem é sempre interessante que você pesquise as várias formas que não foram abordadas aqui, pois a finalidade é explicar da forma mais simples.


É isso pessoal, espero que tenha ajudado e sucesso em nossas jornadas!!!

10
124

Comentários (11)

0
CARLOS SILVA

CARLOS SILVA

31/08/2021 20:47

Show Josélio,


Segue meu whats 81 98176-6150 me chama lá, vamos criar algo para a comunidade.

0
Josélio Júnior

Josélio Júnior

31/08/2021 18:14

Ótimo Carlos!!!

Sim, tinha me passado um pouco essa ideia de fazer um vídeo sim. É mais fácil explicar executando e falando mesmo.

Não sei se você está também lá no Discord da DIO, se tiver pode me achar por Josélio Júnior#5085. Caso não, mande o contato por favor, para que a gente possa desenvolver melhor essa sua ideia! 🤩

🚀

1
CARLOS SILVA

CARLOS SILVA

31/08/2021 16:45

Maravilha Josélio,

Aê Josélio pensei em fazermos algum projeto sobre Regex. O que acha?

Tenho um livro aqui e uns cursos que fiz, mas poderíamos trocar figurinhas e montar algo juntos, ou no youtube ou sei lá rs vê ai o que acha.


Um abraço,

0
Josélio Júnior

Josélio Júnior

31/08/2021 15:59

Valeu mesmo Carlos!!! 🤩

Acho que vou fazer uma pequena série... 🙂

1
CARLOS SILVA

CARLOS SILVA

31/08/2021 15:57

Aêeeee Josélio Júnior.

Mais uma vez, parabéns pelo artigo meu irmão!

0
Josélio Júnior

Josélio Júnior

31/08/2021 15:52

Muito obrigado Leandro!!! 🤩

0
Josélio Júnior

Josélio Júnior

31/08/2021 15:52

Valeu Edson!!! 🤩

1
Leandro Carvalho

Leandro Carvalho

31/08/2021 14:44

Exelente explicação.

1
Edson Gallo

Edson Gallo

31/08/2021 11:06

Muito bom Josélio. Parabéns!

2
Josélio Júnior

Josélio Júnior

31/08/2021 03:29

Muito obrigado Josué!!!

É isso aí!!! 🚀

Sou um estudante de Nutrição que mergulhou no mundo da programação em março de 2020.          > github: github.com/joseliojunior

Brasil