Вы находитесь на странице: 1из 53

Estrutura Condicional I f - E l s e

Prof. Dr. Eleandro Maschio


Tecnologia em Sistemas para Internet
Câmpus Guarapuava
Universidade Tecnológica Federal do Paraná (UTFPR)
Estruturas Condicionai s
Estruturas Condicionai s

Exemplo

Fornecida a idade do indivíduo, determinar se a maioridade já


foi atingida.
Estruturas Condicionai s

O Problema

Conforme a idade fornecida, classificar o indivíduo como


maioritário ou não maioritário.

• As classificações são exclusivas. Ou exibe-se uma


mensagem, ou outra.

• O conjunto de instruções visto até aqui não possibilita que


se execute trechos exclusivos de código.

• Trabalhou-se, até o presente, com uma mera progressão


do fluxo de controle, linha após linha.

• Nesta progressão, a linha sucessora é executada


incondicionalmente após a linha atual.
Estruturas Condicionai s

import java.util.Scanner;

public class SemDesvio


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

int idade = 0;
System.out.print("Digite a sua idade: ");
idade = entrada.nextInt();

System.out.println("Atingiu a maioridade.");

System.out.println("Não atingiu a maioridade.");


}
}
Estruturas Condicionai s

• Possibilitam a utilização de desvios lógicos progressivos em


algoritmos/programas.

• Com estes desvios pode-se saltar de maneira progressiva


blocos de instruções de acordo com o resultado da condição
avaliada.

• Condição diz respeito a uma expressão booleana que


orientará o fluxo de execução para o desvio.
Estruturas Condicionai s

Dentro disso, não há como bifurcar o fluxo de controle para:

• Se o invidíduo tiver dezoito anos ou mais, executar:


System.out.println("Atingiu a maioridade.");

• Caso contrário, ou seja, se invidívuo tiver menos de


dezoito anos, executar:
System.out.println("Não atingiu a maioridade.");
Estrutura Condicional I f

public class ComDesvio


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

int idade = 0;
System.out.print("Digite a sua idade: ");
idade = entrada.nextInt();

if (idade >= 18)


{
System.out.println("Atingiu a maioridade.");
}
else
{
System.out.println("Não atingiu a maioridade.");
}
}
}
Sintaxe

if (idade >= 18)


if (condição) {
{ // caso verdadeiro
// bloco de instruções System.out.println("Atingiu
// para caso verdadeiro a maioridade.");
} }
else else
{ {
// bloco de instruções // caso falso
// para caso falso System.out.println("Não
} atingiu a maioridade.");
}
Sintaxe e Semântica

Condição

• Trata-se de uma expressão booleana que será avaliada


pela estrutura condicional if.

• Como se trata de uma expressão booleana, o resultado da


avaliação desta permite somente dois valores possíveis:
(idade >= 18)

• Verdadeiro, se a variável idade for maior ou igual a 18.


• O fluxo de controle será direcionado ao bloco
correspondente ao caso verdadeiro.

• Falso, se a variável média for menor do que 18.


• Direcionado ao bloco correspondente ao caso falso.
Sintaxe e Semântica

public class ComDesvio


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

int idade = 0;
System.out.print("Digite a sua idade: ");
idade = entrada.nextInt();

v if (idade >= 18)


{
System.out.println("Atingiu a maioridade.");
}
else
{
System.out.println("Não atingiu a maioridade.");
}
}
}
Sintaxe e Semântica

public class ComDesvio


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

int idade = 0;
System.out.print("Digite a sua idade: ");
idade = entrada.nextInt();

if (idade >= 18)


f {
System.out.println("Atingiu a maioridade.");
}
else
{
System.out.println("Não atingiu a maioridade.");
}
}
}
Sintaxe e Semântica

Omissão do else

• Há problemas em que se deseja executar um bloco de


instruções caso uma determinada condição seja verdadeira,
porém não há bloco de instruções alternativo para o caso
contrário.

