Nesta aula estudaremos os operadores lógicos do C#, como também, as suas utilizações, significados e a maneira como devemos utilizá-los. Também desenvolveremos exemplos demonstrando o funcionamento dos Conectivos Lógicos, ligando expressões que possuem Operadores Relacionais.

INTRODUÇÃO

Os Operadores Lógicos, também chamados de Conectivos Lógicos são, junto com os Operadores Relacionais, a base lógica da filosofia, matemática e programação. Por isso, estes conceitos são as ferramentas que utilizaremos na construção de praticamente todas condições. Compreender e saber aplicar ambos conceitos, significa, ter domínio da lógica, e por conseguinte, o entendimento da programação.

Enquanto os Operadores Relacionais estabelecem as relações, os Conectivos ligam os Valores Lógicos das relações dando origem a novas expressões, isto é, expressões que contém sub-expressões.

Programar é dizer ao computador o que deve ser feito, e os Conectivos Lógicos e os Operadores Relacionais são os que decidem, analisando valores, quais blocos devem ser executados.

CONECTIVOS LÓGICOS

Os operadores lógicos unem 2 ou mais expressões, dando origem a uma nova expressão que será avaliada independentemente. O resultado lógico será a avaliação de cada sub-expressão. Toda expressão lógica avaliada resulta num valor chamado de valor lógico.

Com os operadores relacionais verificamos relações entre o operando a esquerda com o operando a direita do operador relacional. Como resposta a cada expressão avaliada, teremos um valor Booleano, isto é, verdadeiro (True) ou falso (False).

Os conectivos lógicos permitem a união de 2 ou mais expressões, e assim, temos uma nova expressão e seu valor lógico será o resultado das sub-expressões juntas.

VALOR LÓGICO

O valor lógico é a base de toda a computação. Há 2 valores lógicos possíveis: verdadeiro ou falso, também chamado de ligado ou desligado. Os 2 valores lógicos possíveis são representados matematicamente pelos números 0 (falso) e 1 (true).

Toda expressão avaliada na computação de maneira geral, resulta num valor lógico, isto é, ou a expressão é verdadeira, ou a expressão é falsa.

CONECTIVOS LÓGICOS

As linguagens de programação, utilizam os conectivos lógicos da lógica formal, ou melhor da lógica Aristotélica para a construção de expressões. Existem 2 conectivos e mesmo que não os conheçamos como conectivos lógicos, utilizamo-os constantemente.

  1. Conectivo de conjunção
  2. Conectivo de disjunção
Expressão Português C#
conjunção E &&
disjunção OU ||

Por exemplo, a simples frase A e B são caracteres iguais implica numa expressão lógica que foi representada textualmente. Porém, está pode ser facilmente escrita matematicamente, ou então, com o uso qualquer linguagem de programação.

É por isso que temos que olhar para as Linguagens de Programação, como sendo formas ou estilos de Notação, que utilizamos para representar e em seguida executar expressões numa sequência determinada.

A notação matemática não é diferente, porém, a mesma é comumente utilizada para representar sentenças matemáticas, logo, é uma notação que possui um objetivo diferente e que tem um propósito diferente. A linguagem C# não permite não contempla a notação matemática, por isso, temos que utilizar a notação aqui estudada.

Por fim, os conectivos lógicos devem ser entendidos como ferramentas de notação utilizadas para unir expressões.

AVALIAÇÃO DE EXPRESSÕES

O interpretador .NET avalia cada proposição (expressão) isoladamente e atribui a esta um dos 2 valores lógicos.

Por padrão, todas as expressão são avaliadas se são ou não verdadeiras.

TABELA DE VALORES LÓGICOS

A Tabela de Valores Lógicos é uma tabela que mostra o resultado da avaliação de 2 valores lógicos. É importante observar que essa tabela NÃO uma convenção, mas sim, o resultado da dedução lógica e que você pode facilmente comprovar cada resultado através da analise de cada proposições.

TABELA COM O CONECTIVO DE CONJUNÇÃO E

Na tabela a seguir está sendo comparado 2 valores lógicos unidos pelo conectivo E. Devemos ler cada linha da seguinte maneira:

O valor lógico de (X e Y) é Z.

Expressão Resultado
True E True True
True E False False
False E True False

TABELA COM O CONECTIVO DE DISJUNÇÃO OU

Na tabela a seguir está sendo comparado 2 valores lógicos unidos pelo conectivo OU. Devemos ler cada linha da seguinte maneira:

O valor lógico de (X ou Y) é Z.

Expressão Resultado
True OU False True
False OU True True
True OU True True
False OU False False

O CONECTIVO DE CONJUNÇÃO E

O Conectivo Lógico de Conjunção || une a expressão a sua esquerda com a expressão a sua direita. Expressões com o uso do Conectivo de Conjunção dão origem a frases em Português, mais ou menos assim: X é verdadeiro e Y é verdadeiro?

Nas situações em que A for verdadeiro e B também, o resultado, segundo a tabela lógica, será também verdadeiro.

int x = 1;
Console.WriteLine( (x > 0) && (x < 100) );

No exemplo acima, temos uma expressão lógica composta constituida por 2 expressões lógicas simples e ligadas pelo conectivo de conjunção.

Primeira expressão simples : (var1 == 0) Segunda expressão simples: (var1 == 0) Conectivo lógico de conjunção: &&

