Sítio do Piropo

B. Piropo

< Coluna em Fórum PCs >
Volte
04/07/2005

< Computadores III: Lógica digital >
<
e Álgebra booleana
>


Lógica digital

Todo o raciocínio lógico é baseado na tomada de uma decisão a partir do cumprimento de determinadas condições. Inicialmente tem-se os dados de entrada e uma condição ( ou uma combinação de condições). Aplica-se a condição aos dados de entrada para decidir quais são os dados de saída. Talvez o exemplo mais célebre e mais sucinto disto seja o conhecido apotegma de Descartes: “Penso, logo existo”. O fato de pensar (dado de entrada) levou Descartes à constatação de sua existência (dado de saída).

A lógica digital não é diferente. Mas apresenta uma peculiaridade: trabalha apenas com variáveis cujos valores alternam exclusivamente entre dois estados e não admitem valores intermediários. Estes estados podem ser representados por “um” e “zero”, “sim” e “não”, “verdadeiro” e “falso” ou quaisquer outras grandezas cujo valor possa assumir apenas um dentre dois estados possíveis. Portanto, a lógica digital é a ferramenta ideal para trabalhar com grandezas cujos valores são expressos no sistema binário.

Para entender a lógica digital usemos como exemplo o estatuto do Clube do Bolinha. Quem desejar informações mais detalhadas pode consultar a literatura especializada (recomenda-se a coleção de revistas “Luluzinha”, ver Figura 1), porém isso dificilmente será necessário, uma vez que o referido estatuto é singelo e consiste de um único artigo, excludente: “Menina não entra”. Esta é a condição.

Figura 1: Bolinha e Luluzinha

O dado de entrada é a situação daquele que se propõe a entrar no clube em relação à condição de ser menina. O dado de saída, ou seja, a decisão sobre o fato do pretendente poder ou não entrar no Clube, é obtido mediante a aplicação da condição ao dado de entrada. É menina? Sim ou não? A decisão é “sim” se o pretendente “não” for menina. E será “não” se, “sim”, o pretendente for menina. Este é um exemplo da mais simples das condições, na qual há apenas um dado de entrada e o dado de saída é exatamente o oposto dele: um “sim” gera um “não” e um “não” gera um “sim”. Esta condição é representada pela porta lógica NOT (o advérbio “não” em inglês).

Agora vamos dar um passo adiante. Imaginemos que o Sr. Bolinha decidiu dar uma festa para os membros do clube, porém resolveu cobrar o ingresso para cobrir os custos do evento. Portanto, para entrar, além de ser membro, há que comprar um ingresso. Numa situação como essa a condição é mais complexa. Os dados de entrada agora são dois: a situação do pretendente em relação ao fato de ser membro do clube ( sim ou não) e a posse do ingresso ( sim ou não). Para que o dado de saída seja “sim”, ou seja, para que o pretendente ingresse na festa, ele tem que cumprir AMBAS as condições. Não basta ser membro do clube (“sim” para a primeira condição) se não possui o ingresso (“não” para a segunda). Nem basta possuir o ingresso (“sim” para a segunda condição) se não é membro (“não” para a primeira). A decisão, como sempre, é tomada submetendo os dados de entrada à condição. Para uma decisão “sim” que garante a entrada na festa é preciso, ao mesmo tempo, “sim”, ser membro do clube e, “sim”, dispor do ingresso. Ou seja, a saída somente será “sim” se ambos os dados de entrada forem “sim”. Esta condição é representada pela porta lógica AND (a conjunção aditiva “e” em inglês).

Tomemos ainda outro exemplo. Imaginemos que os membros do clube tenham levado ao Presidente um reclamo: sendo eles membros, e sendo a festa no clube, por que razão teriam que pagar ingresso? O Sr. Bolinha considerou o pleito justo, mas alegou que ainda assim precisaria de recursos para cobrir os custos. Decidiu-se então abrir o evento à toda a comunidade e não apenas aos membros do clube, cobrando o ingresso apenas dos que não fossem membros. Então, para entrar, seria necessário ou ser membro do clube ou comprar um ingresso. Cumprida qualquer uma das duas condições, seja qual for, o pretendente poderia entrar, independentemente da outra. Examinemos a primeira condição. Comprou ingresso? Sim ou não? Se “sim”, a primeira condição está cumprida e a decisão é “sim”, o pretendente pode entrar, independentemente de ser ou não sócio do clube. Mas imaginemos que, “não”, ele não comprou o ingresso. Examinemos então a segunda condição. É membro do clube? Sim ou não? Se “sim”, a segunda condição foi cumprida e “sim”, ele pode entrar mesmo sem ingresso. Em um caso como este, para que o dado de saída seja “sim” basta que um dos dados de entrada seja “sim”. Esta condição é representada pela porta lógica OR (a conjunção alternativa “ou” em inglês).

