terça-feira, 4 de setembro de 2012

Algoritmos, introdução à lógica II

Dois mais três é igual a cinco. Poderíamos descrever muitas operações matemáticas textualmente, de fato por muito tempo elas foram feitas dessa maneira. No entanto é inegável que o uso de símbolos torna mais simples as operações. Da mesma forma a lógica tem seus símbolos e convenções, que visam facilitar o trabalho de quem a usa.

As proposições:

Os átomos, na lógica, são representado como letras minusculas do alfabeto. Já a proposição total a ser analisada  pode ser representada por uma letra maiúscula. Veja o exemplo:

A água do chuveiro está fria: Acabou o gás, ou aquecedor está no mínimo.

A proposição a ser analisada é:  "Acabou o gás, ou aquecedor está no mínimo". Temos dois átomos: 
a = "Acabou o gás" 
b = "aquecedor está no minimo"

A proposição então pode ser representada como:

A = a OU b

Conectores:

O  conector "E" é escrito na lógica matemática como "Λ". Porém, como estamos focados na área informática, usaremos "&" e "&&". O primeiro está ao nível de bits o segundo de conjunção lógica. Explicarei a diferença quando for conveniente, até lá vamos ignorar essa diferença.

Já o conector "OU" é escrito como um "V" na lógica matemática. Da mesma forma, vamos preferir a notação informática que é "|" e "||". O ou exclusivo, ou "XOR" é representado como um "V" na lógica matemática e como um "^" na informática, ao nível de bits.

O sinal de negação é, tanto na lógica matemática, quanto na informática, ao nível de bits, representado por um "~" e no nível lógico por um "!".

Exemplos:

A = a || b (a OU b)
B = a && b (a E b)
C = !a (não a)

Hierarquia das operações:

Assim como na aritmética as operações obedecem uma ordem de resolução a lógica e suas operações tem sua hierarquia.

Primeiramente são resolvidas as operações entre parênteses () , depois as entre colchetes [], as entre chaves  {} e por fim as externas. No entanto, em algoritmos computacionais, os colchetes e as chaves, em geral tem outras funções e por motivos de sintaxe só usamos os parênteses. Por isso a regra é resolver primeiro as operações nos parênteses mais internos e depois os mais externos. Ou seja, a operação:

!{a & [(b | c) | (a &d)]}

Ficaria:

!(a & ((b | c) | (a&d)))

E a ordem de operação seria:

1º) b | c
2º) a & d
3º) (b | c) | (a & d)
4º) a & ((b | c) | (a&d))
5º) !(a & ((b | c) | (a&d)))

Dentre as operações, as de negação são executadas em primeiro lugar as negações (! ou ~) e em seguida as conexões E, OU e OU exclusivo (&, | e ^). Sempre da esquerda para a direita.

Não estamos tratando delas aqui agora, mas só por curiosidade, as implicações SE  e SE E SOMENTE SE, são tratadas por último.

Tabela verdade:

A tabela verdade é uma poderosa ferramenta para analisar o valor lógico de uma proposição. Ela é simplesmente uma tabela (ou matriz) onde as colunas são constituídas pelos átomos, moléculas e finalmente a proposição inteira e as linhas são preenchidas pelos valores lógicos que os mesmos podem assumir. 

Vejamos este exemplo:

A = (a||b)&&(a&&c)

A tabela deverá ter nas 3 primeiras colunas os valores dos átomos a,b,c.  Na 4ª e na 5ª coluna as moléculas (a||b) e (a&&c) e por fim a proposição em si.

Como temos 3 átomos e cada um pode assumir apenas dois valores (verdadeiro ou falso), então para cobrir todas as combinação possíveis teremos 2x2x2, ou 2³, ou seja, 8 linhas. Com isso, podemos construir a seguinte tabela:

Tabela verdade
 Vamos preencher a primeira linha, supondo que todos os átomos são verdadeiros: 


Agora percebam: como "a" é verdadeiro e "b" é verdadeiro, "a || b" só poderá ser verdadeiro. Da mesma forma, como "a" e "c" são verdadeiros "a && c" será verdadeiro:


Como as duas moléculas são verdadeiras, a conexão das duas pelo conector "E" será verdadeira e a proposição por fim será verdadeira. 


A próxima linha será "a" e "b" verdadeiros e "c" falso, a terceira "a" e "c" verdadeiros e "b" falso e assim por diante, até cobrir todas as possibilidades. A análise das moléculas e da proposição vai variar, obviamente de acordo com o valor lógico dos átomos.

Ao final, nossa tabela ficará assim:


E com ela podemos analisar todos os resultados possíveis da proposição e a probabilidade de conseguirmos um valor verdadeiro.

Algumas tabelas verdade analisando conectores:

a E b

a OU b

a OU exclusivo b

não a
Exercícios:

"Muito que bem", vou a partir de agora passar alguns exercícios por postagem, para ajudar a fixar o conteúdo passado. As respostas aos exercícios serão postados juntos com o próximo item da série e eu estarei atento aos comentários para tirar eventuais dúvidas.

1) Se uma proposição tem "n" átomos, quantas linhas sua tabela verdade deverá ter?

2) A proposição P = (a || b) && ((a&&b)||(c||d)) gerará uma tabela verdade com quantas linhas? E quantas colunas ela deverá ter?

3) Monte as tabelas verdade das seguintes proposições:

P = (a||b) && c

Q = a || (~a)

R = a || b || c

S = a || b && c

T =  a && b || c

U  = a && b && c

V = (a||b) && ( b||c)

X = ((a&&b)||c)&&((a||d)&&(b||d))

Z = !(a||b)

A= !(a&&b)

B=!(a^b)

4) Identifique os átomos e moléculas, monte a expressão lógica usando a simbologia adequada e faça a tabela verdade das seguintes proposições:

P = Ou ela, ou eu!

Q = Aceite eu e o cachorro, ou vá dormir fora de casa.

R = Dê um jeito naquele ninho de metralhadoras e naquele cara com o lança foguetes, ou dê a volta no morro e ataque o inimigo por trás.

S = Não bocejarás e nem arrotarás!

Considerações finais:

Mais uma vez ressalto que o conteúdo aqui é adaptado. Posso ter omitido e até distorcido alguns conceitos da lógica matemática para facilitar o entendimento do leitor. Por isso se você tiver interesse em se aprofundar no assunto de fato, sugiro que procure apostilas na internet.

Na nossa próxima "aula" (prevista para 19/09), exploraremos as funções lógicas do BrOffice Calc/ MS Office Excel para construir pequenos programas.

Até mais ver.

Nenhum comentário:

Postar um comentário