Sítio do Piropo

B. Piropo

< PC@World >
Volte
06/1997

Programas e Instruções

 

Um computador desligado é um amontoado inerte de peças, componentes e circuitos eletrônicos convenientemente conectados uns aos outros. Quando é alimentado com eletricidade, depois que algumas luzes piscam, barulhos e rangidos são emitidos e a tela se acende, parece adquirir vida própria e ser capaz de "fazer" alguma coisa. Na verdade o computador propriamente dito continua sendo o mesmo amontoado de peças, componentes e circuitos e, sozinho, não é capaz de "fazer" coisa alguma. A única característica que permite que ele "faça" algo e o torna diferente de uma televisão, por exemplo, é poder executar um "programa". Então, vamos ver exatamente o que é isto.

O componente central do computador é um circuito integrado especialíssimo. Chama-se "microprocessador" e é também conhecido por "CPU" (acrônimo de Central Processing Unit, ou unidade central de processamento). É constituído internamente de um número enorme de componentes eletrônicos interligados. Seu componente principal é o transistor e sua capacidade de processamento pode ser grosseiramente avaliada pelo número de transistores que abriga. A capacidade de miniaturização da indústria eletrônica está tão avançada que as modernas CPU contêm milhões de transistores (o Pentium II tem mais de cinco milhões e o Pentium Pro cerca de vinte milhões).

Apesar desta imensa quantidade de componentes, os microprocessadores modernos são relativamente pequenos, mais ou menos do tamanho de um biscoito tipo "creme cracker". De sua face inferior se projetam centenas de pinos metálicos, ou "terminais", que encaixam nos orifícios correspondentes de um suporte plástico denominado "soquete", soldado à uma placa de circuito impresso chamada "placa-mãe" do computador. Em cada orifício há um encaixe metálico ligado a um filete da placa-mãe que se conecta a outro componente da placa. É assim que a CPU se comunica com os demais componentes da placa-mãe.

O que distingue a CPU dos demais circuitos integrados e a torna tão especial é sua capacidade de receber, reconhecer e executar "instruções", ou seja, perfazer uma determinada ação sob um certo estímulo.

Esclareçamos: você está sedento, mas extremamente atarefado jogando aquele joguinho esperto em seu micro. Então grita para sua empregada, que está na cozinha: "Jurandirna, pegue um copo d'água pra mim". Isto é uma instrução que Jurandirna sabe interpretar e executar: ela pega o copo, vai até a geladeira, enche-o com água e o traz até você. Com seu computador a coisa funciona mais ou menos assim. A diferença é que, embora não pareça, ele é muito menos esperto que Jurandirna: diante de uma instrução como aquela, se ele pudesse executá-la teria se limitado a pegar o copo d'água e ficar lá plantado até que você dissesse o que mais fazer mediante novas instruções (tipo: abra a geladeira, pegue a garrafa de água, encha o copo com água da garrafa, ponha-a de volta na prateleira, feche a geladeira e traga o copo com água até aqui). Ou seja: o microprocessador (e, portanto, o computador) se limita a fazer exata e literalmente o que lhe foi ordenado. Faz isto melhor e mais depressa que qualquer humano, mas é absolutamente incapaz de fazer qualquer outra coisa além ou diferente da instrução que recebeu (e a incapacidade de entender este princípio básico da informática e conviver com ele é a principal responsável pelo fato de determinadas pessoas jamais conseguirem viver em paz com seus micros).

Instruções são encaminhadas ao microprocessador mediante impulsos elétricos enviados a certos terminais. Como há centenas deles, as possibilidades de combinar impulsos em tais ou quais terminais são imensas, portanto o número de instruções que uma CPU pode receber e interpretar é enorme. Cada instrução perfaz uma tarefa específica e produz um determinado resultado. Para isto ela é "processada", ou seja, interpretada e executada pelos circuitos internos do microprocessador. O resultado é devolvido aos circuitos externos da mesma forma como a instrução foi recebida: através de impulsos elétricos em certos terminais. Estes impulsos são então transmitidos aos periféricos e transformam-se na totalização da folha de pagamento de uma multinacional ou na explosão da nave espacial inimiga, dependendo se o programa que está sendo executado é uma planilha eletrônica ou aquele joguinho novo que você pirateou.

O que nos leva ao conceito de programa. Afinal, o que é um programa?

Fácil: programa é um conjunto de instruções encadeadas, executadas pela CPU em uma determinada ordem e visando produzir um resultado específico.

Por exemplo: "pegue um copo d'água" seria uma instrução. Que, isolada, não resulta em grande coisa: após executá-la a pobre Jurandirna permaneceria na cozinha, apalermada, com o copo na mão sem saber o que fazer com ele. Já o conjunto de instruções encadeadas "pegue um copo d'água, abra a geladeira, pegue a garrafa de água, encha o copo com água da garrafa, ponha-a de volta na prateleira, feche a geladeira e traga o copo com água até aqui" executadas exatamente nesta ordem resulta em algo prático e conduz a um resultado específico (no caso, matar sua sede).

Evidentemente, entendida ao pé da letra, esta definição de programa torna seu computador um tanto limitado, já que toda a vez que o programa fosse executado o resultado seria exatamente o mesmo. Ou seja: se não for possível alterar o encadeamento e a ordem de execução das instruções, os programas seriam infernalmente monótonos e de escassa utilidade, já que somente serviriam para automatizar procedimentos repetitivos. Mas você pode confiar na capacidade de Jurandirna tomar decisões baseadas em comparações e aumentar consideravelmente o nível de complexidade da coisa. Por exemplo: se o dia está particularmente quente e você receia que a água da geladeira não tenha lá permanecido o tempo suficiente para gelar, pode alterar seu programa assim:

"pegue um copo d'água, abra a geladeira, pegue a garrafa de água e verifique a temperatura da água;

se:

a água estiver gelada:

então:

encha o copo com água da garrafa, ponha-a de volta na prateleira, feche a geladeira e traga o copo com água até aqui;

do contrário:

pegue gelo no congelador, ponha no copo, pegue a garrafa de água, encha o copo com água da garrafa, ponha-a de volta na prateleira, feche a geladeira e traga o copo com água até aqui"

Repare: a introdução deste "se... / então... / do contrário...", juntamente com um critério de comparação (que poderia ser mais específico caso você definisse exatamente abaixo de que temperatura a água seria considerada gelada), abre todo um mundo de novas possibilidades para seus programas através do uso da capacidade de Jurandirna e de seu computador (na verdade, da CPU de seu computador) de comparar quantidades e adotarem um rumo ou outro dependendo do resultado da comparação.

Pois bem: por mais complexo que lhe pareça e por mais espetaculares que sejam seus resultados, um programa - qualquer programa - não passa disto: instruções encadeadas que são executadas pela CPU cujo fluxo pode ser alterado comparando-se quantidades baseado em critérios previamente definidos.

Um negócio, afinal, muito mais simples e menos assustador do que parecia à primeira vista, quando a gente ainda não entendia como a coisa funcionava.

Como quase tudo na vida, aliás.

 

B. Piropo