terça-feira, 23 de agosto de 2016

Operador lógico NOT

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:

#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.