Mesmo não sendo tão usado quanto outros operadores
como por exemplo o operador E (&&) e o operador OU (||),
o operador NOT (!), "negação lógica" é incrível e poderoso.
A finalidade do operador NOT está no nome :"Não em português",
isto é, negar uma condição, tornando-a ao inverso, invertendo
a lógica utilizada, se é falso passará a ser verdadeira, se é verdadeira
passará a ser falsa.
Se observarmos bem, notaremos imediatamente que os operadores && e ||,
trabalham com duas condições, logo são considerados binários, já o operador
NOT só uma condição é avaliada, ou falsa ou verdadeira,por isto é considerado unário.
Para usar o operador lógico NOT basta colocá-lo antes da condição a ser
testada, para que o resultado saia ao contrário do original.
Para esclarecer na prática o que escrevi criei este programa, onde temos
dois blocos de códigos que imprime as constantes definida por macro, que
são a que é igual 10 e b que é igual a 15.
No primeiro bloco temos um teste de igualdade, onde forcei dentro da condição
que a seria igual a b, tá mais que claro que isto jamais seria executado
desta forma porque a é menor que b, veja:
if ( ( a == b ) )
printf ( " %d %d ", a, b );
Más dentro do corpo do else vem a impressão dos valores de a e b.
Já no outro bloco depois deste usei o operador NOT que faz a negação, desmentindo
de que a seja igual a b, e se aproveitando é claro de sua precedência,
que é maior que do operador de igualdade.
Talvez o motivo de que muitos programadores não utilizem o operador NOT,
seja o fato que o mesmo possa ser substituído facilmente com poucas modificações
na condição usando o operador diferente ("!="), más isto é outra história.
Veja abaixo uma imagem do programa em execução:
Veja abaixo o código do programa:
como por exemplo o operador E (&&) e o operador OU (||),
o operador NOT (!), "negação lógica" é incrível e poderoso.
A finalidade do operador NOT está no nome :"Não em português",
isto é, negar uma condição, tornando-a ao inverso, invertendo
a lógica utilizada, se é falso passará a ser verdadeira, se é verdadeira
passará a ser falsa.
Se observarmos bem, notaremos imediatamente que os operadores && e ||,
trabalham com duas condições, logo são considerados binários, já o operador
NOT só uma condição é avaliada, ou falsa ou verdadeira,por isto é considerado unário.
Para usar o operador lógico NOT basta colocá-lo antes da condição a ser
testada, para que o resultado saia ao contrário do original.
Para esclarecer na prática o que escrevi criei este programa, onde temos
dois blocos de códigos que imprime as constantes definida por macro, que
são a que é igual 10 e b que é igual a 15.
No primeiro bloco temos um teste de igualdade, onde forcei dentro da condição
que a seria igual a b, tá mais que claro que isto jamais seria executado
desta forma porque a é menor que b, veja:
if ( ( a == b ) )
printf ( " %d %d ", a, b );
Más dentro do corpo do else vem a impressão dos valores de a e b.
Já no outro bloco depois deste usei o operador NOT que faz a negação, desmentindo
de que a seja igual a b, e se aproveitando é claro de sua precedência,
que é maior que do operador de igualdade.
Talvez o motivo de que muitos programadores não utilizem o operador NOT,
seja o fato que o mesmo possa ser substituído facilmente com poucas modificações
na condição usando o operador diferente ("!="), más isto é outra história.
Veja abaixo uma imagem do programa em execução:
Veja abaixo o código do programa:
#include <stdio.h>
#include <conio.h>
void got_color ( int tam_lin_ini, int tam_lin_fim, int tam_ini_col,
int tam_fim_col, int a, int b ) {
int i, c;
if ( a >= 1 && a <= 16 ) {
textcolor ( a );
}
if ( b >= 1 && b <= 16 ) {
textbackground ( b );
}
for ( i = tam_lin_ini; i < tam_lin_fim; i++ ) {
for ( c = tam_ini_col; c < tam_fim_col; c++ ) {
gotoxy ( c, i );
printf ( " " );
}
}
}
#define a 10
#define b 15
int main ( ) {
system ( "title OPERADOR LÓGICO NOT" );
got_color ( 2, 25, 3, 79, 9, 15 );
textcolor ( LIGHTRED );
gotoxy ( 33, 3 );
printf ( "OPERADOR LÓGICO
NOT" );
textcolor ( LIGHTBLUE );
gotoxy ( 20, 5 );
printf ( "Mensagem
abaixo vem de dentro do else" );
if ( ( a == b ) ) {
printf ( " %d %d ", a, b );
} else {
textcolor ( LIGHTBLUE );
gotoxy ( 20, 7 );
printf ( "O valor de a é
" );
textcolor ( LIGHTRED );
printf ( "%d", a );
textcolor ( LIGHTBLUE );
printf ( " e o valor de
b é " );
textcolor ( LIGHTRED );
printf ( "%d", b );
}
getche ( );
textcolor ( BLACK );
gotoxy ( 20, 9 );
printf ( "Abaixo usando
o operador NOT" );
if ( ! ( a == b ) ) {
textcolor ( LIGHTBLUE );
gotoxy ( 20, 11 );
printf ( "O valor de a é
" );
textcolor ( LIGHTRED );
printf ( "%d", a );
textcolor ( LIGHTBLUE );
printf ( " e o valor de
b é " );
textcolor ( LIGHTRED );
printf ( "%d", b );
textcolor ( LIGHTBLUE );
gotoxy ( 20, 12 );
printf ( "Porém o
operador NOT me obrigou a imprimir" );
}
Sleep ( 1800 );
textcolor ( LIGHTBLUE );
gotoxy ( 26, 14 );
Sleep ( 1800 );
printf ( "Por: " );
textcolor ( LIGHTMAGENTA );
printf ( "Samuel Lima" );
textcolor ( BLACK );
gotoxy ( 26, 15 );
printf ( "sa_sp10@hotmail.com" );
Sleep ( 1800 );
textcolor ( LIGHTRED );
gotoxy ( 37, 23 );
printf ( "MUITO
OBRIGADO" );
getche ( );
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.