Vou explicar como funcionam alguns mecanismos de entrada dos desafios da plataforma.
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.
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.
const entrada = gets();
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
}
}
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 Javascript.
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?
const entrada1 = gets(); // abacaxi
const entrada2 = gets(); // banana
const entrada3 = gets(); // cereja
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();
}
}
fun main() {
val entrada1 = readLine() ?: "" // abacaxi
val entrada2 = readLine() ?: "" // banana
val entrada3 = readLine() ?: "" // cereja
}
A partir de agora vamos fazer um código de soma simples e entender alguns comportamentos de entrada e de saída.
15
20
7
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.
const entrada1 = Number(gets()); // 15
gets(); // "20"
const entrada2 = Number(gets()); // 7
const soma = entrada1 + entrada2;
console.log(soma); // 22
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
}
}
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. //: # (Josélio de S. C. Júnior - joseliojunior)
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.
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.
Feito com ❤️ por mim.
Josélio de S. C. Júnior - 2021