O Computador

Computação

Uma determinada discoteca tinha vários procedimentos, que executava conforme decisão diária dos seus gerentes. Tinha-os numerados, devidamente descritos e guardados num arquivo.
Nesse dia foram dadas ao porteiro, o Tozé, instruções para executar o procedimento nº 5 durante o horário de funcionamento e, depois de fechar e antes de sair, executar o procedimento nº 8.
O Tozé foi então ao arquivo buscar o procedimento nº 5, que consistia em só permitir a entrada:

  • A pessoas com idade superior a 18 anos,
  • A pessoas com comprovativo de já terem efetuado o pagamento de consumo mínimo e, no caso de estas duas condições se verificarem,
  • Depois de registar o sexo e a idade de cada cliente numa ficha própria.

Leu-o e guardou-o na sua memória, para que o pudesse efetuar. Porque o Tozé era distraído e falhava sistematicamente alguns passos do processo, arranjou uma forma simples de garantir que os cumpria sempre: montou um sistema de interruptores que ligava conforme cumpria os passos do procedimento. Só depois de estarem todos ligados, se acendia uma luz que o avisava de que já podia deixar entrar a pessoa em questão.

Quando a discoteca encerrou, o Tozé foi ao arquivo guardar o procedimento nº 5 e recolher o procedimento nº 8, que leu e memorizou. Dizia que deveria, com os dados que tinha registado, determinar a percentagem de clientes por sexo, calcular a idade média dos mesmos e determinar o total de clientes nesse dia. Deveria de seguida guardar os registos do dia e deixar na mesa do gerente o resultado deste processo, para que o mesmo pudesse com esta informação, tomar decisões quanto à gestão da discoteca. Feito isto, foi-se embora.

Ora, o Tozé recolheu dados sobre os clientes, executou procedimentos, ou programas, com os mesmos e obteve informações que lhe permitiram tomar decisões. Façamos alguma analogia entre o Tozé e um computador:

O Tozé foi buscar ao arquivo (Disco Rígido), um procedimento (Programa) que colocou na memória (Memória RAM), para que pudesse efetuar as instruções do procedimento em questão (Processamento) com os elementos que ia recolhendo sobre os clientes (Dados), e com os resultados obtidos (Informações), permitir-lhes ou não a entrada (Decisão)

O Tozé executou uma operação condicional, isto é, caso todas as condições necessárias se verificassem e após cumprir todas as instruções do procedimento, deixar entrar os clientes. E efetuou-o tal como o computador, ligando e desligando interruptores.

Veja-se a analogia do comportamento humano com o de uma máquina, por exemplo no caso da cancela de um parque de estacionamento. A máquina verifica a presença do carro (por detetores de volume), o pagamento do parqueamento (por introdução do cartão) e comunica os dados ao computador que por sua vez liga ou não os dois interruptores da condição que permite abrir ou não o circuito elétrico que levanta a cancela.

Esta introdução por analogias teve por fim melhor identificar quatro elementos fundamentais de uma operação de computação:

  • Os dados, que correspondem a características próprias que se pretendem analisar e que serão fornecidos ao processador para que os incorpore na execução do programa.
  • O processamento dos dados de acordo com um programa. O processamento é a execução de um programa. E um programa não é mais do que a descrição da forma e sequência com que fazemos determinadas coisas, numa língua própria do computador.
  • A informação obtida através desse processamento, ou seja, do resultado desse processamento.
  • A decisão que se pode tomar a partir do conhecimento dessas informações.

O processamento é a execução de um processo. E um processo não é mais do que o modo, o método, a maneira e a sequência com que fazemos determinadas coisas. A esta forma de procedimento ou processo, quando colocada num computador, chama-se programa e à sua execução processamento.

  • No caso do procedimento nº 5, o processo (Programa) corresponde a uma operação lógica condicional simples.
  • No caso do procedimento nº 8 o processo corresponde a uma operação matemática de cálculo, que se traduzirá em termos de computador, na execução da combinação de mais complexas operações de lógica matemática.