Para analisarmos uma expressão lógica composta, precisamos antes, analisar suas expressões lógicas simples.

A primeira expressão, está perguntando se o valor da variável x é maior do que zero. A variável x está declarada na linha acima e inicializada com o valor 1, por isso, a primeira expressão é verdadeira.

A segunda expressão, pergunta se o valor da variável x é menor do que 100. O valor da variável x é igual a 1 e por isso é menor do que 100. Analisado ambas expressões,acabamos por ter uma nova expressão, como pode ser visto abaixo.

(True) && (True)

No código acima, temos a mesma expressão do exemplo anterior, porém, substituirmos as duas expressões lógicas simples pelos seus respectivos valores lógicos, isto é, o valor decorrente da análise lógica.

A expressão (True) && (True) se comparada com a Tabela Lógica de Valores, tem-se que o valor decorrente dessa segunda análise, constituida por 2 valores lógicos ligados pelo conectivo de ligação E, será o valor lógico True.

CONECTIVO ( OU )

O conectivo lógico de disjunção OU liga a expressão a sua esquerda a expressão a sua direita. Expressões com o uso do conectivo de disjunção dão origem a frases em Português, mais ou menos assim: X é verdadeiro ou Y é verdadeiro?

O operador lógico OU sempre precisará que uma das 2 expressões simples avaliadas sejam verdadeiras para que avaliação seja verdadeira. No caso onde ambas expressões simples forem verdadeiras, o resultado também será verdadeiro, porém, se ambas expressões forem falsas, o resultado lógico será falso.

int x = 1;
(x > 10) || (x < 100)

A expressão lógica composta que temos no código acima, será desmembrada como estudado anteriormente, e agora, para que a avaliação seja verdadeira, uma das 2 expressões precisam ser verdadeiras.

A primeira expressão verifica se (x > 10). A variável``x`` está declarada na linha acima e inicializada com o valor igual a 1, logo, essa expressão é falsa, até porque, o valor de x não é maior do que 10.

A segunda expressão (x < 100) está perguntando se o valor da variável x é menor do que o número 100. Essa expressão é verdadeira, até porque, o número 1 é menor do que o número 100.

No código a seguir, temos a expressão que será originadas a partir do código anterior.

(False) || (True)

Agora, temos que o primeiro valor lógico é falso, enquanto o segundo é verdadeiro. Esses valores estão ligados pelo conectivo de disjunção utilizado para avaliar se uma das expressões é verdadeira. Como o segundo valor lógico é verdadeiro, o valor decorrente dessa análise lógica será verdadeiro.

EXPRESSÕES SIMPLES E COMPOSTAS

Os operadores relacionais obtém a relação entre os operandos e por isso, podemos chamar esse tipo de expressão como sendo, expressões simples.

As expressões compostas, por sua vez, são a união de 2 ou mais expressões simples e ligadas por um conectivo lógico. A seguir, temos um exemplo utilizando o conectivo lógico de conjunção unindo assim, 2 expressões e dando origem a uma nova expressão lógica.

//  EXEMPLO
(isso) E (isso)

// A EXPRESSAO ACIMA ORIGINOU:
x E y

Como podemos ver, em ambos exemplos, estamos unindo 2 membros, mas não estamos perguntando nada. Porém, a frase correta e que é utilizada pela grande maioria das linguagens de programação, senão todas, é a seguinte:

"A" é verdadeiro e "B" é verdadeiro. Chamamos isso de expressão lógica ou melhor, expressão lógica composta até porque, a expressão se origina de duas outras expressões.

CONSTRUINDO EXPRESSÕES

A linguagem C# possui algumas regras sintáticas para uso dos Conectivos Lógicos. Quando ligamos 2 ou mais expressões, devemos envolver todas as expressões com parêntesis, por exemplo:

int num = 0;
if (num >= 0 && num <= 10)
{

}

No código acima, no cabeçalho da tomada de decisão, definimos 2 expressões. A primeira num >= 0 e a segunda num <= 10. Devido ao fato que ambas expressões foram ligadas com um Conectivo Lógico, foi necessário envolver a expressão originada com parêntesis.

Da mesma forma, não é permitido isolar cada expressão sem não envolver ambas com parêntesis. O código a seguir não compila, até porque, as expressões que estão sendo ligadas pelo operador && não estão agrupadas com parêntesis.

int num = 0;
if (num >= 0) && (num <= 10)
{

}

O código a seguir, corrige o problema do código acima, isolando cada expressão com parêntesis e delimitando a expressão resultante também.

int num = 0;
if ( (num >= 0) && (num <= 10) )
{

}

EXEMPLO FEITO EM AULA

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Aula
{
    class Program
    {
        static void Main(string[] args)
        {
            //=========== eXcript.com ===========
            //======== NetCoders.com.br  ========

            //CONECTIVOS LÓGICOS

            int num = 0;
            Console.WriteLine("Informe um número no intervalo de 20 à 30.");
            num = Convert.ToInt32( Console.ReadLine() );

            if(num > 20 && num < 30)
            {
                Console.WriteLine("O número está no intervalo.");
            }
            else
            {
                Console.WriteLine("Número incorreto!");
            }
        }
    }
}


Tags curso, csharp

Comentários

comments powered by Disqus