NOME DURAÇÃO
Abertura do Curso de C++
Visão Geral da Linguagem C++
Instalando o Code::Blocks para Desenvolvimento C++
Instalando a IDE CLion para Desenvolvimento em C++
Primeiro Programa em C++
Comentários em C++
Indentação, Espaço em Branco e Ponto e Vírgula em C++
Variável em C++
Tipos Primitivos do C++
Características das Variáveis em C++
Manipulando Variáveis em C++
Nomenclatura de Variáveis em C++
Introdução às Stream em C++
Stream em C++
Manipulação de Dados em C++
Modificadores de Tipo em C++
Operadores Aritméticos do C++
Construindo uma Calculadora com C++
Módulo da Divisão em C++
Operadores Relacionais do C++
Tomada de Decisão em C++
Tomada de Decisão - Estrutura else em C++
Tomada de Decisão - Estrutura else em C++
Operadores Lógicos do C++
Operadores de Atribuíção do C++
Iteração em C++
Estrutura de Repetição for do C++
Operadores de Incremento e Decremento do C++
Tabuada em C++
Estrutura de Repetição while do C++
Programa em Looping em C++
Estrutura de Repetição do-while do C++
Estrutura de Seleção Múltipla switch do C++
Estrutura de Seleção Múltipla switch do C++ (parte II)
Depuração de Código C++
Depuração de Código C++ (parte II)
Depurando com o Clion Código C++
Depurando com o Code::Block Código C++
Blocos de Instrução em C++
Blocos de Instrução em C++ (parte II)
Blocos de Instrução em C++ (parte III)
Operador Ternário do C++
Operador Ternário do C++ (parte 2)
Instrução break do C++
Instrução break do C++ (parte II)
Instrução continue do C++
Precedência de Operadores do C++
Associatividade de Operadores em C++
Introdução aos Arrays em C++
Declaração de Arrays em C++
Arrays - Definições em C++
Inicialização de Arrays em C++
Percorrendo os Elementos de um Array em C++
Calculando a Média Aritmética com Arrays em C++
Arrays Multidimensionais em C++
Manipulação de Arrays Bidimensionais em C++
Laços Aninhados
Função Matricial
Manipulando Planilhas em C++
Introdução às Estruturas em C++
Utilizando struct em C++

Nesta aula estudaremos os operadores lógicos da linguagem C++, ou seja, aprenderemos como podemos construir expressões que contenham sub-expressões e assim, obter o valor lógico da relação entre várias expressões lógicas.

INTRODUÇÃO

Os Operadores Lógicos, também chamados de Conectivos Lógicos formam, 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 todas expressões lógicas. Compreender e saber aplicar ambos conceitos, significa que temos domínio da lógica elementar e, por conseguinte, o entendimento da programação.

Enquanto os Operadores Relacionais estabelecem as relações, os Conectivos irão ligar as Expressões Lógicas das relações, dando origem a novas expressões compostas por 2 ou mais sub-expressões.

Por fim, temos que programar é dizer ao computador o que deve ser feito e, os Conectivos Lógicos e os Operadores Relacionais serão os responsáveis por decidirem, ao analisar os valores, quais blocos de códigos deverão 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 formalmente, fazemos uso dos conectivos lógicos 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

#include <iostream>
#include <stdlib.h>

/*====================================
*           eXcript.com
*          fb.com/eXcript
* ====================================*/

using namespace std;

int main() {

    double nota1, nota2, nota3, nota4;
    cout << "Digite a sua primeira nota do semestre >>> ";
    cin >> nota1;
    cout << "Digite a sua segunda nota do semestre >>> ";
    cin >> nota2;
    cout << "Digite a sua terceira nota do semestre >>> ";
    cin >> nota3;
    cout << "Digite a sua quarta nota do semestre >>>  ";
    cin >> nota4;

    double soma = (nota1 + nota2 + nota3 + nota4);
    soma = (soma / 4);

    cout << "A sua media no semestre foi: " << soma << endl << endl;

    if(soma >= 7){
        cout << "Parabens! Voce foi aprovado!" << endl;
    }else{
        cout << "Eita! Voce foi reprovado!" << endl;
    }


    system("pause");
    return 0;
}


Tags curso, cpp, operador, operador lógico, conectivo, conectivo lógico, and, or, blog

Comentários

comments powered by Disqus