Olá, estudante! Seja bem-vindo(a) à mais uma lição da disciplina de Ciência da Computação! Nela, você entenderá, por meio de um modelo, como um computador funciona. Essa máquina te acompanhará ao longo da sua vida pessoal e profissional. Por isso, entender o funcionamento dela por intermédio de uma explicação simples te auxiliará a compreender outros conceitos mais complexos que veremos adiante. Esta lição não deixará dúvidas sobre como um computador funciona. Então, aproveite!
Muitas vezes, não nos importamos em saber como um computador funciona, porque o que mais importa é o resultado final: a música tocar, o site ser acessado ou o jogo rodar. Entretanto, você já parou para pensar em como tudo isso acontece ao mesmo tempo? Como essas operações são feitas? O que é uma memória? Qual é o papel dela? Qual é a função de um processador? Como esses dispositivos funcionam em conjunto? São muitas perguntas, não é mesmo?
Um modelo hipotético é amplamente usado, com o objetivo de fazer com que qualquer pessoa, sem conhecimento prévio ou experiência, consiga entender o básico de funcionamento de um computador. Você, como futuro(a) profissional da área de Análise e Desenvolvimento de Sistemas, precisa obter um maior conhecimento nessa área. Afinal, você será o(a) profissional que fará parte da criação, manutenção e otimização desse e de outros aparelhos eletrônicos.
Nós, humanos, comunicamo-nos por meio da linguagem e aprendemos um idioma de acordo com o ambiente em que vivemos e convivemos. Por exemplo, é a partir da interação de uma criança com os pais, com o que ela vê e ouve, que ela aprende as primeiras palavras. Posteriormente, ao conviver com outras crianças, ao estar na escola, assistir à televisão ou acessar à internet, a forma de comunicação vai sendo criada e/ou transformada.
Desse modo, uma pessoa adquire formas de comunicação diferentes por meio da linguagem, dos gestos, da escrita e da oralidade. No entanto, com a chegada dos computadores, foi iniciado outro desafio. Como uma pessoa conseguiria transmitir as instruções para uma linguagem que a máquina entenda? Afinal, esse é o objetivo de um computador. Realizar operações para facilitar a vida das pessoas. Como, então, um computador saberia qual é a tarefa que ele precisa realizar?
Essa questão foi resolvida por Alan Turing. Todavia, como seria possível, de fato, comunicar as instruções para que uma máquina, por exemplo, realizasse um cálculo? Qual seria a ordem para que isso acontecesse?
A resposta a esse desafio é muito interessante, pois ela envolve uma organização que não deveria permanecer estabelecida em apenas um formato. Ela é, na verdade, um conceito que passa a ser aplicado. Nesse aspecto, podemos nos lembrar de outro nome que contribuiu muito para a computação: Von Neumann. A arquitetura de um computador pensada por esse estudioso ainda é a base para os computadores atuais! Assim, sempre que for utilizar o seu smartphone, SmartTV, notebook ou computador, lembre-se dos conceitos elaborados no século passado.
De acordo com Guimarães e Lages (2005), é possível exemplificar o funcionamento de um computador simplificado da seguinte forma:
Um conjunto de dezesseis escaninhos desenhados em um quadro de cor preta. Nessa proposta, cada escaninho é identificado com a letra E e um sequencial. Dentro de cada escaninho, pode estar escrito uma instrução ou um número. O Quadro 1 nos ajuda a pensar nesse formato.
Operador: o papel dele é interpretar as instruções que pertencem e que estão nos escaninhos e utilizar os outros elementos para execução. Ele somente executa se as instruções contidas nos escaninhos já se encontram escritas.
Giz e apagador: o operador tem a responsabilidade de inserir, no escaninho com giz, qualquer número que se deseja colocar.
Uma bandeja com cartões com números escritos neles: a bandeja tem uma pilha de cartões. Cada cartão contém números que podem ser copiados para qualquer escaninho. Após a leitura do cartão, ele deve ficar virado na bandeja, ao lado da pilha original. Se não houver mais cartões, haverá uma condição de erro e não será possível continuar executando as instruções. Lembre-se de que é o operador quem as executa.
Uma calculadora: será utilizada para executar todas as operações aritméticas: soma, subtração, multiplicação, divisão, raiz quadrada etc.
Um caderno e uma caneta: serão escritos valores numéricos ou frases. No caso das condições de erro, o operador deverá escrever a palavra ERRO.
Para consolidar o nosso aprendizado, forneceremos um exemplo que facilitará a sua visão de como um computador funciona. Suponha que nos escaninhos E1, E2, E3 e E4 contenham as instruções visíveis no Quadro 2.
Suponhamos, agora, que, na bandeja, estejam os cartões (5) e (3), sendo que o primeiro está no topo da pilha. Dessa maneira, o operador começará a partir da instrução de E1. Ele, então, executa a instrução de E1 (pega um cartão na bandeja, o que está no topo da pilha) e copia o valor (5) no escaninho 16 (E16). Depois, ele coloca o cartão lido virado e ao lado da pilha original. Ao executar a instrução de E2, ele se comportará da mesma forma, com a diferença de que o local de escrita do cartão será em E15 e o valor será (3). Neste momento, o escaninho estará da maneira como é visível no Quadro 3.
A seguir, ele executará a instrução de E3. Para fazer isso, ele deverá utilizar a máquina de calcular, o quadro e o giz. Deverá apertar a tecla 3 da máquina de calcular, em seguida, a tecla (+) e, depois, a tecla 5. O resultado será escrito no E16, depois de apagar o valor que já estava escrito. Observe o Quadro 4.
Para executar a instrução de E4, é preciso utilizar o caderno onde será escrito o valor contido em E16. Com esse exemplo, conseguimos perceber algumas questões importantes da computação.
Para nos comunicarmos com uma máquina (computador), é necessário organizar as instruções que transmitiremos para ele. É preciso dizer cada passo e cada detalhe para que ele realmente realize o que se quer. Em nosso exemplo, ele seria executado até que os cartões da pilha terminassem. Depois disso, haveria erro, porque ele tentaria continuar executando as instruções.
Já que aprendemos essas partes importantes, podemos, agora, conhecer o que é um programa. Tem muito a ver com tudo o que estudamos até agora!
Um programa pode ser explicado como um conjunto de instruções que será executado pelo computador. Se você fosse explicar para alguém o que é programar um computador, você poderia dizer que seria como uma escrever uma receita (toda receita tem uma parte que é o “Modo de fazer” e que deve ser seguida, se queremos o prato bem preparado ao final). Você precisa escrever um conjunto de instruções que serão utilizadas para executar uma ou mais funções até que um determinado resultado aconteça. Todo programa deve ter fim, ou seja, ele deve ser finito. Isso significa que a execução das instruções deve sempre terminar. Considere o Quadro 5.
Agora, suponha que, na bandeja, exista uma pilha de cartões com os valores, do topo para a base da pilha: 7,1,4,3,5 e 2. Acompanhe a execução do programa preenchendo o Quadro 6.
A mensagem de erro aparece por qual motivo? Não há uma previsão do que acontecerá quando os cartões acabarem. Como podemos resolver isso?
Uma ideia é ter uma instrução de controle que poderia realizar um teste condicional para verificar se os cartões acabaram, ou não. Por exemplo, é possível ter a definição de um flag (que seria o mesmo que um sinal), a fim de indicar que uma dada situação ou resultado foi alcançado. Observe o Quadro 7.
Você pode simular as instruções ou o programa anterior. O resultado final será 22 (7+1+4+3+5+2), ou seja, todos os valores serão somados, exceto o flag -1.
Durante a nossa lição, conhecemos o computador hipotético. Ele, de forma simples, leva-nos a entender o funcionamento do computador por intermédio de instruções organizadas em um passo a passo. Assim, conseguimos unir vários conceitos. Você sabe quais são?
Máquina da Turing
Arquitetura de Von Neumann
Máquina do censo de Herman Hollerith
Cartões de Charles Babbage
Esses conceitos são importantes para pensarmos em outras possibilidades. Por exemplo, será que o programa dado como exemplo poderia calcular outra sequência de 10 números? Se a sequência de cartões fosse de 10.000 cartões, o programa também conseguiria resolver esse problema e apresentar o cálculo?
O que você acha? A resposta é sim!
O programa independe do número de cartões que você deseja somar. O conjunto das instruções contidas em E1, E2, E3, E4 e E5 pode se repetir enquanto houver cartões, independentemente da quantidade.
Agora, você já começa a pensar em outros dispositivos, não é mesmo? Processador e memória serão muito úteis para realizar o cálculo de forma mais rápida.
GUIMARÃES, A. M.; LAGES, N. A. Introdução à Ciência da Computação. Rio de Janeiro: LTC, 2005.