Sumario: Operadores Relacionais e lógicos,Constutores de decisão(if,switch)
*Lembre sempre da tabela de precedência de Operadores
Quais são os Operadores em java?
Source: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/opsummary.html
Simple Assignment Operator
= Simple assignment operator
Arithmetic Operators
+ Additive operator (also used for String concatenation)
- Subtraction operator
* Multiplication operator
/ Division operator
% Remainder operator
Unary Operators
+ Unary plus operator; indicates positive value (numbers are positive without this, however)
- Unary minus operator; negates an expression
++ Increment operator; increments a value by 1
-- Decrement operator; decrements a value by 1
! Logical compliment operator; inverts the value of a boolean(NOT)
Equality and Relational Operators
== Equal to
!= Not equal to
> Greater than
>= Greater than or equal to
<>
<= Less than or equal to
Conditional Operators
&& Conditional-AND
|| Conditional-OR
?: Ternary (shorthand for if-then-else statement)
Type Comparison Operator
instanceof Compares an object to a specified type
Bitwise and Bit Shift Operators
~ Unary bitwise complement
<<>
>> Signed right shift
>>> Unsigned right shift
& Bitwise AND
^ Bitwise exclusive OR
| Bitwise inclusive OR
Operadores Relacionais:
Os operadores relacionais são usados para comparar dois valores e determinar o relacionamento entre eles. O resultado dessa avaliação é booleano ou seja, True ou False.
Equality and Relational Operators(Operadores Relacionais)
== Equal to
!= Not equal to
> Greater than
>= Greater than or equal to
<>
<= Less than or equal to
O operador =(atribuição) atribui um valor a algo.
Tanto Operadores relacionais quanto condicionais retornam um resultado booleano.Operadores lógicos:
Temos 2 tipos:
1 - De curto-circuito(Operadores Condicionais)
2 - De bit a bit(Esse não nos interessa estudar porem entram operadores que operam sobre bits em tipos de dados INTEIROS, tal como: ~,&,^ e | - NOT,AND, XOR, OR todos para bit a bit)
Curto-Circuito:
Conditional Operators
&& Conditional-AND
|| Conditional-OR
?: Ternary
! NOT(É unário porem entra nesse quesito)
Faz a Avaliação de mais de uma CONDIÇÃO, o resultado é sempre booleano(True OU FALSE), Normalmente usado com Operadores Relacionais.
Antes de tudo, CUIDADO COM A PRECEDÊNCIA de Operadores, Lembre - se que Parenteses tem Precedência 1, ou seja é FEITO ANTES DE TUDO oque esta dentro dele.
AND: Ambas as condições tem que ser True para && retornar True
Expressão:
Explicando a Expressão:
Temos um Operador Relacional(<) que avalia os dois operandos ( a e 1) Temos um Operador Relacional( > ) que avalia os 2 operandos( b e 1)
&& -> Temos um Operador Condicional(&& - AND) que avalia as 2 condições:
1 -
2 -
Suposição 01:
int a = 0;
int b = 2;
Expressão:
Passo a passo:
1 - = O operador Relacional ( < ) avalia como True os 2 Operandos(a e 1)
2 - = O operador Relacional ( < ) avalia como True os 2 Operandos(b e 1)
3 - = O operador Condicional avalia as 2 expressões, True && True = True
4 - Resultado da Expressão: True
Suposição 02:
int a = 1;
int b = 2;
Expressão:
Passo a passo:
1 - = O operador Relacional ( < ) avalia como False os 2 Operandos(a e 1)
2- Resultado da Expressão: False(Sendo o Operador &&, ele avalia a primeira expressão se for falsa, ele nem avalia a SEGUNDA, ja que todos as expressões precisam ser TRUE)
Suposição 03:
int a = 0;
int b = 1;
Expressão:
Passo a passo:
1 - = O operador Relacional ( < ) avalia como True os 2 Operandos(a e 1)
2 - = O operador Relacional ( < ) avalia como False os 2 Operandos(b e 1)
3 - O operador Condicional avalia as 2 expressões, True && False = False
4 - Resultado da Expressão: False
OR: Uma das condições precisa ser True
Expressão:
Explicando a Expressão:
Temos um Operador Relacional(<) que avalia os dois operandos ( a e 1)
Temos um Operador Relacional( > ) que avalia os 2 operandos( b e 1)
|| -> Temos um Operador Condicional(|| - OR) que avalia as 2 condições:
1 -
2 -
Suposição 01:
int a = 1;
int b = 1;
Expressão:
Passo a passo:
1 - = O operador Relacional ( < ) avalia como False os 2 Operandos(a e 1)
2 - = O operador Relacional ( < ) avalia como False os 2 Operandos(b e 1)
3 - = O operador Condicional( || ) avalia as 2 expressões,
False || False = False
4 - Resultado da Expressão: False
Suposição 02:
int a = 1;
int b = 2;
Expressão:
Passo a passo:
1 - = O operador Relacional ( < ) avalia como False os 2 Operandos(a e 1)
2 - = O operador Relacional ( < ) avalia como True os 2 Operandos(b e 1)
3 - = O operador Condicional( || ) avalia as 2 expressões,
False || True = True
4 - Resultado da Expressão: True
Suposição 03:
int a = 0;
int b = 0;
Expressão:
Passo a passo:
1 - = O operador Relacional ( < ) avalia como True os 2 Operandos(a e 1)
2- = O operador Condicional( || ) avalia a expressão com True pois um deles ja é True
4 - Resultado da Expressão: True
TERNÁRIO: - ?: -
Ele tem 3 partes que juntas formam uma expressão.
expressao1?expressao2:expressao3;
Caso expressao1 seja verdadeiro Então o resultado é expressao2
Caso expressao1 seja falsa Então o resultado é expressao3
Exemplo:
(20 > 2)?"É maior":"É menor";
NOT:
Troca o Resultado da avaliação
Exemplo:
int a = 0;
Expressão:
Analisando a Expressão:
1 - - Temos um operador RELACIONAL(<) que avaia os Operandos e retorna um resultado Booleano, a é menor(<) que 1? 0<1?>
2 - ! True -> O contrário de true é false, então ficamos com False
3 - = O operador Not avalia a Expressão como False
Suposição 02:
int a = 1;
Expressão:
Analisando a Expressão:
1 -Temos um operador RELACIONAL(<) que avaia os Operandos e retorna um resultado Booleano, a é menor(<) que 1? 1<1? style="font-weight: bold;"> FALSE(pois 1 é igual a 1)
2 - ! False - o contrário de False é True, portanto o resultado é True
3 - - O Operador Not avalia a Expressão como True
Constutores de decisão:
***Lembre-se que temos 2 tipos de instruções, as de bloco de código e as de uma linha somente, portanto todas podem ser escritas com uma linha de instrução somente, como o exemplo o if abaixo.
O construtor if:
if(expressão_booleana){
bloco_de_código
}//fim da instrução
ou
if(expressão_booleana)
instrucao;
*expressão_booleana - É uma combinação de operadores relacionais, operadores condicionais ou uma variavel booleana ou seja qualquer instrução ou variavel que retorne um valor booleano
*bloco_de_código- São as linhas de código que são executadas caso a expressao_booleana retorne true
A expressão_booleana é avaliada:
Caso true - então o bloco_de_código é executado
Caso false - então pulamos para //fim da instrução
Isso é chamado de fluxograma
Vamos a um exemplo:
Dentro da expressao_booleana temos:
i < 2 - Um operador Relacional( < ) que avalia os 2 Operandos ( i e 2), e o Resultado é False ou seja i++ não é executado.
if Alinhado(ou seja if dentro de if):
Você pode querer alinhar construtores if, nesse caso temos um if dentro de outro:
if(expressão_booleana1){
bloco_de_código1
if(expressão_booleana2){
bloco_de_código2
}//fim do bloco_de_código2
bloco_de_código1
}//fim do bloco_de_código1
*Todos os lugares one esta escrito bloco_de_código pode ser escrito instruções.
VEJAMOS O FLUXOGRAMA:
Clique na imagem para ampliar
Construtores if/else :
São blocos de código onde, se for true o resultado da expressão_booleana um bloco_de_código é executado, se for false o resultado da expressão_booleana outro bloco_de_código é executado.
if(expressao_booleana){
bloco_de_codigo1
}else{
bloco_de_codigo2
}
*expressão_booleana - É uma combinação de operadores relacionais, operadores condicionais ou uma variavel booleana ou seja qualquer instrução ou variavel que retorne um valor booleano
*bloco_de_código1 - São as linhas de código que são executadas caso a expressao_booleana retorne true
*bloco_de_código2 - São as linhas de código que são executadas caso a expressao_booleana retorne false
Acorrentando Construtores if/else:
Você pode acorrentar construtores if/else obtendo assim diferentes expressões de avaliação:
if(expressao_booleana1){
bloco_de_codigo1
}else if(expressao_booleana2){
bloco_de_codigo2
}else{
bloco_de_codigo3
}
*expressão_booleana - É uma combinação de operadores relacionais, operadores condicionais ou uma variavel booleana ou seja qualquer instrução ou variavel que retorne um valor booleano
*bloco_de_código1 - São as linhas de código que são executadas caso a expressao_booleana1 retorne true
*bloco_de_código2 - São as linhas de código que são executadas caso a expressao_booleana1 retorne false e a expressao_booleana2 retorne true
*bloco_de_código3 - São as linhas de código que são executadas caso a expressao_booleana1 retorne false e a expressao_booleana2 retorne false também
Você pode também alinhar blocos if/else que forão acorrentados.
Construtor switch:
Permite que você tenha varias ramificações no seu código, isso quer dizer que você tem quantas avaliações de código quiser simplificando oque o acorrentamento de if/ else if /else faz.
Ele faz o teste apenas de igualdade , não se um valor é menor ou maior que o outro e sim somente testa o valor de igualdade uma vez, UMA VEZ.
Você pode NÃO PODE ALINHAR CONSTRUTORES switch!!! Porem pode alinhar outros construtores como if/else dentro do switch!!!
switch(variavel){
case valor_literal: codigo_de_bloco;[break]
case Outrovalor_literal: codigo_de_bloco;[break]
[default:] codigo_de_bloco;
}
*switch - É uma keyword que indica a declaração de uma instrução switch
*variavel - Você pode ter apenas aqui: byte,short, int ou enum
*case - É uma keyword que indica a declaração de um valor que você esta testando, O valor é testado com o valor de valor_literal a junção de ambos(case e valor_literal) é chamada de case label
*valor_literal - São valores literais para teste, pode ser Constant(variavel final) ou então literais('b', 20) ou enum
*break - É uma keyword, é opcional, sem a instrução break quando o valor for encontrado no valor_literal todos os abaixo deles vão ser executado caso não tenha o break, ele interrompe o fluxo na hora que acha(Realmente não tem como não usar).
*default - É opcional, e caso seja testado todos os case, e não tenha sido encontrado o valor desejado, o default é executado.
***Coloque sempre o break.
Um exemplo de um bloco switch:
switch(variavel){
case valor_literal: codigo_de_bloco;break;
case Outrovalor_literal: codigo_de_bloco;
default: codigo_de_bloco;
}
Veja que usamos uma instrução com o break, e outra sem, e usamos o default também...Vemos oque acontece:
Clique na imagem para ampliar
Quando usar switch?
- Para verificação de igualdade entre valores
- Para testar apenas um valor, esse do tipo int,shot,byte, char ou enum.
Você pode NÃO PODE ALINHAR CONSTRUTORES switch!!! Porem pode alinhar outros construtores como if/else dentro do switch!!!
É hora da revisão:
- Cuidado com a Precedência de Operadores, oque for Primeiro deve ser feito primeiro, exemplo Parenteses ( )
- Para avaliação de expressões booleanos usamos Operadores relacionais e condicionais
- Em blocos de decisão podemos usar instruções de um linha ou de código de bloco:
if(boolean_expression)
i++;
if(boolean_expression){
int x = 0;
i++;
}
- boolean_expression pode ser qualquer expressão que retorne uma valor booleano(Operadores Relacionais ou condicionais) ou então uma variável booleana
- O operador Condicional && - And, avalia a primeira expressão, caso seja falsa nem avalia a segunda ou teceira etc
- O operador Condicional || - OR, avalia a primeira expressão, caso seja verdadeira nem avalia a segunda ou terceira
- Podemos alinhar blocos if e if/else
- Podemos usar if/else...Para avaliar se for verdade ou falso
- Podemos acorrentar blocos if...if...else if...else
- switch é usado somente para avaliar a igualdade de um valor, com as várias opções
- EM switch só podemos usar , byte,short,int,char ou enum
- Você pode NÃO PODE ALINHAR CONSTRUTORES switch!!! Porem pode alinhar outros construtores como if/else dentro do switch!!!
- Se não usar break em switch, ele ao achar a opção não para e continua fazendo todas as instruções abaixo dele
- Somente se escreve Instruções aonde esta escrito bloco_de_codigo, vejamos o exemplo:
int i = 2;
if(i <1){
i++;
}
int j = 3;
else{
j++;
}
Isso não é aceito!!! SOMENTE É ACEITO QUE SE ESCREVA AONDE È bloco de código!!!
Bom é isso Pessoal, Próximo post laços!!!
CYA DUDES!!!
Nenhum comentário:
Postar um comentário