Sim, porque é bom não esquecermos que o computador só entende ligado e desligado. É uma máquina de interruptores. Para que se entenda como funciona a máquina de interruptores é preciso descermos à essência da sua forma de atuar. E à essência da forma como devemos falar com ela

O-Computador2Como Intercomunicamos

As formas mais correntes de comunicação interativa com o computador são o teclado, o rato e o monitor.
É através do monitor que o computador nos pede os dados de que necessita para o processamento, para de  seguida nos fornecer a informação. Utiliza para isso interfaces gráficas (este é o nome pomposo para as janelas em que trabalhamos no monitor), espaços de trabalho atrativos e elucidativos, com locais próprios para a introdução dos dados e escolha de opções. É seleccionando essas opções com o rato e preenchendo os devidos espaços com o teclado que fornecemos os dados ao computador, para que ele os processe e nos forneça a informação resultante através do mesmo monitor.
Mas há outras formas de comunicação, com as quais fornecemos ao computador, a qualquer momento, os dados por ele esperados. Será o caso dos leitores óticos (por ex Leitores de barras), dos sensores de volume ou das células fotoelétricas (verificam a presença), das pranchas de desenho, das câmaras de vídeo ou fotográficas, dos digitalizadores, dos microfones, dos dispositivos de jogos e de todos os que já existam que me dispenso de referenciar e aqueles que a imaginação humana venha a criar. Há também muitas outras formas de o computador nos fornecer informações, na sua maioria vias idênticas às da impressora e do monitor.
Importantes também, são as formas em que o computador comunica connosco executando acções, isto é, decidindo em função da informação, como no caso da abertura do circuito elétrico que levanta a cancela do parqueamento. Um exemplo tão simples mas que mostra o caminho para a robotização e para a cada vez maior automatização da produção assistida por computador.
Na ligação com o mundo exterior ao computador e vice-versa, temos assim definidos os dispositivos de I/O de “Input/Output” ou de E/S, de Entrada/Saída”.

Como nasceu o Computador

Agora que já fizemos uma pequena abordagem sobre o que o computador faz e como comunica connosco e nós com ele, vamos tentar entender o que esteve na origem do seu nascimento.
Há muitos anos atrás, mais de um século, um senhor chamado George Boole determinou que era possível através das leis do pensamento criar expressões que resolveriam todos os problemas de Álgebra através da Lógica. Era a dualidade verdadeiro/falso normalmente anotada como 1/0 respetivamente, que substituía as habituais variáveis numéricas e as operações de adição e multiplicação pelas operações lógicas de conjunção (AND), disjunção (OR) e negação (NOT).
Mal este senhor imaginava aquilo que um século depois viria a nascer na sequência da criação da sua Álgebra e da Lógica proposicional. E tudo porque um outro senhor chamado Claude Shannon teimou e demonstrou que era possível recriar a abstração matemática da álgebra de Boole através de circuitos elétricos e interruptores (grandes relés) que ele ligava e desligava por forma a formar os circuitos necessários. Mas a esta realidade já vamos de seguida.
Para já vamos reter a afirmação atrás produzida que a álgebra de Boole substituía as variáveis numéricas da Álgebra tradicional pela dualidade verdadeiro/falso, normalmente anotada como 1 e 0. Assim, 1 e 0 são os dígitos necessários para resolver todas as expressões da Lógica Proposicional e consequentemente todos os problemas Matemáticos. Portanto essa será a Linguagem da Máquina, uma vez que como dissemos o computador foi criado para executar as expressões da Lógica Proposicional .

A Linguagem do Computador

O Vocabulário do Computador