• Assim, omitir o trecho referente ao else (senão) consiste


em uma construção válida.

• Exemplo: parabenizaro indivíduo caso a idade seja maior do


que 100 anos.
if (idade >= 100)
{
System.out.println("Parabéns centenário.");
}
Construção de Condicionai s

Operadores Relacionais

• Igual ==
if (resposta == 's') ...

• Diferente !=
if (divisor != 2) ...

• Maior >
if (salario > salarioMinimo) ...

• Maior ou Igual >=


if (peso >= pesoIdeal) ...
Construção de Condicionai s

• Menor <
if (cotacaoDolar < cotacaoEuro) ...

• Menor ou Igual <=


if (percentualFaltas <= 0.75f) ...
Construção de Condicionai s

Operadores Lógicos

• Operador ! (não, not)

Corresponde à negação ou NÃO lógico.

Trata-se de um operador unário, ou seja, requer um único


operando.

Sendo a uma expressão booleana, !(a) é a expressão cujo


valor lógico é o oposto daquele de a.

• Se a avaliação do valor lógico de a for verdadeira, então


!(a) é falso;

• Se a avaliação do valor lógico de a for falsa, então !(a)


é verdadeiro.
Construção de Condicionai s

Operadores Lógicos

• Operador ! (não, not)

Tabela Verdade

a !(a)
V F
F V
Construção de Condicionai s

Operadores Lógicos

• Operador ! (não, not)

Exemplo
A cor da camisa A é azul.
A cor da camisa A não é azul.

cor é azul !(é azul)


azul V F
verde F V
preto F V
Construção de Condicionai s

Operadores Lógicos

• Operador ! (não, not)

Usos
if !(a == b) ...

Tem a mesma denotação que:


if (a != b) ...

E quanto a essa expressão?


if !(!(a)) ...
a !(a)
V F
F V
Construção de Condicionai s

Operadores Lógicos

• Operador && (e, and)

Corresponde à conjunção ou E lógico.

Sendo duas expressões booleanas, a e b, a expressão


a && b é verdade apenas quando tanto a quanto b são
verdadeiras.

• Para quaisquer outros valores de a e b, o resultado é


falso.

Trata-se de um operador binário, ou seja, requer dois


operandos.
Construção de Condicionai s

Operadores Lógicos

• Operador && (e, and)

Tabela Verdade

a b a && b
F F F a b
F V F
V F F
V V V bateria lâmpada
Construção de Condicionai s

Operadores Lógicos

• Operador && (e, and)

Exemplo
Conhece a linguagem Java e a linguagem C?

Java C Java && C


F F F
F V F
V F F
V V V
Construção de Condicionai s

Operadores Lógicos

• Operador && (e, and)

Usos
if (a && b) ...
if ((media >= 70) && (freq >= 0.75f)) ...
if ((idade > 65) && (sexo == 'M')) ...
Construção de Condicionai s

Operadores Lógicos

• Operador || (ou, or)

Corresponde à disjunção ou OU lógico.

Sendo duas expressões booleanas, a e b, a expressão


a || b é verdade apenas quando ao menos uma das
proposições a e b é verdadeira.

• O resultado é falso somente quanto tanto a quanto b


são falsos.

Trata-se de um operador binário, ou seja, requer dois


operandos.
Construção de Condicionai s

Operadores Lógicos

• Operador || (ou, or)

Tabela Verdade

a b a || b
a
F F F
F V V b
V F V
V V V bateria lâmpada
Construção de Condicionai s

Operadores Lógicos

• Operador ou (or)

Exemplo
Conhece a linguagem Java ou a linguagem C?

Java C Java || C
F F F
F V V
V F V
V V V
Construção de Condicionai s

Resumo dos Operadores Lógicos

• Java não dispõe do operador lógico ou-exclusivo (XOR).

• Ordem de Precedência: !, &&, ||.

a b !(a) !(b) a && b a || b

