Introdução ao Java - parte 2
No primeiro post da série de introdução ao Java, mostrei como configurar e executar nosso código Java. Continuando, nesse post vou apresentar alguns conceitos que serão necessários para lidarmos com o controle de fluxo na lógica de funcionamento dos nossos códigos. Sim, vamos continuar no básico, porém essencial para os próximos posts. Mas vamos deixar de conversa e partir para o que mais interessa: código!
Lidando com o controle de fluxo
Se você já iniciou algum estudo em qualquer linguagem de programação, acredito que já tenha ouvido falar de “if”, “else”, “while” e “for”. Essas palavras são usadas quando queremos criar alguma condicional, ou seja, controlar o fluxo de funcionamento dos nossos códigos.
Para trabalharmos com condicionais, vamos precisar criar uma expressão booleana, que é uma expressão a qual retorna “true” (verdadeiro) ou “false” (falso). Para obter o resultado esperado, podemos usar os seguintes operadores: <
(menor que), >
(maior que), <=
(menor ou igual a que), >=
(maior ou igual a que), ==
(igual a), !=
(diferente de), entre outros. Basicamente, podemos encontrar esses operadores em diversas outras linguagens como PHP, Ruby, Javascript entre outras.
- if, else, else if
Vamos imaginar o seguinte caso: apenas maiores de idades podem visualizar a mensagem de texto.
public static void main(String[] args) {
int menorIdade = 15;
if(menorIdade < 18) {
System.out.println("Você ainda é menor de idade!");
} else {
System.out.println("Agora você é maior de idade.");
}
}
Analisando o código acima, podemos notar que existe uma expressão booleana, na qual verificamos se o valor da nossa variável menorIdade
tem o valor menor que o número 18. Para executar o código acima, tem a cola aqui. Agora, se alterarmos o valor da variável para um valor acima de 18, o que acontece? Execute o código e veja.
Para deixarmos mais interessante nosso código, vamos adicionar mais uma expressão booleana. Com isso, vamos verificar duas situações:
- se o valor da variável
menorIdade
é menor que 18; - se o valor da variável
menorIdade
é exatamente igual a 18.
public static void main(String[] args) {
int menorIdade = 15;
if(menorIdade < 18) {
System.out.println("Você ainda é menor de idade!");
} else if (menorIdade == 18) {
System.out.println("Agora você é maior de idade.");
} else {
System.out.println("Reveja sua idade, parça!");
}
}
Se alterarmos o valor da variável menorIdade
para 18, a condicional entrará no else if
, mas e se trocarmos o valor para um número maior que “18”, o que aconteceria?
- while
A palavra “while”, no português, pode ser traduzida pela palavra “enquanto”. Na expressão booleana, podemos usar o while
quando precisamos executar uma operação enquanto a nossa expressão booleana for verdadeira. Para ficar mais claro, vamos ao exemplo básico de como utilizá-lo.
public static void main(String[] args) {
int numero = 0;
while(numero < 20) {
System.out.println(numero);
numero = numero + 1;
}
}
A variável numero
receberá novos valores até chegar ao valor ao qual está sendo comparada. Ou seja, enquanto a condição booleana for verdadeira (true
), o código será executado, sobrescrevendo o valor anterior da variável numero com a soma do valor atual mais 1. A execução do trecho do código entre as chaves do while
só é finalizada quando o valor da variável chegar a exatamente 20. Vamos melhorar o nosso código, deixando-o um pouco mais interessante.
public static void main(String[] args) {
int i = 0;
while(i < 20) {
if(i < 18) {
System.out.println("Você ainda é menor de idade!");
} else if(i == 18) {
System.out.println("Agora você é maior de idade.");
}
i++;
}
}
Isso é apenas um exemplo de como podemos fazer uma combinação de várias expressões booleanas para criar lógicas em nossos códigos.
- for
O for
tem o mesmo comportamento do while
, porém podemos executar nossos códigos de maneira mais prática. Veja o exemplo:
public static void main(String[] args) {
for (int i = 0; i < 20; i++) {
if(i < 18) {
System.out.println("Você ainda é menor de idade!");
} else if(i == 18) {
System.out.println("Agora você é maior de idade.");
}
}
}
Já que o for
e o while
são bem “parecidos”, você deve estar se perguntando: quando usar o for
e o while
? Tudo vai depender de como você está implementando seu código e também do seu gosto. Eu prefiro o for
porque consigo entender mais facilmente o que está acontecendo. Fica ao seu gosto!
Controlando loops
Agora que sabemos usar os loops, por que não aprender a controlá-los? Para ficar mais fácil de entender, vejamos o exemplo:
public static void main(String[] args) {
String times[] = {
"São Paulo",
"Palmeiras",
"Vitória",
"Ferroviária",
"Santos",
"XV de Piracicaba"
};
for (int i = 0; i < times.length; i++) {
if(times[i].equals("Vitória")) {
System.out.println("Esse é o time do " + times[i]);
break;
}
}
}
Para usarmos o for
, precisamos passar alguns paramêtros que fará o controle do nosso “loop”. Na variável i
, guardamos um valor padrão (no nosso caso, 0) e precisamos fazer uma comparação (expressão booleana) entre o valor de i
e o total de itens do nosso “array”. Feito isso, o “loop” será executado até encontrar a palavra que estamos buscando (Vitória). Ao encontrar a palavra, o “loop” é finalizado, deixando de percorrer nosso “array” (o break
é o responsável por essa finalização). Isso é bom para performance, já que não é preciso pecorrer todo o “array” para fazer a busca do valor.
Além do break
, temos a palavra chave continue
. Diferente do break
, ao usar o continue
fazemos nosso código parar de executar uma iteração e passar para a próxima iteração do nosso código.
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
if (i > 10 && i < 20) {
continue;
}
System.out.println(i);
}
}
Se notar bem os números impressos no seu terminal, vai notar que nem todos foram exibidos.
Existem outras formas de recuperar valores de um “array”. Se tiver interesse, o Diego César escreveu um post bem explicativo sobre programação funcional com o Java 8.
Resumo
Nesses dois primeiros posts sobre Introdução ao Java (leia o primeiro post), aprendemos como configurar o Java e como executar nosso código sem necessidade de uma IDE. Também descobrimos como que podemos utilizar expressões booleanas para criar fluxos em nosso código, controlando loops e criando condicionais. Agora, acredito que podemos evoluir nossos estudos, começando a estudar algo mais real, principalmente o grande princípio do Java: Orientação a Objetos. Preparados!?