Para o computador, em cada ponto possível de análise, temos sempre e só duas opções possíveis. Ligado ou desligado, com ou sem tensão. Esta é a realidade física no computador. Vamos agora levar este conceito para o campo da abstração do raciocínio lógico e matemático humano. A dualidade absoluta representada pelo conceito físico ligado/desligado, corresponde em raciocínio lógico à dualidade verdadeiro/falso quanto ao valor de uma afirmação, a que atribuímos o valor correspondente “1 ou 0”. É este o único vocabulário de que dispomos para falar com o computador. Dois algarismos, 1 ou 0.
Convenhamos que não é fácil entender como se pôde criar uma máquina que, só entendendo este reduzido vocabulário, evoluiu de forma a tornar o seu próprio criador dependente dela.
Chegados aqui, entendo que, para podermos continuar, temos que fazer uma pequena introdução ao conceito dos sistemas numéricos posicionais, nos quais se insere aquele em que nós humanos nos entendemos, que é o sistema decimal ou de base 10.

Sistema numérico posicional

Vamos começar por definir, de forma muito básica, alguns conceitos importantes:

  1. Um número, é uma forma de representar uma quantidade de qualquer coisa.
  2. Um algarismo, é um número de um só dígito que vai de 0 até ao valor anterior à base em que se insere. No caso da base 10 são os algarismos de 0 a 9, exatamente os 10 algarismos disponíveis para representar números na Base 10.
  3. A base é a quantidade de algarismos de que dispomos para representar um número. Por exemplo, na base 10 são 10 (0 a 9).
  4. Um sistema numérico, é uma forma sistemática de representar números.

Agora podemos definir o sistema numérico posicional como sendo uma forma sistemática de representar números que se baseia no valor de cada algarismo (sempre inferior ao da base) e na sua posição na representação do número (conjunto de algarismos). Vejamos concretamente como na base 10 se representa um número.

Sistema Decimal

TabelaDecimalNo caso do sistema numérico posicional de base 10, o Sistema Decimal,  cada algarismo representa o valor da sua multiplicação pelo valor da base tantas vezes quantas a sua posição na representação do número a contar da direita para a esquerda (ou para quem entenda, pelo valor da base elevado à potência da sua posição), sendo que o primeiro algarismo está na posição 0 (qualquer número elevado à potência 0 é igual a 1). O valor do número que se representa resulta da soma de todas estas parcelas. Porque é importante o entendimento deste conceito vamos exemplificar na Figura 1.
Tomemos por exemplo o número representado pelos dígitos 491622. Como dissemos, devemos primeiro multiplicar cada algarismo pelo valor da base tantas vezes quanto a sua posição na representação do número, a contar da direita para a esquerda, sendo que o primeiro algarismo está na posição 0.

Já que se pode representar um número em qualquer base vamos agora analisar a base 16 e perceber como funciona.

Sistema hexadecimal

EquivHexadDecSistema hexadecimal, ou sistema numérico posicional de base 16, precisa de 15 algarismos para representar um número.
Porque, para além do 9, já não havia algarismos simples que representassem valores da base (no nosso conceito decimal de algarismo), escolheram-se símbolos alfanuméricos (A, B, C, D, E, F) para representarem os algarismos que faltavam. Assim os dígitos da base hexadecimal são como se representa na Figura 2 com analogia ao seu valor no sistema decimal.
Em qualquer base diferente da nossa base decimal, o conjunto de algarismos 10 não se deve ler dez mas “um, zero” e assim sucessivamente.

TabelaHexadecimalVamos agora, a título de exemplo, ver qual é o valor na base decimal, que corresponde ao valor FF na base hexadecimal, o que fazemos na Figura 4, de acordo com o mesmo procedimento que usámos na base 10.
O que significa que, na base hexadecimal, se conseguem representar com dois dígitos 256 valores (de 0 a 255).
Continuando no mesmo entendimento de que um número se pode representar em qualquer base, vamos agora falar da base 2.

Sistema binário