F F V V F F
F V V F F V
V F F V F V
V V F F V V
Construção de Condicionai s

Outros exemplos de condicionais válidos

• if ((a < c) && (a != b)) ...

• if (!(n % 2 == 0) || (n == 100)) ...

• if ((a || b) && (m != n)) ...


Mais de Dois Casos

O Problema:

Conforme a idade fornecida, classificar o indivíduo:


maioritário, menor com direito ao voto ou menor sem
direito ao voto.

• Um único if-else torna-se insuficiente para resolver este


tipo de problema, pois permite somente as alternativas de
caso verdadeiro e caso contrário.
Aninhamento
de Estruturas Condicionai s

// ...
if (idade >= 18)
{
System.out.println("Atingiu a maioridade.");
}
else
{
System.out.println("Não atingiu a maioridade.");
}
}
}
Aninhamento
de Estruturas Condicionai s
// ...
if (idade >= 18)
{
System.out.println("Atingiu a maioridade.");
}
else
{
if (idade >= 16)
{
System.out.println("Menor com direito ao voto.");
}
else
{
System.out.println("Menor sem direito ao voto.");
}
}
}
}
Aninhamento
de Estruturas Condicionai s
if (idade >= 18)
{
System.out.println("Atingiu a maioridade.");
if (idade >= 100)
{
System.out.println("Parabéns centenário.");
}
}
else
{
if (idade >= 16)
{
System.out.println("Menor com direito ao voto.");
}
else
{
System.out.println("Menor sem direito ao voto.");
}
}
Aninhamento
de Estruturas Condicionai s

Sim, funciona...

Mas por que seria inadequado resolver desta outra maneira?


Aninhamento
de Estruturas Condicionai s
if (idade >= 18)
{
System.out.println("Atingiu a maioridade.");
}
if (idade >= 100)
{
System.out.println("Parabéns centenário.");
}
if (idade >= 16 && idade < 18)
{
System.out.println("Menor com direito ao voto.");
}
if (idade < 16)
{
System.out.println("Menor sem direito ao voto.");
}
Aninhamento
de Estruturas Condicionai s
Caso o indivíduo tivesse 90 anos, maioritário, o fluxo de
controle ainda precisaria avaliar todos os condicionais
subsequentes.

Desperdício de tempo e de recursos!


Princípios e Perícias
de Programação

Em comparação ao xadrez.

• Aquisição de Princípios:

Aprender a movimentação das peças.

• Desenvolvimento de Perícia:

Desenvolver a habilidade de arquitetar jogadas.


Princípios e Perícias
de Programação

Na programação

• Aquisição de Princípios:

Aprender a léxice, sintaxe e semântica de cada instrução


isolada (if, print, println...).

• Desenvolvimento de Perícia:

Desenvolver a habilidade de encadear e aninhar instruções


a fim de compor um algoritmo/programa.

è Prática, prática e... muita prática.


Aninhamento
de Estruturas Condicionai s

Problema

• Que tal alterar o trecho de programa seguinte?

• Seria fácil efetuar alguma manutenção nele?


Aninhamento
de Estruturas Condicionai s
if (idade >= 18)
{
System.out.println("Atingiu a maioridade.");
if (idade >= 100)
{
System.out.println("Parabéns centenário.");
}
}
else
{
if (idade >= 16)
{
System.out.println("Menor com direito ao voto.");
}
else
{
System.out.println("Menor sem direito ao voto.");
}
}
Aninhamento
de Estruturas Condicionai s
if (idade >= 18)
{
System.out.println("Atingiu a maioridade.");
if (idade >= 100)
{
System.out.println("Parabéns centenário.");
}
}
else
{
if (idade >= 16)
{
System.out.println("Menor com direito ao voto.");
}
else
{
System.out.println("Menor sem direito ao voto.");
}
}
Aninhamento
de Estruturas Condicionai s

Indentação

