Seguinte, estou começando a programar em Java, mas estou com problema referente a Lógica, devido a não fazer exercícios usando operador de Negação
ou NOT !.
Não ter o custume de usar esse operador, não estou entendendo, e não estou sabendo quando usar ele, e como?
Não estou entendendo como funciona esse operador lógico!?
Não estou sabendo em qual situação eu devo usar!?
Tipo como saber qual é a hora certa de usar esse operador lógico? em quais situações?
Espero que alguém me ajude, de forma mais simples possível para que eu consiga entender!
Muito obrigado a todos que responderem, abraço. Té +
posso estar enganado, mas isso tem cara de trabalho de faculdade…
esse operador vai negar uma condição sua
if (a == b) {
//a é igual a b
}
...
if (a != b) {
//a não é igual a b
}
dê uma estudada em lógica de programação que vc vai entender melhor, caso isso não sirva…
[quote=erico_kl]posso estar enganado, mas isso tem cara de trabalho de faculdade…
esse operador vai negar uma condição sua
if (a == b) {
//a é igual a b
}
...
if (a != b) {
//a não é igual a b
}
dê uma estudada em lógica de programação que vc vai entender melhor, caso isso não sirva…[/quote]
Ola erico_Kl,
Você está enganado, pois não é trabalho de faculdade, pois ainda não faço faculdade!
Entendi as duas condições que voce demostrou!
Si a for a for == a b , executa o que tem dentro do bloco if
Si a for diferente de b, executa o que tem dentro do bloco if
Mas estou querendo saber sobre o OPERADOR LÒGICO DE NEGAÇÂO ! com exemplos, de resoluçao de exercício que eu necessite usar esse operador de NEGAÇÂO ou NOT !
Um exemplo é quando vc tem uma variável boolean e quer fazer uma condição quando ela é verdadeira ou falsa…
//Crio e inicializo uma variável do tipo boolean como verdadeira
boolean teste = true;
//Programa executa
.
.
.
//Se teste for true, não preciso colocar == true
if(teste){
.
.
.
}
//Da mesma forma com a negação - Esse trecho verifica se NÃO teste, ou seja, se a variável teste está setada como false
if(!teste){
.
.
.
}
você vai usar muito este operador…
um exemplo da classe String, imagine que vc queira fazer alguma operação mas SOMENTE SE a String contiver alguma coisa. A classe String possui o método isEmpty() que retorna verdadeiro caso a mesma esteja vazia, porém ela não contém um isNotEmpty() pra retornar verdadeiro caso ela esteja preenchida. O que você faz? Nega o método isEmpty():
String str = "bla bla bla";
if (!str.isEmpty()) {
//neste ponto vc tem certeza que a String contém alguma coisa..
}
entendeu?
Vamos lá.
Você estudou operadores lógicos (or, and, xor, nxor, nand, nor)?
Bem, se sim, então o ! tem a mesma função de um nand. Explico. Um and irá aceitar como verdadeiro tudo o que tiver, em ambos operandos, verdadeiro.
A saber
A B R
1 V V V
2 V F F
3 F V F
4 F F F
O nand inverte esta condição, ou seja, irá aceitar como verdadeiro tudo que não tiver 2 verdadeiros.
Esta é a função do !, inverter o retorno de uma verificação booleana (e apenas booleana).
Portanto
boolean a = true;
if(!a == false){
System.out.println("Nand");
}
Irá compilar e a saída será Nand.
Esta mesma lógica explica o !=
int a = 10;
int b = 2;
while(a != b){
a--;
System.out.println(a);
}
[quote=ismaelsoj]Um exemplo é quando vc tem uma variável boolean e quer fazer uma condição quando ela é verdadeira ou falsa…
//Crio e inicializo uma variável do tipo boolean como verdadeira
boolean teste = true;
//Programa executa
.
.
.
//Se teste for true, não preciso colocar == true
if(teste){
.
.
.
}
//Da mesma forma com a negação - Esse trecho verifica se NÃO teste, ou seja, se a variável teste está setada como false
if(!teste){
.
.
.
}
Espero ter ajudado.
[/quote]
Hum, entendi ismaelsoj, valeu pela ajuda amigo!
Agora eu terei que fazer exercícios para poder fixar bem o conceito!
[quote=drsmachado]Vamos lá.
Você estudou operadores lógicos (or, and, xor, nxor, nand, nor)?
Bem, se sim, então o ! tem a mesma função de um nand. Explico. Um and irá aceitar como verdadeiro tudo o que tiver, em ambos operandos, verdadeiro.
A saber
A B R
1 V V V
2 V F F
3 F V F
4 F F F
O nand inverte esta condição, ou seja, irá aceitar como verdadeiro tudo que não tiver 2 verdadeiros.
Esta é a função do !, inverter o retorno de uma verificação booleana (e apenas booleana).
Portanto
boolean a = true;
if(!a == false){
System.out.println("Nand");
}
Irá compilar e a saída será Nand.
Esta mesma lógica explica o !=
int a = 10;
int b = 2;
while(a != b){
a--;
System.out.println(a);
}
Irá imprimir 10 9 8 7 6 5 4 3
Entendeu?[/quote]
Hum, entendi drsmachado, só terei agora que fazer exercicios usando esse operador NOT, para poder fixar realmente os conceitos.
Obrigado, e tudo de bom!
[quote=wellington.nogueira]O uso dela é mais claro quando você deve tratar, exclusivamente uma situação quando a mesma for false.
O operador de negação inverte o valor booleano de true para false e vice-versa e faz com que evite-se contruções “tortas” como essa:
if(metodoQueRetornaBooleano()) {
//Se for true, não preciso fazer nada
} else {
//Se for false, executo alguma lógica
}
Você leria esse código da seguinte maneira: Se o método metodoQueRetornaBooleano() retornar true, faça nada. Se o método metodoQueRetornaBooleano() retornar false, faça algo.
Essa mesma condição passa a ser mais limpa (ou como alguns preferem: elegante)
[quote=erico_kl]você vai usar muito este operador…
um exemplo da classe String, imagine que vc queira fazer alguma operação mas SOMENTE SE a String contiver alguma coisa. A classe String possui o método isEmpty() que retorna verdadeiro caso a mesma esteja vazia, porém ela não contém um isNotEmpty() pra retornar verdadeiro caso ela esteja preenchida. O que você faz? Nega o método isEmpty():
String str = "bla bla bla";
if (!str.isEmpty()) {
//neste ponto vc tem certeza que a String contém alguma coisa..
}
entendeu?[/quote]
Hum, erico_kl , agora sim, pois con exemplos , conseguimos entender realmente os conceitos empregados!
Agora basta eu treinar , fazendo exercícios ae, fixo de vez os conceitos.
O uso dela é mais claro quando você deve tratar, exclusivamente uma situação quando a mesma for false.
O operador de negação inverte o valor booleano de true para false e vice-versa e faz com que evite-se contruções “tortas” como essa:
if(metodoQueRetornaBooleano()) {
//Se for true, não preciso fazer nada
} else {
//Se for false, executo alguma lógica
}
Você leria esse código da seguinte maneira: Se o método metodoQueRetornaBooleano() retornar true, faça nada. Se o método metodoQueRetornaBooleano() retornar false, faça algo.
Essa mesma condição passa a ser mais limpa (ou como alguns preferem: elegante)