EquivBinDecO sistema binário corresponde exatamente ao vocabulário do nosso amigo Computador. Como o nome diz é composto por dois dígitos: o 0 e o 1. Lembrem-se que estamos na base 2, o que significa que precisamos de 2 algarismos para representar qualquer número.
Vejamos agora a equivalência de representação de um número na base 2 e na base 10 na Figura 1-5 que vai até quatro dígitos na base 2.

TabelaBinarioA título de exemplo, vamos agora ver qual é o valor que corresponde, na base decimal, ao número representado por 11111111 na base 2, como podemos verificar na Figura 5. E constatamos que é exatamente o mesmo valor que FF na base 16.
O valor decimal que se representa com FF na base 16 representa-se com um número de 8 dígitos na base 2 (11111111). Melhor ainda, cada algarismo hexadecimal representa 4 bits, o que torna a conversão muito mais fácil do que no sistema decimal.
Por esta razão o sistema hexadecimal é habitualmente utilizado em informática para representar a estrutura binária da linguagem máquina.
Os computadores utilizam conjuntos de 8 algarismos 0 ou 1, como unidade básica de endereçamento e trabalho. Todas as combinações possíveis desses 8 algarismos podem ser representadas por 2 dígitos hexadecimais, esgotados também em todas as suas combinações.
Porque, como atrás já vimos, o  vocabulário do computador se reduz aos algarismos 0 e 1, fica evidente que o sistema binário, ou antes, o sistema numérico posicional de base 2 é o alfabeto (ou “umzerto“) ideal para falarmos com ele. Daí a importância deste sistema na ciência da computação.
Encontrada a fórmula de homem e máquina se entenderem, um através de dois dígitos e outro através de interruptores que liga e desliga, vamos avançar, para um conceito fundamental, que é o da unidade base de informação e seus múltiplos.

As Unidades de Informação

Bit (“BInary digiT”)

Bit, que designa dígito binário em Português, é a menor unidade de informação que pode ser armazenada ou transmitida.
Fisicamente, o valor de um bit é, de uma maneira geral, armazenado como uma carga elétrica acima ou abaixo de um nível padrão, num único condensador dentro de um dispositivo de memória. Mas, bits podem ser representados fisicamente por vários meios. Os meios e técnicas comummente usados são:

  • Pela eletricidade, como já citado,
  • Por via da luz (em fibras óticas, ou em leitores e gravadores de discos óticos por exemplo),
  • Por via de ondas eletromagnéticas (rede wireless), ou
  • Por via de polarização magnética (discos rígidos).

Mas não é possível fazer muito utilizando só um bit isoladamente, tal como nós, na nossa linguagem, também não nos entenderíamos usando letras isoladas.

O Código ASCII

Porque o computador só entende números, concretamente o 0 e o 1, a primeira preocupação dos programadores foi encontrarem um código representativo de todas as letras do alfabeto Inglês, dos números, de comandos essenciais do teclado e de pontuação e símbolos especiais.

Seria dessa forma que o computador, relacionando certos símbolos gráficos com código binário que os representa, podia comunicar connosco.
Assim, propuseram um código inicialmente aceite na América e rapidamente estendido a todo o mundo, a que chamaram ASCII (American Standard Code for Information Interchange que se traduz por “Código Americano Standard para a Troca de Informações”), que representava 128 carateres possíveis, através da combinação de 7 bits.
O código ASCII tinha o seguinte modo de representação:

  • Os códigos 0 a 31, carateres não imprimíveis, eram carateres de controlo porque representavam acções normalmente contidas no teclado.
  • Os códigos 65 a 90, representam as maiúsculas
  • Os códigos 97 a 122, representam as minúsculas
  • Os restantes, representam numeração, pontuação e símbolos diversos

O código ASCII foi concebido para a língua inglesa. Não continha, por isso, carateres acentuados nem carateres específicos de outras línguas Europeias. Para codificar este tipo de carateres e estender o ASCII à Europa, foi necessário recorrer a outro código. O código ASCII foi então estendido a 8 bits (um byte) para poder codificar mais 128 carateres, sendo chamado código ASCII estendido.
Para conhecimento juntamos  um quadro com os carateres imprimíveis do código ASCII.