• Definir uma estrutura hierárquica de contextos e


subcontextos através da utilização de espaços.

• Aconselha-se que os espaços sejam incrementados após o


início de cada estrutura.

• Decrementados imediatamente antes do fim de cada


estrutura.

• Usam-se entre dois e quatro espaços.

• Prefere-se não utilizar a tecla tab ou ( ).

• Bons editores têm a opção de substituir automaticamente


tabulações por espaços.
Omissão do Delimitador
de Bloco

• Os delimitadores de bloco, { e }, podem ser omitidos da


estrutura condicional quando houver somente uma
instrução no bloco.

• Entretanto é uma medida de segurança utilizá-los mesmo


assim.

• Permanecem já como garantia para que outras instruções


sejam inseridas em possíveis alterações do código.
Omissão do Delimitador
de Bloco
if (idade >= 18)
{
System.out.println("Atingiu a maioridade.");
if (idade >= 100)
{
System.out.println("Parabéns centenário.");
}
}
else
{
if (idade >= 16)
{
System.out.println("Menor com direito ao voto.");
}
else
{
System.out.println("Menor sem direito ao voto.");
}
}
Omissão do Delimitador
de Bloco

if (idade >= 18)


{
System.out.println("Atingiu a maioridade.");

if (idade >= 100)


System.out.println("Parabéns centenário.");
}
else
{
if (idade >= 16)
System.out.println("Menor com direito ao voto.");
else
System.out.println("Menor sem direito ao voto.");
}
Omissão do Delimitador
de Bloco

if (idade >= 18)


{
System.out.println("Atingiu a maioridade.");

if (idade >= 100)


System.out.println("Parabéns centenário.");
}
else
if (idade >= 16)
System.out.println("Menor com direito ao voto.");
else
System.out.println("Menor sem direito ao voto.");
Omissão do Delimitador
de Bloco

Esteja atento!

if (idade >= 18)


System.out.println ("Atingiu a maioridade.");
System.out.println ("Parabéns!");
System.out.println ("Carteira de habilitação?");
System.out.println ("Dirija consciente.”);
Omissão do Delimitador
de Bloco

Esteja atento!

if (idade >= 18)


System.out.println ("Atingiu a maioridade.");
System.out.println("Parabéns!");
System.out.println("Carteira de habilitação?");
System.out.println("Dirija consciente.”);
Omissão do Delimitador
de Bloco

Esteja atento!

if (idade >= 18)


{
System.out.println("Atingiu a maioridade.");
System.out.println("Parabéns!");
System.out.println("Carteira de habilitação?");
System.out.println("Dirija consciente.”);
}
Comparação de Igualdade
e Atribuição

Isto é uma atribuição!

if (idade = 18)
System.out.println("Atingiu a maioridade agora!”);
Comparação de Igualdade
e Atribuição

Agora sim, é uma comparação de igualdade!

if (idade == 18)
System.out.println("Atingiu a maioridade agora!");
Comparação de Strings

• Não se pode utilizar os operadores relativos (==, >, >=, < e


<=) para comparar Strings.

• Para verificar igualdade, utilize os métodos equals() e


equalsIgnoreCase() da classe String:

String cadeia1 = "Teste", cadeia2 = "Teste";

if (cadeia1.equals(cadeia2))
System.out.println("As Strings têm valores iguais.");
else
System.out.println("As Strings têm valores diferentes.");
Termos para Consulta
de Referências

• Estruturas Condicionais.

• Comandos Condicionais.

• Estruturas de Decisão.

• Comandos de Decisão.

• Estruturas de Seleção.

• Comandos de Seleção.

• Estruturas de Controle.

• Comandos de Controle.
Bibliografia

DEITEL, Paul; DEITEL, Harvey. Java: Como Programar. 8 ed.


São Paulo: Pearson Prentice, 2010. 1144 p.

• Capítulo 4: Instruções de Controle: Parte 1.

Вам также может понравиться