Em um computador, todas as operações são feitas a partir de tomadas de decisões que, por mais complexas que sejam, nada mais são que combinações das três operações lógicas correspondentes às condições acima descritas: NOT, AND e OR. Para tomadas de decisões mais complexas, tudo o que é preciso é combinar estas operações. E para isto é necessário um conjunto de ferramentas capaz de manejar variáveis lógicas.

Esse conjunto de ferramentas é a chamada “Álgebra Booleana”.

Álgebra booleana

A álgebra booleana recebeu seu nome em homenagem ao matemático inglês George Boole, que a concebeu e publicou suas bases em 1854, em um trabalho intitulado “An Investigation of the Laws of Thought on Which to Found the Mathematical Theories of Logic and Probabilities”. O trabalho, evidentemente, nada tinha a ver com computadores digitais, já que foi publicado quase um século antes que eles fossem inventados. Era meramente uma tratado sobre lógica, um dos muitos exemplos em que os matemáticos se adiantam ao tempo e criam com décadas de avanço as bases abstratas para uma tecnologia de ponta que só vai ser “descoberta” muitos anos depois. De fato, foi somente em 1938 que Claude Shannon, um pesquisador do MIT, se deu conta que a lógica booleana era a ferramenta ideal para analisar circuitos elétricos baseados em relés, os antecessores imediatos dos computadores eletrônicos digitais à válvula – que por sua vez originaram os modernos computadores que empregam a eletrônica do estado sólido.

Não cabe aqui um estudo aprofundado da álgebra booleana. Por isso abordaremos apenas os conceitos fundamentais que nos permitirão mais tarde entender como eles serão utilizados internamente nos computadores. Mas para quem quiser se aprofundar no assunto, há farto material disponível tanto na literatura técnica especializada quanto na Internet. Aqui, repito, ficaremos apenas nos conceitos mais gerais.

A álgebra booleana é semelhante à álgebra convencional que conhecemos no curso secundário, o ramo da matemática que estuda as relações entre grandezas examinando as leis que regulam as operações e processos formais independentemente dos valores das grandezas, representadas por “letras” ou símbolos abstratos. A particularidade da álgebra booleana é que ela estuda relações entre variáveis lógicas que podem assumir apenas um dentre dois estados opostos, “verdadeiro” ou “falso”, não admitindo nenhum valor intermediário.

Da mesma forma que a álgebra convencional, a álgebra booleana utiliza operações que são executadas com suas variáveis. A diferença é que estas operações somente podem agir sobre variáveis lógicas, portanto são operações lógicas.

As razões pelas quais a álgebra booleana é a ferramenta ideal para analisar problemas de lógica digital tornam-se evidentes assim que se tomam conhecimento de suas operações.

Da mesma forma que há apenas quatro operações fundamentais na aritmética, há apenas três operações fundamentais na álgebra booleana. Estas operações são AND, OR e NOT.

Operação AND pode ser aplicada a duas ou mais variáveis ( que podem assumir apenas os valores “verdadeiro” ou “falso”). A operação AND resulta “verdadeiro” se e apenas se os valores de ambas as variáveis A e B assumirem o valor “verdadeiro”.

Operação OR também pode ser aplicada a duas ou mais variáveis ( que podem assumir apenas os valores “verdadeiro” ou “falso”). A operação OR resulta “verdadeiro” se o valor de qualquer uma das variáveis A ou B assumir o valor “verdadeiro”.

A operação NOT é unária, ou seja, aplicável a uma única variável. A operação NOT inverte o valor da variável. Ela resulta “verdadeiro” se a variável assume o valor “falso” e resulta “falso” se a variável assume o valor “verdadeiro”.

Destas três operações fundamentais podem ser derivadas mais três operações adicionais, as operações NAND, NOR e XOR ( ou OR exclusivo).

A operação NAND é obtida a partir da combinação das operações NOT e AND usando a relação: A NAND B = NOT (A AND B). A operação NAND resulta “falso” se e apenas se os valores de ambas as variáveis A e B assumirem o valor “verdadeiro”.

A operação NOR é obtida a partir da combinação das operações NOT e OR usando a relação: A NOR B = NOT (A OR B). A operação NOR resulta “verdadeiro” se e apenas se os valores de ambas as variáveis A e B assumirem o valor “falso”.

