Olá desenvolvedores, hoje vamos na prática aprender operações lógicas dentro do contexto de estruturas de tomadas de decisão, if e else. No tutorial “ESTRUTURAS DE DECISÃO EM JAVA”, falamos sobre a importância dessas estruturas no dia a dia do programador.
Em síntese, são as também chamadas “instruções de seleção”, que possibilitam dentro de uma aplicação as tomadas de decisões. Decisões estas que podem ou não alterar o fluxo de execução de um programa. Elas também podem ser entendidas como regras de negócio do mundo real implementadas dentro de um sistema.
O autor Deitel, exemplifica com maestria as estruturas de decisão e seleção, nos dando uma aula em apenas um parágrafo.
“O if realiza uma ação (seleciona) se a condição for verdadeira, ou não a realizada se a condição for falsa. Podemos chamar de análise booleana. O if e else, do mesmo modo realiza uma ação se a condição for verdadeira, porém, se a condição for falsa ele realizará uma ação diferente”.
É interessante observar que as estruturas de seleção cumprem a função de quebra de padrão. Na medida em que elas possibilitam a interrupção no fluxo das instruções de um programa de computador. Estas instruções são naturalmente executadas uma após a outra.
Assim, as instruções if, else, if e else, mudam esse paradigma. E o fazem de forma a possibilitar que a próxima instrução a ser executada não seja necessariamente a próxima da sequência. Porém, é preciso estar atento, um erro de lógica na implementação dessas regras pode incorrer na construção de sistema falhos.
Vamos ver, colocando a mão no código a implementação. Bem como o funcionamento dessas construções tão importante dentro de uma aplicação computacional.
O OPERADOR LÓGICO IF
A construção dessa estrutura é algo bastante simples, implica em uma condição que “retorna” um boolean. Se o resultado da análise da condição for um true ele executa a instrução ou o bloco de instrução. Entretanto, se for false, ele ou não faz nada, ou executa outro bloco de instrução.
Crie um programa que receba a nota de um aluno e retorne se ele foi aprovado ou reprovado. Considere a nota um tipo inteiro, e nota maior ou igual a 70 como condição de aprovação.
Observe, a construção acima não compreende uma solução ótima, visto que faz uso desnecessário de processamento. Pois como está estruturada a nossa instrução, as duas condições são obrigatoriamente verificadas.
Analise, uma fez satisfeita a condição não há necessidade de seguir com a verificação. A execução do programa poderia ter sido encerrada no primeiro “if”. Certamente existem as exceções, regras de negócios cuja implementação da estrutura de seleção tal como a construímos será necessária. Mas este não é caso.
Podemos então melhorar este algoritmo, otimizando-o. Vamos estrutura-lo fazendo com que consuma menos recurso de máquina, acrescentando apenas um “else”.
OPERADORES LÓGICOS
Vimos em “OPERADORES E SEUS TIPOS EM JAVA” e seus tipos em Java, que os operadores lógicos possibilitam que várias verificações sejam realizadas. E isso se dá a partir da combinação de uma ou mais expressões. Vimos também que os operadores lógicos utilizados em Java são E (&&) e OU (||). Sendo este último símbolo, o pipe do teclado ou caractere ASCII 124.
Agora, crie um programa que receba o nome (String) e a nota de um aluno e retorne se foi aprovado ou reprovado. Considere a nota um tipo inteiro, a condição de aprovação exige equivalência do nome e nota maior ou igual a 70.
Na postagem anterior, “OS TIPOS CHAR E STRING DE CARACTERES” falamos da classe String e alguns dos seus respectivos métodos. Entre eles o “Boolean equals” – método que compara duas Strings. E o “Boolean equalsIgnoreCase” – Compara duas Strings sem fazer distinção entre letras maiúsculas e minúsculas.
Foi por meio do método “equalsIgnoreCase” que foi possível atribuir o valor “ALEX” a String e utilizar “Alex” para a comparação. Agora experimente utilizar o método equals, ficaria assim, nome.equals(“ ”) e veja o que acontece. E depois experimente mudar o valor da String para o seu próprio nome, ou mesmo alterar o valor da nota.
A ideia é que você pratique e faça suas próprias verificações, experimente, veja por você mesmo como as coisas acontecem.
IF E ELSE: APRIMORANDO O CÓDIGO
Vamos tentar algo diferente, troque o valor da variável por outro nome qualquer, Java, por exemplo, e acrescente uma nova instrução. Para este teste utilizaremos também o método equals(). Veja abaixo o exemplo.
Observe que as duas primeiras instruções retornam um valor falso. Analisando o primeiro if, a nota é maior ou igual a 70. Entretanto, o nome que consta da condição não é equivalente ao que foi declarado na String. A segunda condição também retorna um false, visto que a nota não é menor que 70.
Assim sendo, uma vez que nenhuma das condições anteriores foram satisfeitas, ele executará os códigos da terceira instrução. Que foi adicionada para casos em que situação semelhante ocorresse.
Neste caso, embora com condição de aprovação (nota maior ou igual a 70), o aluno não foi encontrado no sistema. E esta mensagem deve ser informada ao usuário na tela.
Podemos melhorar ainda mais nosso algoritmo, criando uma condição para aluno em recuperação. Esta instrução fará uso do operador lógico &&. Para entrar nesta condição o aluno deverá ter nota maior que 40 e inferior a 70. Vamos ao código.
EM POUCAS PALAVRAS
Ao longo da sua carreira como desenvolvedor será normal encontrar sistemas com dezenas de ifs e elses. E com o tempo e experiência essas estruturas também serão algo trivial para você, que as implementará com extrema facilidade. Mas para que isso seja possível é preciso continuar se dedicando, sendo consistente em seus estudos.
Aprendemos hoje um pouco mais sobre instruções de seleção aproveitando para fazer uma rápida revisão sobre os operadores lógicos. Que são igualmente importantes em uma estrutura de condição. Mas principalmente exercitamos nossa lógica de programação.
Espero que tenham gostado e aprendido um pouco mais sobre o