Criando Aplicativos para Android: Estruturas de Desvio de Fluxo

android-programador  

Este artigo tem por objetivo ser uma continuação do segundo tutorial sobre desenvolvimento de aplicativos para Android. O código e projeto do aplicativo será o mesmo, então se você não conferiu a etapa 2 sugiro você fazer isso primeiro. O aplicativo do exercício anterior funciona legal, mas ele tem um problema: Caso ambos os campos ou algum em específico ficar vazio o aplicativo apresenta um erro de lógica. Para evitar este erro vamos utilizar umas das principais estruturas de controle da programação,  o if e else.

Aprendendo a utilizar algumas estruturas de fluxo você poderá começar a desenvolver aplicativos mais interessantes, elaborados e desafiadores.

Este artigo tem caráter introdutório mas serve de base para você se familiarizar com alguns conceitos básicos da linguagem Java e com isso você estará apto para ir além. Neste artigo será abordado o controle de desvio de fluxo if e sua variante if e else (sendo que temos também o switch que substitui o uso de vários else if). No desenvolvimento Android todos os controles de fluxo, operadores lógicos e operadores de comparação são os mesmos da linguagem Java.

Operadores de comparação

Operadores de comparação atuam sobre valores de tipos numéricos e retornam valores booleanos, true (verdadeiro) ou false (falso). O operador == também também pode ser utilizado para comparar outros tipos de dados, inclusive objetos.

Operador   Significado
== igual a
!= diferente de
< menor que
> maior que
<= menor ou igual a
>= maior ou igual a
Exemplo: [crayon-584bc1d02501f734034446/]

Como Comparar Strings no Java

No texto explicativo dos operadores de comparação está em negrito "tipos numéricos" isto é para deixar claro que os operadores acima só servem para comparar números. Mas se você tem duas strings (texto) e deseja saber se elas são iguais ou diferentes o que fazer? Esta discussão é importante, pois os programadores iniciantes tendem a utilizar o operador == ou o operador != e com isso dá erro. O que fazer? Existe um método especial da classe String chamado de equals() que compara cada caractere de uma string e retorna verdadeiro ou falso dependendo dos strings serem iguais ou diferentes.

Exemplo:

[crayon-584bc1d02502d242418831/]

Operadores Lógicos

Estes operadores atuam sobre valores booleanos e retornam valores booleanos, true ou false e são costumeiramente utilizados nas estruturas de desvio de fluxo para realizar comparações entre dois ou mais valores / variáveis.

Operador Significado Exemplo Explicação
&& E ("logical AND") a && b retorna true se a e b forem ambos true. Senão retorna false. Se a for false, b não é avaliada.
& E ("boolean logical AND") a & b retorna true se a e b forem ambos true. Senão retorna false. Ambas expressões a e b são sempre avaliadas.
|| OU ("logical OR") a || b retorna true se a ou b for true. Senão retorna false. Se a for true, b não é avaliada.
| OU ("boolean logical inclusive OR") a | b retorna true se a ou b for true. Senão retorna false. Ambas expressões a e b são sempre avaliadas.
^ OU EXCLUSIVO ("boolean logical exclusive OR") a ^ b retorna true se a for true e b for false ou vice-versa. Senão retorna false
! NÃO ("logical NOT") !a retorna true se a for false. Senão retorna false

Estruturas de Desvio de Fluxo

Estas estruturas desviam um certo trecho de código para uma outra parte, ao invés de seguir o fluxo normal para a próxima linha de código. Na imagem abaixo podemos ver o funcionamento da estrutura IF. condicoes-em-java Exemplo [crayon-584bc1d025037671335240/]  

Colocando a Mão na Massa

Primeiro vamos executar nosso aplicativo "NomeIdade" que criamos. Quando ele abrir no emulador vamos deixar o campo nome e idade vazios e ver o que acontece quando clicar em "Ver Resultado". android-app-camos-vazios

Como podemos ver a frase apresentada está incompleta. Para evitar que isso aconteça vamos fazer algumas validações para certificar se o usuário informou seu nome e idade. Caso negativo uma mensagem de alerta será apresentada para notificar o usuário que os campos são obrigatórios. A alteração do código será somente no método "nomeIdade" os comentários no código do tutorial 2 foram removidos para não confundir somente ficaram os comentários para esta atividade.

[crayon-584bc1d02503e687037394/]

No código acima como é possível notar a mensagem de alerta é genérica. Como um próximo exercício tente fazer o seguinte: Mostrar uma mensagem de erro para o campo nome e outra mensagem de erro para o campo idade. Elabore um meio para não repetir o código do AlertDialog, utilize outra variável String para armazenar as mensagens de alerta, esta é a dica, agora volte ao trabalho! :)

 
Carlos Eduardo da Silva. Administrador e editor-chefe deste site. Formação em Telecomunicações e Redes de Computadores. Especialista em Engenharia de Projetos de Software.
Carlos Eduardo on sabtwitterCarlos Eduardo on sabgoogleCarlos Eduardo on sabgithubCarlos Eduardo on sabfacebook