Aldeia Numaboa
Um portal diferente em Português do Brasil
Informática da Aldeia

Tutoriais
Home Informática Tutoriais Art of Assembly AoA - Cap.2 - Programação e equações booleanas

Na Aldeia

Há 88 visitantes online

2775 registros
4 hoje
14 nesta semana
55 neste mês

Boas vindas: lvcivs

Estatística

Artigos: 823
Artigos lidos: 3848717
Arquivados: 41
Downloads: 410
Baixados: 161053
Glossário: 1196
Bibliografia: 24
JoomlaWatch Stats 1.2.7 by Matej Koval

Visitas de onde?

88,2%Brasil Brasil
9,2%Portugal Portugal
0,8%EUA EUA
0,2%Espanha Espanha
0,1%Alemanha Alemanha

Visitantes

Hoje: 437
Ontem: 1831
Esta semana: 8757
Semana passada: 13257
Este mês: 38498
Mês passado: 49141
Total: 104218

Registro/Login

Para fazer login ou registrar-se

Usuários registrados têm algumas regalias!

Sex

23

Fev

2007


11:06

AoA - Cap.2 - Programação e equações booleanas PDF Imprimir Indique esta página
Avaliação: / 1
PiorMelhor 
Tutoriais - Art of Assembly
Escrito por vovó Vicki   


Nível intermediário O que é que as equações booleanas têm a ver com programação?

Se tivermos registradores, contadores e registradores de deslocamento, podemos construir máquinas de estado. A implementação de um algoritmo no hardware utilizando máquinas de estado está fora do escopo deste texto contudo, um ponto importante referente a este sistema eletrônico precisa ser destacado - qualquer algoritmo que possa ser implementado em software também pode ser implementado diretamente em hardware. Isto sugere que a lógica booleana é a base da computação em todos os sistemas modernos de computadores e que podemos classificar qualquer programa como uma sequência de equações booleanas.

É claro que é muito mais difícil elaborar uma solução para um problema de programação utilizando equações booleanas do que usando linguagens como C, Pascal ou até mesmo a linguagem Assembly. Exatamente por este motivo não é razoável implementar um programa inteiro utilizando um conjunto de máquinas de estado e outros sistemas de circuitos eletrônicos. Todavia, há ocasiões em que a implementação em hardware é melhor, isto porque uma solução em hardware pode ser muitíssimo mais rápida do que uma solução equivalente em software. É por isto que, em algumas situações, operações de tempo crítico requerem uma solução em hardware.

Um fato ainda mais interessante é que o oposto da afirmação acima também é verdade. Podemos não só implementar todas as funções de software em hardware, como também podemos implementar todas as funções de hardware em software. Esta é uma revelação importante porque muitas operações que normalmente seriam implementadas em hardware são muito mais baratas de implementar utilizando software num microprocessador. Na realidade, este é o uso primário da linguagem Assembly nos sistemas modernos - para substituir, a custo zero, um circuito eletrônico complexo. Frequentemente é possível fazer muita economia substituindo componentes eletrônicos caríssimos por um simples chip microcomputador muito barato. Sistemas embutidos são sistemas de computador embutidos em outros produtos. Por exemplo, muitos fornos microondas, aparelhos de TV, video games, CD players e outros dispositivos de consumo contém um ou mais sistemas completos cujo único propósito é o de substituir um projeto de hardware complexo. Engenheiros utilizam computadores com este propósito porque são mais baratos e mais fáceis de desenvolver do que sistemas eletrônicos tradicionais.

Você pode facilmente desenvolver software que leia interruptores (variáveis de entrada) e que ligue motores, LEDs ou luzes, trave ou destrave portas, etc. (funções de saída). Para escrever tal software, é preciso entender de funções booleanas e de como implementar tais funções em software.

É claro que há outras razões para estudar funções booleanas, mesmo se você nunca pretender escrever software para sistemas embutidos ou escrever software que manipule dispositivos do mundo real. Muitas linguagens de alto nível processam expressões da álgebra booleana (por exemplo, aquelas expressões que controlam uma declaração if ou um laço while). Geralmente é possível melhorar a performance de um código numa linguagem de alto nível aplicando transformações como os teoremas de DeMorgan ou fazendo uma otimização por mapeamento. Portanto, estudar funções booleanas é importante, mesmo que você nunca pretenda desenvolver um circuito eletrônico. Elas podem ajudar a escrever um código melhor nas linguagens de programação tradicionais.

Por exemplo, suponha que você tenha a seguinte expressão em Pascal:

if ((x=y) and (a <> b)) or ((x=y) and (c <= d)) then AlgumaInstr;

Você pode utilizar a lei distributiva para simplificar a expressão:

if ((x=y) and ((a <> b) or (c <= d)) then AlgumaInstr;

Da mesma forma, podemos utilizar o teorema de DeMorgan para reduzir:

while (not((a=b) and (c=d)) do AlgumaCoisa;

para

while (a <> b) or (c <> d) do AlgumaCoisa;

Fonte

  • Art of Assembly de Randall Hyde.
  • Tradução meio que livre da vovó Vicki.
Última atualização ( Sex, 23.02.2007 11:32 )
 

Topo

Topo