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.
- Conectivo de conjunção
- 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