A operação, XOR ou “OR exclusivo” é um caso particular da função OR. Ela é expressa por: A XOR B. A operação XOR resulta “verdadeiro” se e apenas se exclusivamenteuma das variáveis A ou B assumir o valor “verdadeiro” (uma outra forma, talvez mais simples, de exprimir a mesma idéia é: a operação XOR resulta “verdadeiro” quando os valores da variáveis A e B forem diferentes entre si e resulta “falso” quando forem iguais).

Uma forma mais simples de analisar e entender as operações da lógica booleana é através da chamada “tabela verdade”. Uma tabela verdade é a lista de todos os possíveis resultados da operação. Ela pode ser obtida considerando todas as combinações possíveis de todos os valores dos operandos. Como cada operando somente pode assumir os valores “verdadeiro” ou “falso”, é muito fácil construir uma tabela verdade.

Vejamos um exemplo. Imagine que aplicamos a operação lógica AND a duas variáveis, A e B. Cada variável só pode assumir os valores “verdadeiro” ou “falso”. Nosso conhecimento de lógica booleana nos diz que para que o resultado de A AND B seja verdadeiro, AMBOS os operandos devem ser verdadeiros, ou seja:

Figura 2: A AND B
(para A e B verdadeiros)

No entanto, existem outras combinações possíveis para os valores de A e B. Porém sabemos que todas resultam “falso”. Elas estão listadas na Figura 3:

Figura 3: A AND B
(outras combinações de valores)

Logo, a tabela verdade completa da operação AND é:

Figura 4: Tabela verdade operação AND

Para simplificar, representemos o valor “verdadeiro” por “um” e “falso” por “zero”. A tabela verdade fica, então:

Figura 5: Tabela verdade da operação AND

Raciocínio idêntico pode ser feito para as demais operações. O resultado pode ser visto na Figura 6, que exibe a tabela verdade de todas as operações lógicas:

Figura 6: Tabela verdade (diversas operações)

Semelhantemente à álgebra convencional, também na álgebra booleana é possível combinar variáveis e operadores para gerar complexas expressões algébricas que podem ser avaliadas. O valor da expressão é obtido atribuindo-se valores às variáveis e efetuando-se as operações indicadas ( como na álgebra convencional, na álgebra booleana os parênteses indicam a ordem de precedência de avaliação dos termos).

Por exemplo, a expressão algébrica (da álgebra convencional):

(A / B) +C

vale 5 quando as variáveis assumem os valores A=9, B=3 e C=2.

As expressões da álgebra booleana podem ser avaliadas de forma semelhante. A diferença básica é que suas operações são as operações lógicas previamente definidas e os valores a serem atribuídos ( tanto à expressão quanto às variáveis) alternam somente entre “verdadeiro” ( ou 1) e “falso” ( ou 0).

Tomemos como exemplo uma expressão simples, como:

(A OR B) AND (NOT C)

e vamos determinar o valor da expressão quando as variáveis valem:

A = 0

B = 1

C = 1

Para tanto, efetuemos inicialmente a avaliação do primeiro termo entre parênteses. Trata-se de uma operação OR executada entre duas variáveis cujos valores são A = 0 e B = 1. Um exame da tabela verdade das operações lógicas indica que

0 OR 1 = 1

Em seguida executa-se a operação NOT na variável C, e ainda conforme a mesma tabela:

NOT 1 = 0

Finalmente executa-se a operação AND envolvendo os dois resultados parciais.

1 AND 0 = 0

Este é o valor da expressão para estes valores das variáveis.

As regras básicas da álgebra booleana são simples. As operações são apenas seis (NOT, AND, OR, NAND, NOR E XOR). Os valores possíveis, tanto para as variáveis quanto para as expressões, são apenas dois (1 ou 0). No entanto, expressões obtidas combinando operações que envolvem um grande número de variáveis podem atingir um grau de complexidade notável. Não obstante, sua avaliação é sempre feita decompondo-se a expressão em operações elementares respeitando-se a ordem de precedência indicada pelos parênteses, avaliando as operações elementares e combinando-se seu resultado. A avaliação pode ser trabalhosa, mas não difícil.

Em princípio, as bases da álgebra booleana são as acima resumidas.

Com os conhecimentos da álgebra booleana podemos analisar todos os fenômenos relativos à lógica digital que rege as operações internas dos computadores. O que nos falta agora é um meio físico de implementar os circuitos eletrônicos baseados nessa lógica.

B. Piropo