domingo, 21 de agosto de 2016

Operador lógico E

Mesmo não tendo nenhuma ligação um com o outro, o símbolo para ( AND bit a bit ) e o símbolo de
o ( endereço de ) são o mesmo e isto é uma pena,
e pode trazer confusões na mente de quem quer conhecer a fundo o assunto.
Quando estamos usando ponteiros o operador que devolve o endereço de memória e que é
considerado unário é justamente o "&".
Quando queremos testar condições, aliás o C é assim, estamos sempre avaliando situações em
busca de resultados positivos ou negativos, usamos os operadores relacionais e lógicos cujo
resultados são ( 0 ou 1 ).
Esta é a concentração dos operadores lógicos e relacionais de C, dizer se as
sentenças são verdadeiras ou falsas tomando uma decisão para cada uma, na verdade qualquer
valor que não seja zero é verdadeiro, sendo unicamente falso o zero.
No nosso caso estamos falando do operador lógico E que é reprensentado por
dois (&&) e que alguns chamam de "e comercial".
O aprendiz de C notará facilmente que estamos testando se duas condições são verdadeiras,
quando dois números são gerados imediatamente são copiados nas
variáveis inteiras a e b, e são testados.
Embora o destaque maior é para o operador lógico E, o programa conta com um eficiente
gerador de números aleatórios na faixa de 1 a 9, sendo aproveitado somente dois por vez,
e é finalizado na nona operação.
Para saber mais, copie o código e compile em sua IDE, e veja que clareza
de exemplo do operador lógico E,
onde muitos o utilizam sem saber ao certo sua utilidade.

Veja abaixo uma imagem do programa em execução:



Veja abaixo o código do programa:

#include <conio.h>
#include <stdio.h>
#include <time.h>
#define tam 9
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 ( " " );
         }
     }
}
int main ( ) {
     system ( "title OPERADOR LÓGICO E" );
     got_color ( 2, 25, 3, 79, 9, 15 );
     int a, b;
     int aut, *A, i, j, x;
     int t;
     x = 0;
     do {
         srand ( time ( NULL ) );
         A = ( int* ) malloc ( tam * sizeof(int) );
         for ( i = 0; i < tam; i++ ) {
              do {
                   do {
                        t = rand ( ) % tam;
                        if ( t == 0 ) {
                            t = tam;
                        }
                        break;
                   } while ( 1 );
                   aut = 0;
                   for ( j = 0; j < 2; j++ )
                        if ( t == A [ j ] )
                            aut = 1;
                   if ( aut == 0 ) {
                        A [ i ] = t;
                   }
              } while ( aut == 1 );
         }
         textcolor ( LIGHTRED );
         gotoxy ( 33, 3 );
         printf ( "OPERADOR LÓGICO E" );
         textcolor ( LIGHTBLUE );
         gotoxy ( 33, 5 );
         printf ( "Números gerados" );
         for ( i = 0; i < 2; i++ ) {
              a = A [ 0 ];
              b = A [ 1 ];
         }
         textcolor ( LIGHTRED );
         printf ( " %d ", A [ 0 ] );
         textcolor ( LIGHTBLUE );
         printf ( "e" );
         textcolor ( LIGHTRED );
         printf ( " %d ", A [ 1 ] );
         if ( ( a % 2 == 0 ) && ( b % 2 == 0 ) ) {
              textcolor ( LIGHTBLUE );
              gotoxy ( 22, 7 );
              printf ( "Gerados dois números pares" );
         } else if ( ( a % 2 == 1 ) && ( b % 2 == 1 ) ) {
              textcolor ( LIGHTBLUE );
              gotoxy ( 22, 7 );
              printf ( "Gerados dois números ímpares" );
         } else if ( ( a % 2 == 1 ) && ( b % 2 == 0 ) ) {
              textcolor ( LIGHTBLUE );
              gotoxy ( 22, 7 );
              printf ( "Gerados um número ímpar e um par" );
         } else if ( ( b % 2 == 1 ) && ( a % 2 == 0 ) ) {
              textcolor ( LIGHTBLUE );
              gotoxy ( 22, 7 );
              printf ( "Gerados um número par e um ímpar" );
         }
         getche ( );
         x++;
         if ( x == 9 ) {
              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 ( );
         }
         gotoxy ( 22, 7 );
         clreol ( );
     } while ( x < 9 );
     free ( A );
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.