Este código atribui os valores 0 a 255, por conseguinte codificados em 8 bits, quer dizer, 1 byte. A parte estendida do código ASCII não é única e depende da plataforma (língua ou região) em que é utilizada.
Foi a partir daqui que nasceu o conceito de Byte, correspondente a um conjunto de 8 bits e que passou a constituir a unidade standard de informação.

Byte

A codificação padronizada de Byte foi definida como sendo de 8 bits. Um Byte, é um dos tipos de dados integrais em computação. É usado com frequência para especificar o tamanho ou quantidade da memória ou da capacidade de armazenamento de um computador, independentemente do tipo de dados armazenados. Para um computador, representar 256 números binários é suficiente. Por isso, os bytes possuem 8 bits, que como já vimos atrás representam 256 combinações possíveis que vão de 00000000 (0 em decimal) a 11111111 (255 em decimal).

Note que um Byte nada tem de especial. É apenas um número binário de oito algarismos. A sua importância na informática deriva apenas do facto de o código ASCII ter adotado números de oito bits, além de razões meramente construtivas ou operacionais derivadas do facto de o intercâmbio de informação com certos periféricos ser feito em 8 bits.
A capacidade de armazenamento dos dispositivos de memória e armazenamento de dados, é normalmente referida em múltiplos do Byte. O Byte é a unidade mínima a que o processador se dirige. Em relação às memórias, seja qual for a dimensão da palavra, o endereçamento é feito ao Byte.

Normalmente, usam-se os prefixos do sistema SI para designar potências de Bytes e são entendidos por quem os ouve como se potências de 10 fossem. Mas não é o caso e a diferença percentual, como se vê, pode atingir valores muito significativos.
No caso dos Discos Rígidos, quando se fala em múltiplos de Bytes fala-se em potência de 10, pelo  que, por exemplo, um disco de 1 Terabyte tem na realidade menos 10% de capacidade do que aquela que deveria ter quando estamos em sistema binário.
Só por uma questão de curiosidade e complementação da informação juntamos tabelas com os valores das normas reguladoras dos sistemas de unidades, em binário e decimal.

Palavra

É a unidade de informação natural usada por um tipo de processador. É um grupo de bits de tamanho fixo, que é processado em conjunto.
A palavra começou por ser de 1 Byte, ou 8 bits (processadores de 8 bits), depois evoluiu para 16 bits (processadores de 16 bits), mais recentemente passou a 32 bits (processadores de 32 bits) e agora está a tornar-se comum uma largura de palavra de 64 bits (processadores de 64 bits).
A quantidade de bits duma palavra (tamanho da palavra) é uma característica importante duma arquitetura de computador. Reflete-se em vários aspetos da estrutura e operação dum computador. Os registadores, memórias específicas do processador onde são colocados os dados em processamento e os ponteiros de endereçamento, deverão ter o tamanho da palavra. Os barramentos de dados e endereços deverão ter a largura da palavra.
Embora não tenha que ser obrigatoriamente múltipla do Byte, são esses os tamanhos mais frequentes da palavra.

Conclusão

Já percebemos que o sistema de numeração posicional da base 2, ou sistema binário, é o ideal para as nossas conversas com o computador, pois representa perfeitamente a sua dualidade absoluta em estados de tensão ou não.
Já percebemos que a unidade de informação base é o Bit e já falámos da enormidade de coisas dessas que podem ser trabalhadas em simultâneo e armazenadas.
Mas agora parece que estou a ouvir a pergunta pertinente:
“e o que é que eu vou fazer com essa bicharada toda?”
É chegada a altura de passarmos a tratar o tema da Lógica Matemática e da Álgebra Booleana, para começarmos a entender como é que esse pequeno vocabulário pode começar a tomar decisões consoante as premissas.