Você está na página 1de 117

ORGANIZAÇÃO DE

COMPUTADORES

autor do original
MARCO FÁBIO POLLI

1ª edição
SESES
rio de janeiro  2015
Conselho editorial  fernando fukuda, simone markenson, jeferson ferreira fagundes

Autor do original  marco fábio polli

Projeto editorial  roberto paes

Coordenação de produção  rodrigo azevedo de oliveira

Projeto gráfico  paulo vitor bastos

Diagramação  fabrico

Revisão linguística  aderbal torres bezerra

Imagem de capa  nome do autor  —  shutterstock

Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida
por quaisquer meios (eletrônico ou mecânico, incluindo fotocópia e gravação) ou arquivada em
qualquer sistema ou banco de dados sem permissão escrita da Editora. Copyright seses, 2015.

Dados Internacionais de Catalogação na Publicação (cip)

P771o Polli, Marco


Organização de computadores / Marco Polli.
Rio de Janeiro: SESES, 2014.
128 p. : il.

ISBN 978-85-60923-49-6
1.Ciências da computação. 2. Organização de computadores.
3. Arquitetura de computadores. 4. Processamento. I. SESES.
II. Estácio
CDD 004.22

Diretoria de Ensino — Fábrica de Conhecimento


Rua do Bispo, 83, bloco F, Campus João Uchôa
Rio Comprido — Rio de Janeiro — rj — cep 20261-063
Sumário

Prefácio 5

1. Processamento de Dados
e Estrutura Básica do Computador 8
Organização e arquitetura de computadores 9
Processamento de dados, Informação e Conhecimento 9
Breve histórico dos computadores 12
Visão geral do computador pessoal 19
Elementos Básicos da Arquitetura de Von Neumann 22
Construção de algoritmos simples 25

2. Representação de Dados 34

Elementos binários fundamentais: bits, bytes e words. 34


Bases numéricas 38
Representação de caracteres 44
Tipos de dados e uso de variáveis em algoritmos 46

3. Álgebra Booleana e Operações Lógicas em


Algoritimos 56
Álgebra booleana 57
Portas lógicas 64
Operações aritméticas e lógicas em algoritmos 65
4. Instruções e Processamento 78

Componentes fundamentais para o processamento 78


Instruções de computador 80
Aspectos de arquitetura nos computadores pessoais 85

5. Memória e Dispositivos de Entrada e Saída 98

Memória 99
Dispositivos de entrada e saída E/S 110
Tipos de Computadores 111
Prefácio
Prezados(as) alunos(as)

No fim da década de 1970, os computadores pessoais começam a ser introduzidos


no mercado. Ferramentas de processamento de dados que antes eram apenas dispo-
níveis para grandes empresas, por meio de máquinas que ocupavam salas inteiras,
passaram a estar em cima da mesa dos escritórios e das casas das pessoas. Só esse
desenvolvimento já seria suficente para mudar a nossa sociedade, mas a história não
parou aí. A interligação desses computadores e dos servidores na internet, transfor-
mou a maneira com que as pessoas se comunicam, compram, se divertem e criam. Por
fim, o próprio computador pessoal deixou de ser o centro desse modo de vida, com
smartphones, tablets e dispostivos que ainda estão sendo criados.
Em sua história, os computadores mostraram ser uma base de inovações contínuas
e de uso criativo, uma história que ainda continua e podemos influenciar. Para tanto,
devemos conhecer como os computadores funcionam e são organizados. Esse conhe-
cimento é essencial tanto para o desenvolvimento de hardware, de software ou mesmo
para se fazer um bom uso dessa tecnologia.Com essa preocupação, o conteúdo da
disciplina é organizado do seguinte modo:
•  Capítulo 1 – Entenderemos o que é processamento de dados e o funcionamento
básico de um computador.
•  Capítulo 2 – Será explicada a linguagem binária.
•  Capítulo 3 – Entenderemos a álgebra booleana e a sua implementação em algo-
ritmos simples.
•  Capítulo 4 – Veremos com mais detalhes como o computador trata dados e ins-
truções na Unidade Central de Processamento.
•  Capítulo 5 – Exploraremos os tipos de memória e suas inter-
-relações.

Bons estudos!

6
1
Processamento de
Dados e Estrutura
Básica do Computador
1  Processamento de Dados
e Estrutura Básica do Computador

Computadores não se limitam aos notebooks e aos desktops nos escritórios, eles
estão nos equipamentos médicos, carros, aparelhos de TV, celulares e em sim-
ples brinquedos. É impossível dissociar a computação do nosso estilo de vida.
Porém, são poucas pessoas que de fato entendem como funciona um computa-
dor e como dados são processados. Esse conhecimento é importante para que
os computadores e seu modo de usar continuem a se desenvolver.
Aqui vamos descrever os elementos básicos de computação e sua história, ser-
vindo de base para os demais capítulos da disciplina. Vamos entender o concei-
to de dados e seu processamento. Um breve panomora da trajetória histórica
dos computadores será apresentado para que depois discutamos a arquitetura
da Von Neumann. Dessa forma, teremos uma visão fundamental sobre o funcio-
namento do computador.

OBJETIVOS
•  Compreender a diferença entre organização e arquitetura de computadores.
•  Dominar o conceito de dados e do seu processamento.
•  Entender a trajetória de evolução dos seus computadores e seus tipos principais.
•  Identificar as partes principais de um computador segundo a arquitetura de Von Neumann.

REFLEXÃO
Você já deve ter visto diversos filmes e artigos que discutem o tema da inteligência artificial. Seria
possível mesmo que computadores sejam inteligentes? Eles poderiam ter vontade ou consciên-
cia? Ao ler esse capítulo, busque refletir sobre o que um computador pode ou não fazer, relem-
brando as obras de ficção e opiniões sobre o assunto.

capítulo 1 •9
1.1  Organização e arquitetura de computadores

A organização dos computadores trata da estrutura dessas máquinas, preocu-


pando-se com circuitos, tipos de memória e demais componentes físicos usa-
dos, como os periféricos. Ou seja, busca-se saber como se dá o funcionamento
do computador. Já a arquitetura dos computadores fornece elementos críticos
a serem usados pelo programador: dados e suas representações, operações ló-
gicas e rotinas, etc. Por isso, a da descrição da arquitetura possui uma natureza
mais abstrata. Devido à importância de se integrar conhecimento de hardware
e software, esta disciplina cobrirá aspectos tanto de organização quanto arqui-
tetura, seguindo o caminho de obras de referência na área (NULL & LOBUR,
2010; MURDOCA & HEURING; 2000; STALLINGS, 2002; MONTEIRO, 2007).
Por mais simples ou complexa que seja a estrutura de um computador, a
sua função básica é o processamento de dados. A seguir, vamos discutir qual é
o significado dessa atividade e a sua relação com o conhecimento.

1.2  Processamento de dados, Informação e Conhecimento

Vamos discutir um pouco esses conceitos e as diferenças entre eles?


A seguir, apresento trechos da definição dada pelo professor Dr. Valdemar W.
Setzer, disponibilizada em: <http://www.ime.usp.br/~vwsetzer/dado-info.html>.
Segundo o professor Dr. Valdemar Setzer, podemos dizer que dado é:

[...] uma sequência de símbolos quantificados ou quantificáveis. Portanto, um texto é um


dado. De fato, as letras são símbolos quantificados, já que o alfabeto, sendo um conjunto
finito, pode por si só constituir uma base numérica (a base hexadecimal emprega tradi-
cionalmente, além dos 10 dígitos decimais, as letras de A a E). Também são dados fotos,
figuras, sons gravados e animação, pois todos podem ser quantificados a ponto de se
ter eventualmente dificuldade de distinguir a sua reprodução, a partir da representação
quantificada, com o original. É muito importante notar-se que, mesmo se incompreensível
para o leitor, qualquer texto constitui um dado ou uma sequência de dados [...]. (SETZER)

Segundo o Dr. Setzer, o dado é uma entidade matemática puramente sin-


tática, ou seja, os dados podem ser descritos por estruturas de representação.
Assim sendo, podemos dizer que o computador é capaz de armazenar dados.

10 • capítulo 1
Esses dados podem ser quantificados, conectados entre si e manipulados pelo
Processamento de Dados.
Podemos definir dado também como unidades básicas a partir das quais
as informações poderão ser elaboradas ou obtidas. São fatos brutos, ainda não
organizados nem processados.
Já a informação seria:

[...]umaabstraçãoinformal(istoé,nãopodeserformalizadaatravésdeumateorialógicaoumate-
mática),queestánamentedealguém,representandoalgosignificativoparaessapessoa.Note-
-se que isto não é uma definição, é uma caracterização, porque “algo”, “significativo” e “al-
guém” não estão bem definidos; assumo aqui um entendimento intuitivo (ingênuo) desses
termos. Por exemplo, a frase “Paris é uma cidade fascinante” é um exemplo de informação
– desde que seja lida ou ouvida por alguém, desde que “Paris” signifique para essa pessoa
a capital da França (supondo-se que o autor da frase queria referir-se a essa cidade) e
“fascinante” tenha a qualidade usual e intuitiva associada com essa palavra.

Assim, a informação depende de algum tipo de relacionamento, avaliação


ou interpretação dos dados.
Veja também que informação e dado mantêm relações:

[...] Se a representação da informação for feita por meio de dados, como na frase sobre
Paris, pode ser armazenada em um computador. Mas, atenção, o que é armazenado na
máquina não é a informação, mas a sua representação em forma de dados. Essa repre-
sentação pode ser transformada pela máquina, como na formatação de um texto, o que
seria uma transformação sintática. A máquina não pode mudar o significado a partir deste,
já que ele depende de uma pessoa que possui a informação. Obviamente, a máquina pode
embaralhar os dados de modo que eles passem a ser ininteligíveis pela pessoa que os re-
cebe, deixando de ser informação para essa pessoa. Além disso, é possível transformar a
representação de uma informação de modo que mude de informação para quem a recebe
(por exemplo, o computador pode mudar o nome da cidade de Paris para Londres). Hou-
ve mudança no significado para o receptor, mas no computador a alteração foi puramente
sintática, uma manipulação matemática de dados.
Assim, não é possível processar informação diretamente em um computador. Para isso é
necessário reduzi-la a dados. No exemplo, “fascinante” teria que ser quantificado, usando-
se por exemplo uma escala de zero a quatro. Mas então isso não seria mais informação [...].

capítulo 1 • 11
Podemos agrupar dados isolados e torná-los consistentes ao se transfor-
marem em informações. Por exemplo, se tivermos um conjunto de dados que
descreva a temperatura do ambiente num local, horário e data, poderíamos ter
a seguinte relação:

ADAPTADO DE (CÔRTES, 2008)


Em Ribeirão Preto, SP,
no dia 3 de fevereiro,
15h10
às 15h10 estava uma
temperatura de 24°.
3 de fevereiro
Processamento

Entrada Classificar Saída

(Dados) Filtrar (Informações)

Organizar
Ribeirão
24°
Preto- SP

Figura 1 - Geração de informações a partir do processamento de dados.

Assim, o conjunto de dados inicial foi organizado de maneira que “faça sen-
tido” àqueles que o estiverem lendo. Isto os torna informação. No entanto, a
representação no computador é feita baseada nos dados.

E como fica o conhecimento?

Caracterizo Conhecimento como uma abstração interior, pessoal, de algo que foi expe-
rimentado, vivenciado, por alguém. Continuando o exemplo, alguém tem algum conheci-
mento de Paris somente se a visitou.

Desta maneira, o conhecimento precisa ser descrito por informações.

12 • capítulo 1
[...] A informação pode ser inserida em um computador por meio de uma representação
em forma de dados (se bem que, estando na máquina, deixa de ser informação). Como o
conhecimento não é sujeito a representações, não pode ser inserido em um computador.
Assim, neste sentido, é absolutamente equivocado falar-se de uma “base de conheci-
mento” em um computador. O que se tem é, de fato, é uma tradicional “base (ou banco)
de dados”.
Um nenê de alguns meses tem muito conhecimento (por exemplo, reconhece a mãe,
sabe que chorando ganha comida etc.). Mas não se pode dizer que ele tem informações,
pois não associa conceitos. Do mesmo modo, nesta conceituação não se pode dizer que
um animal tem informação, mas certamente tem muito conhecimento. [...]

A informação, segundo o Dr. Setzer, associa-se à semântica, enquanto o co-


nhecimento está associado à pragmática, ou seja, algo existente no mundo real.

CONEXÃO
Recomendações 1.3
Leia na íntegra o artigo do Dr. Setzer em: <http://www.ime.usp.br/~vwsetzer/dado-info.html>.
Acesso em: 24 jul. de 2014.

1.3  Breve histórico dos computadores

Um dos pontos interessantes na história do surgimento dos computadores foi


a rápida evolução das tecnologias utilizadas para sua produção.
O primeiro computador de grande porte a usar eletrônica digital foi o ENIAC
(Electrical Numerical Integrator and Calculator). Ele era de grande porte, devido
à quantidade de cálculos que ele era capaz de realizar: cerca de 5 mil somas ou
360 multiplicações por segundo (muito pouco comparado à capacidade de nos-
sos computadores atuais).

capítulo 1 • 13
WIKIMEDIA

Figura 2 – ENIAC (Parte dele, na verdade, pois aqui vemos sua interface de operação.)

O ENIAC começou a ser desenvolvido por John Eckert e John Mau-


chly. O desenvolvimento iniciou-se em 1943, com financiamento mili-
tar, para ser usado na Segunda Guerra Mundial, mas só se tornou opera-
cional em 1946. Tinha cerca de 30 toneladas e ocupava 180 m2 de área.
Em 1944, juntou-se ao grupo de pesquisadores o engenheiro John Von Neu-
mann. Este criou a arquitetura (chamada de arquitetura de Von Neumann) que é
usada até hoje nos computadores comerciais.
WIKIMEDIA

Figura 3 – O ENIAC numa visão mais ampla

14 • capítulo 1
WIKIMEDIA

O ENIAC não tinha sistema operacional e


todas as operações eram inseridas diretamente
na máquina usando códigos numéricos.
Foi produzido usando a tecnologia de válvu-
las a vácuo, que foi a tecnologia inicial para com-
putadores eletrônicos. Por isto, ele é o marco da
Primeira Geração de Computadores. O proble-
ma das válvulas era o custo alto para manuten-
ção. Para você ter uma ideia, o ENIAC foi cons-
truído usando mais de 17 mil válvulas e gastava
mais de 200.000 watts, aquecendo muito!
As válvulas eletrônicas possuíam o tama-
nho aproximado de uma lâmpada elétrica.
A era da computação comercial iniciou-se
no ano de 1951, quando o UNIVAC (Universal
Automatic Computer) foi entregue ao primeiro
cliente: o escritório do Censo do Estados Uni-
dos para tabulação dos dados do censo do ano
Figura 4 – Foto de uma válvula anterior. Pode-se dizer que o UNIVAC foi o re-
eletrônica sultado de modificações positivas no ENIAC.

Em 1947, os cientistas John Barde-


ANNEDAVE / DREAMSTIME.COM

en, Walter H. Brattain e William Sho-


ckley desenvolveram o transistor. O
transistor é um pequeno dispositivo
que transmite sinais eletrônicos usan-
do um resistor. Os transistores revo-
lucionaram a eletrônica e a maneira
de construir computadores. Além de
serem muito menores do que as válvu-
las, consumiam muito menos energia
e geravam menos calor. Também eram
Figura 5 – Foto de um transistor
simples mais rápidos e mais confiáveis do que
as válvulas. Um novo avanço, nesta
mesma época, foi a criação de uma linguagem simbólica para manipular ins-
truções das máquinas em vez de códigos numéricos, e isto tornou um pouco

capítulo 1 • 15
menos ardil a tarefa de criar programas para os computadores. Depois das
linguagens assembly (as linguagens simbólicas), surgiram as linguagens de
“mais alto nível”, como Fortran e COBOL. São linguagens com comandos em
inglês, em vez de símbolos e marcações como nas linguagens assembly. E esta
foi chamada a segunda geração dos computadores. Nesta época, os computa-
dores ainda não atingiam as pessoas “comuns” da sociedade, sendo usados
apenas por universidades e por organizações do governo e militares.
Entre 1965 e 1970, surgiu o Circuito Integrado (CI). Trata-se de um circuito
eletrônico completo num pequeno chip feito de silício. Em 1965, os CIs come-
çaram a substituir os transistores nos computadores e aí nós tivemos os Com-
putadores de Terceira Geração.

ALEXSKOPJE / DREAMSTIME.COM

Figura 6 – Foto de circuitos integrados

O silício é um material chamado semicondutor, pois conduz corrente elétri-


ca quando misturado com impurezas químicas em sua constituição (você pode
pesquisar os detalhes de materiais semicondutores se ficar curioso!).
O marco importante desta terceira geração foi o lançamento do computador da
série IBM 360 em 1964. Trata-se de uma linha de computadores projetada pela IBM
tanto para uso comercial quanto científico. Foi uma série com o intuito de inserir o
uso de computadores nos negócios e em operações comerciais.

16 • capítulo 1
NASA / WIKIMEDIA
Figura 7 – O IBM 360

Já a quarta geração de computadores, com início na década de 1970, traz


consigo a criação do microprocessador. Os computadores atuais são muito me-
nores, mais de 100 vezes menores que aqueles de primeira geração, mas um
único chip é mais poderoso que o próprio ENIAC. Para você ter uma ideia, em
1977 uma calculadora podia fazer cerca de 250 multiplicações por segundo,
custava de 300 a 500 dólares e pesava mais de 500 gramas. Hoje, uma calcula-
dora pesa muito pouco, custa 1 dólar ou menos às vezes (depende da cotação)
e realiza muito mais cálculos. Em comparação ao ENIAC, um Pentium de 150
MHz era capaz de mais de 300 milhões de operações de soma por segundo, en-
quanto que o ENIAC processa apenas 5.000 operações.

CONCEITO
International Business Machines (IBM) – trata-se de uma empresa de desenvolvimento de
hardware e software, estadunidense, com quase um século de existência. Mais informações
em <http://www.ibm.com/ibm/br/pt/>.

capítulo 1 • 17
Dê uma olhada na figura a seguir.

Figura 8 – Evolução dos computadores


Retirado de A história dos processadores, desde ENIAC até Nehalem/INTEL.

Claro que a história mais recente dos computadores você já conhece, mas
vamos apenas comentar um pouco sobre os computadores pessoais. Estes com-
putadores mudaram completamente o paradigma do uso de computadores.
O primeiro computador pessoal que foi disponibilizado ao público em ge-
ral foi o MITS Altair, produzido em 1975. Na época, foi “choque” grande, pois
os computadores só faziam sentido para empresas, universidades, o governo
ou os militares! Para que ter um computador em casa? Se fosse para investir,
investiria em maquinários, em ferramentas, mas um computador? Não teria
serventia! Esse seria um típico discurso de um pai cujo filho acabou de lhe fazer
um pedido naquela época!

18 • capítulo 1
ATENÇÃO
A evolução na velocidade dos microprocessadores é tida para alguns como a quinta geração
dos computadores. O marco seria o microprocessador Intel 386, que permitia a execução de
várias tarefas ao mesmo tempo.

Quando Steve Jobs e Steve Wozniak mostraram ao público jovem o Apple I,


todo mundo foi ao delírio! Ele possuía um teclado fácil de usar e tela! A Apple
mostraria, mais tarde, sua facilidade em conseguir sucesso comercial com o
Apple II e o software de planilha eletrônica VisiCalc.
VOLKER STEGER / SCIENCE PHOTO LIBRARY / SPL DC / LATINSTOCK

VOLKER STEGER / SCIENCE PHOTO LIBRARY / SPL DC / LATINSTOCK


Figura 10 – Apple I Figura 11 – Apple II

Em 1981, a IBM lançou seu primeiro computador pessoal e capturou a


maior fatia de mercado em 18 meses. O padrão IBM PC foi adotado e copiado
por outras empresas.
HO / IBM / AFP

Figura 12 – IBM PC

capítulo 1 • 19
Não podemos nos esquecer de um nome importantíssimo no século passado.
Claro, ainda é um nome muito importante: Microsoft. A hoje gigante empresa de
software forneceu o sistema operacional para o computador pessoal da IBM. Este sof-
tware, chamado de MS-DOS, foi usado pela IBM e pelas empresas que criaram com-
putadores pessoais baseadas no padrão IBM PC. Com grande expansão, a Microsoft
logo evoluiu para novas versões de seu sistema operacional até que “descobriram” e
popularizaram a interface gráfica com o sistema operacional Windows! Os sistemas
Windows mudaram o conceito de interface entre usuário e computador. Não foi a
Microsoft que criou o conceito de interface gráfica, mas foi uma das principais em-
presas (senão a principal) a popularizá-lo!

CONEXÃO
Recomendações 2.1
Assista ao filme história do computador em minutos disponível em <www.youtube.com/wa-
tch?v=F3qWg1JBPZg>.
Acesso em: 24 jul. de 2014.

1.4  Visão geral do computador pessoal

O hardware de seu computador pessoal precisa dos seguintes componentes


para um efetivo funcionamento:
•  dispositivos de entrada;
•  dispositivos de saída;
•  dispositivos de armazenamento secundário;
•  unidade de processamento.

O funcionamento básico de um computador convencional acontece de


acordo com a figura a seguir:

20 • capítulo 1
Armazenamento secundário

ADAPTADO DE: (CAPRON E JOHNSON, 2004)


O dispositivo de
armazenamento
secundário armazena
dados e programas

A unidade central de
processamento (UCP)
executa instruções
O dispositivo
O dispositivo de computador
de saída
de entrada envia
disponibiliza
dados à unidade
os dados
central de
processados
processamento
A memória mantém (as Informações)
dados e programas em
uso no momento

Entrada Processamento Saída

Figura 13 – Componentes principais de um computador e mecanismo de funcionamento.

As informações são inseridas no ambiente computacional por meio dos


dispositivos de entrada. Estes dispositivos permitem que nós, seres humanos,
ou equipamentos forneçamos informações para serem processadas. Exemplos
seriam o mouse, o teclado, leitores óticos, dentre outros.
Estas informações de entrada são armazenadas na memória, e a unidade
central de processamento (UCP) realiza o devido tratamento destas. Após isto,
dispositivos de saída podem exibir o resultado do processamento. Exemplos
de dispositivos de saída são monitores, impressoras, dispositivos de som etc.

CONEXÃO
Recomendações 2.3
Veja o vídeo do Olhar Digital sobre o que considerar na hora de comprar um computador, em
<www.youtube.com/watch?v=vYo6IceDsVQ>.

capítulo 1 • 21
Além disso, existem componentes que permitem a gravação de dados de
maneira permanente e também o intercâmbio de dados. Estes dispositivos são
chamados de dispositivos de armazenamento secundário.
Detalhando um pouco mais os componentes de um computador, temos a
figura a seguir.

2 3

1
6

Figura 14 – Componentes básico do computador: 1 – monitor, 2 – placa-mãe, 3 – proces-


sador, 4 – memória RAM, 5 – placas de expansão, 6 – fonte de alimentação, 7 – leitor ótico
(DVD, CD etc.), 8 – disco rígido (hd), 9 – mouse, 10 – teclado.

Dispositivos de entrada: 10 e 9
Dispositivos de saída: 1
Armazenamento secundário: 7 e 8
Elementos da UCP: 2, 3, 4, 5 e 6.

A UCP representa toda a unidade que faz o processamento, mas não é um


único componente, pois reúne diversos outros. Por exemplo, a placa-mãe, que
recebe este nome em razão de todos os demais componentes da UCP, periféri-
cos de entrada e de saída, dependerem dela para conexão. É uma placa que faz
a interligação entre todos os componentes do computador. Nela há os slots de
memória, onde fica a memória RAM do computador. A memória RAM (memó-
ria de acesso randômico) é a memória de trabalho da máquina. Nela ficam os

22 • capítulo 1
programas que estão sendo processados e todas as informações necessárias.
Além da memória RAM, temos o próprio processador, a unidade capaz de reali-
zar complexas operações matemáticas, e as placas de expansão, que permitem
adicionarmos novas funcionalidades ao nosso computador, como uma placa
que faça processamento dedicado de vídeo. Enquanto a memória RAM guarda
as informações de trabalho, os discos rígidos guardam todas as informações
e todos os programas. Quando desligamos o computador, as informações são
salvas no disco. Quando ligamos o computador, os programas necessários para
utilização dele, bem como aquele que desejarmos, são carregados do disco
para a memória RAM.
Além dos componentes vistos, podemos enumerar um outro tipo de dispo-
sitivo: Dispositivo para Comunicação Externa. No hardware de seu computa-
dor, ele é tratado com um dispositivo de entrada e saída, mas é interessante
diferenciá-lo. Exemplos destes dispositivos são:
•  placas de rede;
•  hub;
•  switch;
•  modems.

1.5  Elementos Básicos da Arquitetura de Von Neumann

Lembra-se de termos comentado sobre John Von Neumann, que participou da


criação do ENIAC? Apesar de Von Neumann ter sua formação na área de mate-
mática, sua contribuição foi muito importante em diversas outras áreas e, ele
popularizou a chamada Arquitetura de Von Neumann, que será nosso objeto de
estudo agora.
A arquitetura de Von Neumann é a base da construção da principal arquite-
tura dos computadores modernos, os PCs.
De maneira bem simples, ela funciona assim:
A unidade central de processamento (UCP) faz operações com
1.  Informações. Estas operações podem ser:
a) operações de entrada e saída, como leitura de dados do teclado e
escrever dados na tela. São operações para inserção de dados na
memória do computador ou para exibição de informações que es-
tejam armazenadas nesta.

capítulo 1 • 23
b) operações aritméticas como adição, subtração, multiplicação e di-
visão de valores inteiros ou ponto flutuante (basicamente, núme-
ros reais representados num formato definido);
c) operações lógicas e relacionais como comparações, testes de con-
dições lógicas etc.;
d) movimentação de dados entre os vários componentes, ou seja, res-
gate e inserção de informação na memória ou em dispositivos de
entrada e saída.
2.  Para fazer estas operações, necessitará de que as informações estejam
na memória. Trata-se de um componente eletrônico para armazenar
informações.
3.  Além da memória, existem os dispositivos de entrada e saída, como te-
clado e mouse (entrada) ou monitor e impressora (saída), que emitirão
as informações num formato legível ao usuário do computador.

Memória Primária Dados

Unidade de
Dados

Dados

Entrada e
Saída

Unidade Lógico Unidade de


Controle
e Aritmética Controle

Figura 15 – A arquitetura de Von Neumann – Visão interna do funcionamento de um com-


putador.

Então, basicamente, na arquitetura de Von Neumann, o que ocorre é que


uma máquina pode armazenar seus programas e executá-los numa unidade
responsável por diferentes operações.
Pela figura, pudemos ver que as informações podem ser dados ou infor-
mações de controle. As informações de controle são aquelas que dizem o que
deve ser feito com os dados. Por exemplo, se tivéssemos, de alguma maneira,

24 • capítulo 1
na memória a informação da expressão “5 + 7 < 10 ?”, saberíamos que estamos
tentando comparar a soma de 5 e 7 com o valor 10 e saber quem é maior. Logo,
5, 7 e 10 são dados e “+” , “<” e “?” são informações de controle. O computador
entenderia que deve somar os dados 5 e 7 (controle +) e verificar se o resultado
é menor que 10 (controle < e resultado ?).
As duas outras unidades da figura são a ULA (Unidade Lógica e Aritmética)
que serve para realizar as operações, efetivamente, e a UC (Unidade de Contro-
le), que serve para decodificar as operações, ou seja, entender o que precisa ser
feito, e disparar novas operações, caso necessário.
A UCP entende operações num determinado formato. Vamos aqui chamar
formato de linguagem, ok?
Bom, o computador entende a linguagem eletrônica que popularmente é
chamada de binária, devido à sua representação. Como um programador vai
escrever códigos que descrevam operações em binário? Não vai (geralmente)!
Nesse ponto, entrará em cena uma camada intermediária que cuidará disto
para ele! Um programador de hoje escreve código em linguagem de alto nível. Isto
quer dizer que a linguagem é de mais fácil compreensão humana!

Os passos seguidos por um programador são:


1.  Ele pensa no problema e o analisa;
2.  depois formula algoritmos que possam resolver este problema;
3.  na sequência, transforma os algoritmos em código de alto nível (esta
fase é chamada de codificação ou programação);
4.  após isto, traduz o código de alto nível, que resultará num “executável”;
5.  um executável é um programa que roda sobre uma plataforma;
6.  uma plataforma é um computador com sua arquitetura e um sistema
“principal” de gerenciamento de seus recursos, chamado sistema ope-
racional;
7.  o sistema operacional “sabe” como fazer o executável funcionar, usan-
do memória, dispositivos de entrada e saída etc.
8.  o Windows, o Linux, o Solarix e o Unix, dentre outros, são exemplos de
sistemas operacionais (veremos mais sobre sistemas operacionais no
capítulo seguinte).
9.  mas sistema operacional – por exemplo Windows–, não é aquela inter-
face que você vê com editores de texto e planilhas. Ele compreende os
programas, as rotinas que estão por trás de todo o funcionamento de
seu computador (também veremos mais disto no capítulo seguinte).

capítulo 1 • 25
1.6  Construção de algoritmos simples

Algoritmos são conjuntos sistemáticos e formalizados de intruções voltados


para resolução de um problema (PIVA JR. et al, 2012). O conceito de algorit-
mo não é exclusivo da computação: uma receita de bolo, por exemplo, pode ser
considerado como tal. Porém, a estrutura de algoritmos se tornou mais difun-
dida a partir da programação.
Nos próximos dois capítulos, vamos relacionar os conceitos de organização
e arquitetura de computadores com sua implementação em algoritmos sim-
ples. Para tanto, vamos apresentar um ambiente de programação que pode ser
facilmente usado pelo aluno, além de uma explicação introdutória sobre a es-
trutura de algoritmos.

1.6.1  Indicação de ambiente de desenvolvimento

Para simplificar o processo de codificação de algoritmos por meio de pseudo-


códigos que utilizaremos neste e no próximo capítulo um ambiente de desen-
volvimento conhecido como VisuAlg. Esse ambiente pode ser obtido gratuita-
mente e permite a construção e simulação de algoritmos. O programa VisuAlg é
muito indicado para programadores iniciantes, uma vez que possui uma inter-
face simplificada e de fácil compreensão. O quadro 1.1 apresenta os endereços
principais do ambiente de desenvolvimento VisuAlg.

SITE OFICIAL
http://www.facom.ufu.br/~claudio/Cursos/PP/Docs/Visualg2.pdf

Download (endereço abreviado)

goo.gl/n8YLk

Download (endereço completo)

http://www.guanabara.info/2007/09/visualg-v25/

Quadro 1.1 – Ambiente de Desenvolvimento VisuALg.

26 • capítulo 1
Inicialmente utilize um dos endereços apresentados no quadro 1.1 para reali-
zar o download do ambiente. Escolha uma pasta no seu computador para arma-
zenar o arquivo. Finalizado o processo de download clique duas vezes sobre o
arquivo e você visualizará uma tela semelhante a ilustrada na figura 15.

Figura 16 – Tela inicial do instalador do VisuAlg.

Clicando no botão avançar você poderá definir o diretório para instalação


do programa. Geralmente não é necessário modificar o diretório, assim, clique
novamente no botão avançar. Na tela Componentes Selecionados, você tam-
bém não precisará realizar nenhuma alteração, dessa forma, clique novamente
no botão avançar. A tela Selecione o grupo do menu Iniciar, permite a especifi-
cação do nome que será definido para menu, o que novamente não necessita de
modificação. A tela seguinte Selecionar Tarefas Adicionais, também já possui
as principais configurações definidas, com isso, você pode clicar no botão avan-
çar, e em seguida, clique no botão instalar. A instalação é rápida e dura apenas
alguns segundos. No final, você já poderá iniciar o ambiente VisuAlg.
Para a criação de um novo algoritmo no ambiente VisuAlg, você deverá uti-
lizar o menu Arquivo>Novo, ou simplesmente pressionar as teclas de atalho
CTRL+N. Dessa forma, um novo algoritmo será criado conforme ilustra a figura
2. Para salvar os algoritmos codificados você deverá utilizar o menu Arquivo>-
Salvar (CTRL+S). O ambiente VisuAlg utiliza a extensão .alg para representar os
arquivos com algoritmos.

capítulo 1 • 27
Figura 17 – Criação de um novo algoritmo no ambiente VisuAlg.

Nesse momento você já tem o ambiente para desenvolvimento de algorit-


mos VisuAlg instalado no seu computador. Além disso, você já sabe como criar
um novo algoritmo. Poderemos agora iniciar um estudo mais detalhado a res-
peito da construção de algoritmos.

1.6.2  Estrutura básica de um algortimo

O primeiro passo para a construção de algoritmos computacionais é o enten-


dimento do conceito de algoritmo. Segundo Forbellone (2005), um algoritmo
é uma sequência de passos que visa atingir um objetivo bem definido. Outra
definição pode ser encontrada em Ascencio e Edilene (2002), em que um al-
goritmo é descrito como uma sequência de passos que deve ser seguida para
a realização de uma tarefa. Dentro deste contexto, você pode entender o termo
algoritmo como um conjunto de passos que busca a solução de um problema.
No cenário computacional, os algoritmos têm como fundamento a elabo-
ração de uma sequência de passos de forma que o computador seja capaz de
solucionar um determinado problema. Em geral, os algoritmos são utilizados
para abstrair1 problemas do mundo real, e transformá-los em soluções no mun-
do computacional.

1 Avaliar características e propriedades em separado; considerar à parte.

28 • capítulo 1
A escrita de algoritmos é a base para o processo de desenvolvimento dos pro-
gramas de computador. No ciclo de vida do desenvolvimento de um programa, o
primeiro estágio é a elaboração da representação algorítmica. Assim, inicialmen-
te, os programadores criam uma especificação algorítmica do problema compu-
tacional, antes de transformá-lo no código fonte de uma determinada linguagem
de programação. Com a representação algorítmica do problema é possível espe-
cificar quais as principais funcionalidades do futuro programa, bem como, iden-
tificar possíveis erros que ocorrerão com a execução do programa.
Para a construção de um algoritmo computacional é necessário a utiliza-
ção de uma estrutura básica, que é definida a partir de uma sintaxe específica
e contém blocos pré-determinados para codificação. Nesta estrutura, é especi-
ficado, por exemplo, o nome do algoritmo, quais variáveis serão utilizadas e o
bloco de instruções que contém a lógica do programa. O código 1 apresenta a
estrutura básica de um algoritmo computacional, a qual foi definida utilizando
uma representação conhecida como pseudocódigo. Esse tipo de representação
também é comumente descrita como português estruturado ou portugol.

Código 1
1 algoritmo “semnome”
2 // Função :
3 // Autor :
4 // Data : 20/10/2011
5 // Seção de Declarações
6 var
7
8 inicio
9 // Seção de Comandos
10 fimalgoritmo

Na primeira linha do algoritmo é necessário especificar um nome, da mes-


ma maneira que você define nomes para documentos em editores de texto.
As linhas 2, 3 e 4 apresentam informações gerais a respeito dos algoritmos.

capítulo 1 • 29
É importante destacar que estas linhas começam pelos caracteres //, os
quais são chamados de comentários. Uma linha de comentário tem como
objetivo auxiliar o entendimento do algoritmo, assim, você poderá utilizá-las
sempre que necessário. Outro detalhe interessante sobre os comentários, é
que as linhas comentadas não influenciam na execução do algoritmo, dessa
forma, você poderá escrever comentários em português da maneira que de-
terminar mais adequada. Na linha 5 temos a seção de declarações, a qual será
utilizada para declaração das variáveis que fazem parte do programa. A linha
8 define o início do algoritmo, e as linhas seguintes (Seção de Comandos),
especificam a lógica de programação utilizada no algoritmo. Por fim, a linha
10, denominada fimalgoritmo, representa o término do algoritmo.
Para demonstrar a utilização do ambiente VisuAlg na codificação de algo-
ritmos, vamos escrever nosso primeiro algoritmo. Este algoritmo tem como
objetivo exibir seu nome completo na tela, assim, inicialmente você deverá
abrir o ambiente e escrever o algoritmo conforme apresentado na figura 17.

Figura 18 – Codificação do algoritmo para exibir o nome na tela.

Finalizada a codificação do algoritmo é fundamental salvar o código antes


de realizar a execução. Para isso, utilize o menu Arquivo>Salvar, ou simples-
mente pressione a tecla de atalho Ctrl+S. Você pode escolher a pasta de sua
preferência para armazenar o arquivo. A escolha do nome do algoritmo é im-

30 • capítulo 1
portante, assim, recomenda-se não utilizar espaços, acentos, ou caracteres es-
peciais. Para este exemplo, utilizaremos o seguinte nome unid3_exemplo01.
alg. A extensão .alg é utilizado pelo ambiente VisuAlg para identificar arquivos
do tipo algoritmo.
Para facilitar o acompanhamento da codificação, você pode exibir os nú-
meros das linhas, dessa forma, utilize o menu Exibir>Número de linhas para
habilitar o recurso. Em seguida, poderemos executar o algoritmo e visualizar o
resultado na tela. A execução de um algoritmo no ambiente VisuAlg é realizada
por meio do menu Algoritmo > Executar, alternativamente, você poderá utilizar
a tecla de atalho F9. A figura 4 apresenta o resultado da execução do algoritmo.

Figura 19 – Resultado da execução do algoritmo no ambiente VisuAlg.

Com isso, você aprendeu os procedimentos para codificação de um algoritmo


no ambiente VisuAlg, bem como, sua execução e visualização dos resultados.

ATIVIDADE
1.  Especifique a diferença entre organização e arquitetura de computadores.

2.  Descreva a arquitetura de Von Neumann.

3.  Pode-se dizer que o computador pessoal extinguiu os mainframes? Justifique.

4.  Pesquise sobre outras arquiteturas de computadores além daquela de Von Neumann.

capítulo 1 • 31
REFLEXÃO
Vimos até aqui que há muito mais sobre computadores do que simplesmente entender como
eles funcionam. A história e a evolução dos computadores determinaram, de certa forma,
como as pessoas passaram a pensar em tecnologia e a “consumir” tecnologia. Mesmo que
você não se torne especialista na área de tecnologia da informação, é sempre importante
saber como funcionam os equipamentos que serão usados no dia a dia. Isto facilita o diálogo
entre nós e as novas tecnologias.

LEITURA
Artigo – O papel da informação no processo de capacitação tecnológica das micro e peque-
nas empresas. Escrito por Paulo César Rezende de Carvalho Alvim.
Disponível em:
<http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0100-19651998000100004>

Livro – Administração de Sistemas de Informação, do autor Pedro Luiz Cortes. Livro muito
interessante e abrangente sobre o uso de sistemas de informação nas empresas.

REFERÊNCIAS BIBLIOGRÁFICAS
CAPRON, H. L.; JOHNSON, J. A. Introdução à Informática. São Paulo: Pearson Prentice Hall.
2004.

LAUDON, K. C. e LAUDON, J. P. Sistemas de Informação Gerenciais. São Paulo: Prentice Hall.


2007.

MONTEIRO, M. A. Introdução à Organização de Computadores. 5a ed. São Paulo: LTC, 2007.

MURDOCA, M. J.; HEURING, V. P. Introdução à Arquitetura de Computadores. Rio de Janeiro:


Campus, 2000.

32 • capítulo 1
NULL, L.; LOBUR, J. Princípios Básicos de Arquitetura e Organização de Computadores. 2a ed.
Porto Alegre: Bookman, 2010.

PIVA JR., D.; NAKAMITI, G. S.; ENGELBRECHT, A. M.; BIANCHI, F. Algoritmos e Programação de
Computadores. Rio de Janeiro: Elsevier, 2012.

STALLINGS, W. Arquitetura e Organização de Computadores. São Paulo: Prentice Hall, 2002.

NO PRÓXIMO CAPÍTULO
No próximo capítulo, entederemos como os dados são representados na computação. Serão
vistos os conceitos de bit, byte, bases e a conversão entre elas.

capítulo 1 • 33
2
Representação de
Dados
2  Representação de Dados
No capítulo prévio, entendemos o computador como uma máquina que pro-
cessa dados. Deve-se notar que existem artefatos mecânicos que, mesmo com
capacidade limitada, conseguem fazer também processamento – tal como cal-
culadoras mecânicas criadas no séc. XVII. Claro que pela sua capacidade e flexi-
bilidade, o nosso interesse reside nos computadores baseados em dispositivos
eletrônicos, e assim descrevemos no capítulo anterior a evolução das máquinas
baseadas em válvulas, transistores simples e microprocessadores. Porém, não
foi respondida uma pergunta importante: como os computadores eletrônicos
conseguem reconhecer dados.
Para tratar dessa questão, este capítulo começa com a definição de elementos fun-
damentais da linguagem binária, partindo para bases numéricas fundamentais.

OBJETIVOS
•  Compreender o que são bits, bytes e palavras (words).
•  Conhecer as principais bases numéricas.
•  Saber como o computador representa números e caracteres.
•  Entender, sob a perspectiva de programação, o relacionamento entre variáveis e tipos de dados.

REFLEXÃO
Ao preencher dados em formulários eletrônicos, muitas vezes recebemos mensagens de
erro, indicando incompatibilidade entre os dados que entramos e o tipo de dados esperado.
Qual seria a consequência de não haver esse controle?

2.1  Elementos binários fundamentais: bits, bytes e words.

Pode-se pensar em diversas propriedades relacionadas ao componente ele-


trônico e à corrente elétrica, tais como voltagem, amperagem, frequência de
sinal, etc. Porém, fundamentalmente, um dispositivo tem ou não corrente elé-
trica passando por ele, em suma, está desligado ou ligado. Por isso, a forma
básica de representação de dados em componentes eletrônicos se baseia na
linguagem binária (LAUDON & LAUDON, 2007; CAPRON & JOHNSON, 2004).

capítulo 2 • 35
Essa linguagem contém dois dígitos apenas, os quais vão corresponder aos dois
estados básicos. A representação desses dois dígitos foi convencionada como
sendo 0 ou 1. Deve-se comentar que a linguagem binária foi desenvolvida antes
mesmo da eletrônica e da computação, porém se mostrou perfeitamente ade-
quada para esses campos de desenvolvimento (NULL & LOBUR, 2010).
À unidade de dígito binário (zero ou um) se dá o nome de bit, termo vindo do
inglês binary digital unit (STALLINGS, 2002). Como bits isolados podem conter
apenas dois estados, números e palavras são representados por diversos bits
seguindo determinada convenção. À época do desenvolvimento do IBM 360, os
engenheiros da empresa passaram a usar conjuntos de 8 bits como unidade
básica de endereçamento de memória – este sendo um assunto tratado no capí-
tulo 4. Esse conjunto de 8 bits é chamado de byte. Deve-se notar que a definição
do byte estava ligada à arquitetura e características do hardware. Com o tem-
po, as unidades de endereçamento foram crescendo, sendo 32 bits e 64 bits
as mais encontradas hoje. O termo word ou palavra é usado para identificar
esses conjuntos de bits adjacentes, sendo o seu número variável segundo o uso
(MONTEIRO, 2007), ver quadro 2.1.

Bit • Digito binário

Byte • Conjunto de 8 bits

• Número convencionado
WORD
de bits adjacentes

Figura 1 – Elementos fundamentais de Linguagem Binária (MONTEIRO, 2007).

CONEXÃO
Assista a um vídeo sobre o funcionamento do computador e o uso de bits e bytes:
<https://www.youtube.com/watch?v=6oDiJLg6xbE>
Acesso em: 24 jul. de 2014.

36 • capítulo 2
Tamanho Exemplo
bits 1
nibble 1 1 0 1
byte 0 0 0 1 1 1 1 1
16 bits 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1
32 bits 0 0 1 1 0 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 1 0

Quadro 2.1 – Conjunto de Dados mais Comuns


Fonte: adaptado de (MONTEIRO, 2007, p. 94)

O aumento de capacidade de processamento e armazenamento de dados


nos deixou familiares com termos como megabyte, gigabyte, etc. Essas unida-
des se referem a potências de dez de quantidade de bytes, conforme está rela-
cionado no quadro 2.2.

MÚLTIPLOS SÍMBOLO VALOR


kilo k 1000

mega M 10002

giga G 10003

tera T 10004

peta P 10005

exa E 10006

zetta Z 10007

yotta Y 10008

Quadro 2.2 – Múltiplos decimais de bytes


Fonte: (STALLINGS, 2002)

capítulo 2 • 37
A definição simples desses múltiplos pode ser melhor ilustrada com algu-
mas estimativas de uso:
•  A Biblioteca do Congresso Americano guardava em 2011 cerca de 235 te-
rabytes (MCKENNA, 2013).
•  Em 2008, o Google já processava 20 mil terabytes ao dia (SCHONFELD,
2010).
•  Os serviços de mapas do Google disponibilizam certa de 20 petabytes de
imagens (MCKENNA, 2013).
•  Em 2014, estima-se que o Facebook tinha nada menos do que
258 petabytes em arquivos de fotos e vídeos (LEUNG, 2014).
•  A capacidade do cérebro humano para armazenar memória seria equiva-
lente a 2,5 petabytes (SMITH, 2010).

Deve-se reforçar que esses números são apenas estimativas, sendo o cálculo
preciso bastante complexo e sujeito a diversas questões metodológicas.

Figura 2 – Biblioteca do Congresso Americano, Washington.


<http://commons.wikimedia.org/wiki/File:Library_of_Congress_Interior_
Jan_2006.jpg>
Acesso em: 24 jul. de 2014

38 • capítulo 2
Figura 3 – Um dos datacenter do Facebook, Oregon.
Fonte: <http://commons.wikimedia.org/wiki/File:Facebook_Data_Center.jpg>
Acesso em: 24 jul. de 2014

Até este ponto tratamos de alguns elementos básicos de linguagem binária


e demos alguma noção de escala de uso. Entretanto como números e palavras
são representados nesse tipo de convenção? Para explorarmos esse assunto, é
preciso conhecer algumas bases numéricas e como se pode convertê-las.

2.2  Bases numéricas

2.2.1  Base decimal


O sistema numérico decimal foi adotado dos árabes pelo europeus e é a base
que usamos para contas simples a complexas transações financeiras em nossa
economia (NULL & LOBUR, 2010). Como é um sistema muito comum, não nos
detemos para pensar como funciona. Veja o exemplo abaixo de decomposição
de números em base decimal:
15 = 1x10 + 5x1
146 = 1x100 + 4x10 + 6x1
8303 = 8x1000 + 3x100 + 0x10 + 3x1

capítulo 2 • 39
Outra forma importante de decompor números é com o uso de potências.
Os números acima podem ser reescritos como em termos de potências de 10,
lembrando que qualquer potência elevada a zero é igual a 1:

15 = 1x101 + 5x100

Nesse caso, temos dois dígitos: o dígito 5, corresponde ao multiplicador da


potência elevada a zero. O dígito 1, corresponde ao multiplicador da potência
elevada a 1. Por analogia, examine os casos seguintes:
146 = 1x102 + 4x101 + 6x100
8303 = 8x103 + 3x102 + 0x101 + 3x100

Em outras bases numéricas, usamos potências de base correspondente.


Mas por que estudamos outras bases? Dependendo da utilização, a base deci-
mal pode não ser a mais eficiente e eficaz. Deve-se saber que há uma notação
que explicita em que base o número deve ser entendido:
(153)10 refere-se a 153 na base decimal.
(1110)2 refere-se a 1110 na base binária, que será vista a seguir.

2.2.2  Base binária

Como sabemos, é mais adequado implementar dados em base binária no


computador. No quadro 3, temos uma relação da representação dos números
de 1 a 15. Porém como esses números são formados? Podemos entendê-los a
partir de sua decomposição em potências de dois:

(14)10 = (1 1 1 0)2 = (1x23) + (1x22) + (1x21) + (0x20)

= 8 + 4 + 2 + 0 = 14

Por analogia, verifique estes três exemplos:


(1)10 = (1)2 = 1x20 = 1
(2)10 = (10)2 = 1x21 + 0x20 = 2 + 0 = 2
(9)10 = (1001)2 = 1x23 + 0x22 + 0x21 + 1x20 = 8 + 0 + 0 + 1 = 9

40 • capítulo 2
0 0

1 1

2 10

3 11

4 100

5 101

6 110

7 111

8 1000

9 1001

10 1010

11 1011

12 1100

13 1101

14 1110

15 1111

Quadro 2.3 – Representação Binária de Inteiros Positivos (zero a quinze)

Olhando novamente o quadro 2.3, vemos que o número 1 é representado


por um dígito, já o número nove por quatro. Para a estrutura do computador, é
interessante termos uma padronização dos processos de leitura e alocação de

capítulo 2 • 41
memória para cada variável. O byte, também referido como octeto (MURDO-
CA & HEURING; 2000), surgiu com essa preocupação, definindo conjuntos em
uma quantidade fixa de 8 bits. No caso do número 1, os seus dígitos vacantes
são preenchidos por zero, assim temos na representação de inteiros positivos:
(1)10 = (000000001)2
(9)10 = (00001001)2
(255)10 = (11111111)2

Usando as combinações possíveis de zeros e uns em 8 bits, um byte pode


representar 256 valores numéricos, ou seja, 28. Se precisássemos usar apenas
inteiros positivos, poderíamos representar valores começando por zero até che-
gar a 255. Contudo, para indicar se o valor é negativo ou positivo em um byte,
precisamos usar um dígito para ter essa informação. Assim, usando-se o byte,
chega-se a um intervalo que vai de -128 a 127 (STALLINGS, 2002) .

Bug do Milênio
Quando os sistemas computacionais estavam sendo desenvolvidos no pós-guerra, um
dos principais gargalos era a capacidade de memória e processamento. Por essa ra-
zão, foi simplificada a representação dos anos, subentendendo que todas as datas se
referiam ao século 20. Assim, a representação de “1985” correspondia a 85, suben-
tendendo-se os dígitos “19” à frente. Chegando a “2000”, porém, teríamos “00”, que
seria entendido como “1900”. Previu-se que esse problema de representação pudesse
causar o colapso de muitos sistemas computacionais, mas as consequências foram
muito menores do que as previstas (BBC, 2014).
Também pela forma de representação de datas, estão previstos problemas em 2038
com sistemas UNIX de 32 bits e programados na linguagem C (SMAAL, 2011).

Para representar valores maiores ou menores do que esse intervalo, há duas


saídas principais. A primeira é lançar mão de words (palavras), como de 16 bits
ou 32 bits citados anteriormente. Em uma palavra de 16 bits, os valores de
números inteiros podem variar de -32.768 a 32.767 (MONTEIRO, 2007). A quan-
tidade de bits e o formato que são convencionados a cada dado é importante.
Antes de mais nada, quanto maior o word, naturalmente maior é o uso de me-
mória e capacidade de processamento. Outro fator importante é que uma vez
fixado o tamanho de certo tipo de dado em um sistema, o custo de mudança

42 • capítulo 2
pode ser considerável. O problema (bug) do milênio e de 2038 são exemplos de
problemas advindos da fixação inadequada de bits para variáveis de data.
A passagem de bytes para words de 16 bits e de words de 16 para 32 bits re-
quer mais capacidade e mudanças na estrutura de hardware. Buscou-se evitar
a necessidade dessas mudanças e ainda de aumentar o escopo para represen-
tação de números reais por meio de método de representação por ponto flutu-
ante (STALLINGS, 2002). Esse método se baseia na representação de números
por seus algarismos significativos e potências. O padrão mais usado para esse
método denomina-se IEEE 754, servindo de base para construtores de hardwa-
re e programadores (MONTEIRO, 2007).
Os números a seguir possuem grandezas bastante diferentes, mas podem
ser representados com basicamente a mesma quantidade de bits:
1,27 x 106 = 1,27 x 1000000 = 1270000
7,31 x 10-2 = 7,31 x 0,01 = 0,0731

Nos dois casos, temos três algarismos significativos e determinada potência


na base 10. Assim, podemos representar números inteiros e aproximar valores
fracionários e dízimas, ampliando consideravelmente o intervalo de represen-
tação numérica. O termo “ponto flutuante” vem do fato da vírgula na represen-
tação numérica poder estar na casa centesimal, unitária, de milhar, etc.
Assim como é possível somar e subtrair usando o sistema decimal, é possí-
vel fazer as opções aritméticas com o sistema binário, incluindo números de
ponto flutuante.

CONEXÃO
Saiba mais sobre o método ponto flutuante e padrão IEEE 754:
<http://www.lia.ufc.br/~valdisio/download/ieee.pdf>
Acesso em: 24 jul. 2014.

2.2.3  Base hexadecimal

Esse sistema possui o número 16 como base e é indicado por contração “hex”.
Como notação, geralmente usa-se a convenção abaixo (STALLINGS, 2002):

capítulo 2 • 43
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 1 2 3 4 5 6 7 8 9 A B C D E F

Diversas representações computacionais, padrões e linguagens usam a


base hexadecimal. Um exemplo são as representações de cores em HTML, em
que se inicia com # para depois especificar quatro dígitos hexadecimais. A cor
azul primária, por exemplo, é representada por “#0000FF”.

2.2.4  Conversão entre bases

Ao usar o computador, sem perceber estamos usando a conversão entre siste-


ma decimal e binário a todo o tempo. Há diversas ferramentas na WEB e em
planilhas eletrônicas para fazer realizar a conversão entre diversos sistemas.
Para ilustrar aqui uma conversão simples, vamos mudar o número 9 da base
decimal para binária. Vamos usar o método de divisão e resto (NULL & LOBUR,
2011), que serve apenas a números inteiros sem sinal. Repare que os dígitos da
base binária vão corresponder ao resto da divisão:

9 2
1 4 2
0 2 2
0 1 2
1 0

CONEXÃO
Conheça um ferramenta na Web para conversão entre bases numéricas:
<http://wims.unice.fr/wims/en_tool~number~baseconv.en.html>
Acesso em: 24 jul. 2014.

Os passos feitos foram esses:


•  Dividindo-se 9 por 2, temos 4 com resto 1.
•  Dividindo-se 4 por 2, temos 2 com resto 1.

44 • capítulo 2
•  Dividindo-se 2 por 2, temos 1 com resto 0, para converter precisamos fa-
zer mais uma divisão.
•  Atenção: dividindo-se 1 por 2, considera-se o resultado 0 com resto 1.

Usando os restos, na ordem da esquerda para a direita, temos:


(9)10 = (1001)2

ATENÇÃO
O Excel tem funções implementadas que permitem a conversão entre bases numéricas.
Se você, por exemplo, possuir o número 14 em uma célula A1, você pode implementar
uma função em uma célula A2 que use o 14 como argumento. Isso pode ser feito pelo
ícone fx ou pelo menu Inserir. Algumas funções disponíveis são:
BINADEC: converte da base binária para a decimal.
BINAHEX: converte da base binária para a hexadecimal.
DECABIN: converte da base decimal para a binária.

2.3  Representação de caracteres

Até agora exploramos a representação de números, mas como se tratam as le-


tras do alfabeto e os caracteres em geral? Também no pós--guerra, ainda em
um contexto de escassez de memória, os sistemas computacionais adotaram o
padrão ASCII (American Standard Code for Information Interchange).

CARAC- CARAC- CARAC-


BINÁRIO DECIMAL BINÁRIO DECIMAL BINÁRIO DECIMAL
TERE TERE TERE
0010 0000 32 0100 0000 40 @ 0110 0000 96 `

0010 0001 33 ! 0100 0001 41 A 0110 0001 97 a

0010 0010 34 “ 0100 0010 42 B 0110 0010 98 b

0010 0011 35 # 0100 0011 43 C 0110 0011 99 c

0010 0100 36 $ 0100 0100 44 D 0110 0100 100 d

0010 0101 37 % 0100 0101 45 E 0110 0101 101 e

0010 0110 38 & 0100 0110 46 F 0110 0110 102 f

0010 0111 39 ‘ 0100 0111 47 G 0110 0111 103 g

capítulo 2 • 45
CARAC- CARAC- CARAC-
BINÁRIO DECIMAL BINÁRIO DECIMAL BINÁRIO DECIMAL
TERE TERE TERE
0010 1000 40 ( 0100 1000 48 H 0110 1000 104 h

0010 1001 41 ) 0100 1001 49 I 0110 1001 105 i

0010 1010 42 * 0100 1010 4A J 0110 1010 106 j

0010 1011 43 + 0100 1011 4B K 0110 1011 107 k

0010 1100 44 , 0100 1100 4C L 0110 1100 108 l

0010 1101 45 - 0100 1101 4D M 0110 1101 109 m

0010 1110 46 . 0100 1110 4E N 0110 1110 110 n

0010 1111 47 / 0100 1111 4F O 0110 1111 111 o

0011 0000 48 0 0101 0000 50 P 0111 0000 112 p

0011 0001 49 1 0101 0001 51 Q 0111 0001 113 q

0011 0010 50 2 0101 0010 52 R 0111 0010 114 r

0011 0011 51 3 0101 0011 53 S 0111 0011 115 s

0011 0100 52 4 0101 0100 54 T 0111 0100 116 t

0011 0101 53 5 0101 0101 55 U 0111 0101 117 u

0011 0110 54 6 0101 0110 56 V 0111 0110 118 v

0011 0111 55 7 0101 0111 57 W 0111 0111 119 w

0011 1000 56 8 0101 1000 58 X 0111 1000 120 x

0011 1001 57 9 0101 1001 59 Y 0111 1001 121 y

0011 1010 58 : 0101 1010 5A Z 0111 1010 122 z

0011 1011 59 ; 0101 1011 5B [ 0111 1011 123 {

0011 1100 60 < 0101 1100 5C \ 0111 1100 124 |

0011 1101 61 = 0101 1101 5D ] 0111 1101 125 }

0011 1110 62 > 0101 1110 5E ^ 0111 1110 126 ~

0011 1111 63 ? 0101 1111 5F _

Quadro 2.4 – Tabela ASC II – Caracteres imprimíveis.


Fonte: (MONTEIRO, 2007).

Esse padrão foi desenvolvido para os sistemas de telex originalmente, o


que se reflete na definição de 33 caracteres não imprimíveis que hoje estão na
maioria obsoletos e a reserva de um dígito para controle de erro (MURDOCCA
& HEURING, 2000).

46 • capítulo 2
O quadro 4 apresenta os caracteres imprimíveis do ASC II e a sua corres-
pondência binária. Assim, usando esse padrão, um sistema computacional lê
“01000000” como “@”, “01111010” como “z”, etc. desde que tenha sido defini-
do que o dado é um caracter não um número.
Os limites do ASC, especialmente para lidar com caracteres de alfabetos
além do latino e caracteres especiais, fez com que os construtores de hardware
e desenvolvedores de software ampliassem os caracteres definidos. Nesse con-
texto, destaca-se o padrão Unicode ((NULL & LOBUR, 2011).

2.4  Tipos de dados e uso de variáveis em algoritmos

O principal objetivo dos algoritmos computacionais é a manipulação de infor-


mações, as quais podem ser especificadas pelo usuário, ou geradas ao longo
da execução do algoritmo. Para manipulação de informações nos algoritmos é
necessário a utilização de um recurso denominado variáveis.

ATENÇÃO
Uma variável é um elemento sintático do algoritmo que tem como funcionalidade
armazenar um determinado valor. O valor associado a variável depende do tipo de
informação que se deseja manipular, assim, diversos tipos de valores podem ser atri-
buídos as variáveis.

De acordo com o tipo de informação que será armazenado, é necessário


especificar o tipo que será a variável. Este conceito é conhecido como tipo de
dados. Um tipo de dados determina quais tipos de operações e quais tipos de
valores podem ser manipulados pelas variáveis.
O tipo de dados mais comum existente é utilizado para a manipulação de
valores numéricos do tipo inteiro. As variáveis do tipo de dados inteiro arma-
zenam valores do tipo: 25, 32, 0, 45, -92, -853, entre outros. Para demonstrar a
utilização deste tipo de dados, bem como, a declaração de variáveis nos algo-
ritmos, vamos codificar nosso segundo exemplo. A figura 5 apresenta o código
do algoritmo capaz de realizar a soma de duas variáveis do tipo inteiro. Este
algoritmo foi nomeado como unid3_exemplo02.alg.

capítulo 2 • 47
Figura 4 – Codificação do algoritmo capaz de realizar a soma de dois números inteiros.

No algoritmo da figura 5 é importante notar o bloco de declaração de variáveis,


o qual é codificado nas linhas 6, 7, 8 e 9. A linha 6 contém a palavra reservada
var, que indica o início do bloco de declaração de variáveis. Na linha 7 é apre-
sentada a declaração de uma variável denominada a do tipo inteiro. As linhas 8
e 9 declaram mais duas variáveis do tipo inteiro, definidas como b e soma. Você
pode perceber com as declarações das variáveis um padrão sintático, o qual é
representado por:

nome_da_variável: tipo_da_variável

Os algoritmos computacionais, bem como as linguagens de programação


possuem algumas regras para a nomeação das variáveis. Uma variável deve
obrigatoriamente iniciar como um caractere literal, assim, não é possível decla-
rar variável que comecem com um número, por exemplo, 1soma. Outro detalhe
importante é que nomes de variáveis não podem conter espaços, por exemplo,
soma total, então, caso seja necessário, você poderá utilizar o caractere subli-
nhado (underline), da seguinte maneira: soma_total. Outra regra importante
sobre a identificação de variáveis é não utilizar caracteres especiais, tais como
@, #, $, %, bem como, não utilizar acentos de qualquer tipo.
Observando ainda o algoritmo apresentado na figura 5, é importante notar
as linhas 12 e 13 que armazenam valores nas variáveis a e b. O termo computa-
cional que indica o armazenamento de um valor em uma variável é atribuição.

48 • capítulo 2
Assim, a linha número 12 atribui o valor 10 à variável a, e da mesma maneira, a
linha 13 atribui o valor 20 à variável denominada b. Na linha 16 é apresentada
uma atribuição como sendo o resultado de uma expressão aritmética de adi-
ção, por conseguinte, a variável soma recebe o resultado da operação da variável
a somado com a variável b.
Finalmente, na linha 19 é apresentado na tela o resultado da soma dos valo-
res. É importante destacar que a instrução escreva é utilizada para exibir uma in-
formação na tela, em que todas as informações textuais devem ser especificadas
entre “aspas duplas”. Para a escrita de variáveis na tela, não é necessário utilizar
as aspas duplas. O resultado da execução do algoritmo é apresentado na figura 6.

Figura 5 – Resultado da execução do algoritmo.

Outro tipo de dado utilizado para a manipulação de informações numéri-


cas é denominado real. Com o tipo de dados real é possível realizar operações
com números que contenham casas decimais, por exemplo, 2.34, 4.48, -5.82,
0.004, entre outros. Um detalhe importante que merece destaque é com relação
ao símbolo utilizado para separação das casas decimais. Geralmente, pelo fato
das linguagens de programação utilizarem instruções na linguagem inglesa, a
separação das casas decimais é realizada com o símbolo de . (ponto), no en-
tanto, é possível criar mecanismos capazes de efetuar a substituição do ponto
pelo símbolo de , (vírgula) utilizado para separar a parte fracionária no Brasil.
Para demonstrar a utilização de números do tipo real, considere o problema de
calcular a média de um conjunto numérico. Podemos utilizar como exemplo, a
necessidade de calcular a média de notas de um conjunto de cinco alunos, por
isso, a figura 7 apresenta o resultado da codificação deste exemplo. Antes da
execução, o arquivo foi salvo com o nome de unid3_exemplo03.alg.
Nesse algoritmo é importante notar a declaração das variáveis nota1, nota2,
nota3, nota4 e nota5. Na linha 8, as variáveis que receberão os valores referentes
as notas são declaradas em uma mesma linha. Esse tipo de declaração é pos-
sível, pois todas as variáveis são do mesmo tipo. Dessa forma, é possível sim-

capítulo 2 • 49
plificar a seção de declaração das variáveis. No entanto, a escolha de como as
variáveis serão declaradas, é exclusivamente do programador, e este fato não
interfere no desempenho da execução do algoritmo ou do programa. Caso pre-
ferir, o programador pode declarar as variáveis individualmente, uma em cada
linha, como apresentado na listagem código 2.

Código 2
1 var
2 nota1: real
3 nota2: real
4 nota3: real
5 nota4: real
6 nota5: real
7 media: real

Figura 6 – Algoritmo que demonstra a utilização de variáveis do tipo real.

O resultado da execução do algoritmo é apresentado na figura 8. Na execu-


ção é importante notar que na separação das casas decimais o VisuAlg utiliza o
símbolo de ponto.

Figura 7 – Resultado da execução do algoritmo.

50 • capítulo 2
Para manipulação de informações literais, as linguagens de programação e
os algoritmos, possuem um tipo específico denominado caractere. Com este
tipo de dados é possível armazenar e manipular qualquer tipo de valor, tais
como uma letra do alfabeto, um símbolo, um número, entre outros. Em lingua-
gens de programação de alto nível, tais como Java ou C#, a manipulação de ca-
racteres pode ser realizada individualmente, com um tipo exclusivo chamado
char, ou ainda, por meio de um conjunto de caracteres, com um tipo de dados
específico conhecido como string. A figura 9 apresenta um algoritmo que reali-
za a manipulação de informações com o tipo de dados caractere. Este exemplo
foi nomeado como unid3_exemplo04.alg.

Figura 8 – Algoritmo que demonstra a manipulação de informações com o tipo de dados


caractere.

Neste exemplo é importante notar que os valores do tipo caractere são re-
presentados entre aspas duplas, como pode ser visualizado nas linhas 13 e 14.
Porém, algumas linguagens de programação realizam a separação entre a re-
presentação de um único caractere, e a definição de um conjunto de caracteres.
Geralmente, a especificação de um único caractere é definida utilizando aspas
simples, por exemplo, ‘M’, e a indicação de um conjunto de caracteres é realizada
com aspas duplas, por exemplo, “João da Silva”. Na linguagem VisuAlg, tanto a
representação de um único caractere, quanto de vários, é realizada com aspas
duplas. O resultado da execução do algoritmo pode ser visualizado na figura 10.

Figura 9 – Resultado da execução do algoritmo.

capítulo 2 • 51
Os algoritmos ainda possuem um tipo de dados específico utilizado para
manipulação de valores lógicos, os quais são conhecidos em programação
como booleanos. Um tipo de dados booleano permite o armazenamento de va-
lores lógicos, por exemplo, verdadeiro (true) ou falso (false). Em programação,
um valor lógico pode ser utilizado para expressar a presença ou ausência de
uma determinada informação, tal como, um valor do tipo sim ou não. Na lin-
guagem algorítmica, o tipo de dados booleano é definido como lógico.
Para demonstrar a utilização do tipo de dados lógico, vamos codificar mais
um algoritmo. Este exemplo, nomeado como unid3_exemplo05.alg, apresenta
um algoritmo que manipula informações de todos os tipos de dados existentes,
sendo eles inteiro, real, caractere e lógico. No exemplo, é importante destacar a
atribuição de um valor lógico, que ocorre na linha 18.
Na linguagem algorítmica utilizada pelo ambiente VisuAlg, uma variável do
tipo lógico pode assumir dois valores, verdadeiro ou falso, e neste caso a atri-
buição de valores lógicos também utiliza os possíveis valores (verdadeiro ou fal-
so). A figura 11 apresenta o resultado da codificação do algoritmo.

Figura 10 – Algoritmo que demonstra a utilização dos principais tipos de dados e apresenta
a manipulação de valores do tipo lógico.

O resultado da execução do algoritmo, que pode ser visualizada utilizando o


menu Algoritmo>Executar, é apresentada na figura 12.

52 • capítulo 2
Figura 11 – Resultado da execução do algoritmo.

Com isso, você conheceu os principais tipos de dados que podem ser utiliza-
dos para manipulação de informações nos algoritmos e programas. O próximo
passo é aprender como ler informações fornecidas pelo usuário, e como apre-
sentar resultados na tela.

ATIVIDADE
1.  Pesquise sobre a origem da linguagem binária, antes de seu uso pela computação.

2.  Por que o sistema binário é mais adequado para o uso em dispositvos eletrônicos?

3.  Decomponha 19583 em potências de base 10.

4.  Converta 19583 na base binária.

5.  Decomponha o resultado do exercício 4 em potências de base 2.

6.  Pesquise sobre o padrão UNICODE e identifique os grupos de caracteres que são definidos.

REFLEXÃO
Neste capítulo, entendemos melhor como o computador e dispositivos eletrônicos podem
representar números e letras. Também vimos que o sistema binário permite manipulações
aritméticas, o que seria suficiente para caracterizar uma calculadora. Contudo, como os sis-
temas computacionais conseguem fazer tarefas variadas como reconhecer voz e ajudar em
diagnósticos médicos? Como essas tarefas se traduzem em processamento de dados?

capítulo 2 • 53
LEITURA
LEVY, S. Os Heróis da Revolução. São Paulo: Evora, 2012.
Comentário: a descrição de como computadores funcionam pode ser um assunto bastante
árido se esquecermos as pessoas e as motivações que residem por cada característica da
computação. Ao traçar o panorama dos atores que ajudaram a desenvolver os primeiros
sistemas computacionais, passando pelos PCs, chegando aos programadores de aplicativos
móveis, Levy nos mostra a feição humana, entusiasmada e obsessiva dos responsáveis pela
revolução digital.

REFERÊNCIAS BIBLIOGRÁFICAS
BBC. Y2K around the word. BBC, website. <http://news.bbc.co.uk/hi/english/static/millen-
nium_bug/countries/default.stm>. Acesso em: 19 jun. 2014.

CAPRON, H. L.; JOHNSON, J. A. Introdução à Informática. São Paulo: Pearson Prentice


Hall. 2004.

LAUDON, K. C. e LAUDON, J. P. Sistemas de Informação Gerenciais. São Paulo: Prentice


Hall. 2007.

LEUNG, L. How much data x store? Techexpectations, 13 mar. 2014. Disponível em: <http://
techexpectations.org/2014/05/17/how-much-data-does-x-store/>. Acesso em: 19 jun. 2014.

MCKENNA, B. What does a petabyte look like? Computer Weelky, março 2013. Disponível em:
<http://www.computerweekly.com/feature/What-does-a-petabyte-look-like>. Acesso em: 19
jun. 2014.

MONTEIRO, M. A. Introdução à Organização de Computadores. 5a ed. São Paulo: LTC, 2007.

MURDOCA, M. J.; HEURING, V. P. Introdução à Arquitetura de Computadores. Rio de Janeiro:


Campus, 2000.

NULL, L.; LOBUR, J. Princípios Básicos de Arquitetura e Organização de Computadores. 2a ed.


Porto Alegre: Bookman, 2010.

54 • capítulo 2
REBER, P. What is the memory capacity of the human brain? Scientific American, maio/junho,
2010. Disponível em: <http://www.scientificamerican.com/article/what-is-the-memory-capa-
city/>. Acesso em: 19 jun. 2014.

SCHONFELD, E. Google processing 20,000 terabytes a day, and growing. Techcrunch, web-
site, 9 jan. 2008. Disponível em: <http://techcrunch.com/2008/01/09/Google-processing-
20000-terabytes-a-day-and-growing/>. Acesso em. 19 jun 2014.

SMAAL, 2011. 2038: o bug do milênio atacará novamente. Tecmundo, website, 25 fev 2011.
Disponível em: <http://www.tecmundo.com.br/historia/8795-2038-o-bug-do-milenio-ataca-
ra-novamente.>. Acesso em: 19 jun. 2014.

STALLINGS, W. Arquitetura e Organização de Computadores. São Paulo: Prentice Hall, 2002.

NO PRÓXIMO CAPÍTULO
No próximo capítulo, conheceremos a álgebra booleana, que permite que os computadores pos-
sam manipular os dados logicamente.

capítulo 2 • 55
3
Álgebra Booleana e
Operações Lógicas
em Algoritimos
3  Álgebra Booleana e Operações Lógicas em
Algoritimos

No capítulo anterior, vimos a forma como dados podem ser representados


no computador em base númérica, ou seja, passível de operações como arit-
méticas de adição. Mas quando usamos um caixa eletrônico, por exemplo, há
diversas outras operações envolvidas. A simples comparação da senha que di-
gitamos com aquela registrada pede uma operação lógica que deve responder
“a senha confere” ou “a senha não confere”. Em um videogame, cada uma das
ações do jogador tem determinadas consequências tanto para o encadeamento
posterior de eventos, quanto para o próprio ambiente do jogo. Esses são apenas
exemplos de como o processamento de dados depende de operações lógicas
(LAUDON & LAUDON, 2007; CAPRON & JOHNSON, 2004). A implementação
dessas operações em computador estão, por sua vez, baseadas na álgebra boo-
leana, tema principal deste capítulo.

OBJETIVOS
•  Compreender os operadores principais da álgebra booleana.
•  Construir tabelas verdade para cada operador.
•  Identificar símbolos de portas lógicas.
•  Entender como os operadores aritméticos e lógicos são implementados em algoritmos.

REFLEXÃO
No primeiro capítulo, foi dado o exemplo da receita de bolo como um algoritmo não compu-
tacional. Como outros algoritmos, a receita de bolo é um conjunto de instruções formalizado
para resolver um problema e, nesse caso específico, as instruções seguem umas às outras
diretamente. Busque pensar em algoritmos condicionais, ou seja, cuja realização de instruções
depende de condições e também de resultados de instruções anteriores.

capítulo 3 • 57
3.1  Álgebra booleana

Segundo Linda Null e Julia Lobur, a álgebra booleana é “uma álgebra para a ma-
nipulação de objetos que podem assumir somente dois valores, normalmente
verdadeiro ou falso” (NULL & LOBUR, 2011, p. 141). É fácil entender que essa
álgebra seja adequada ao computadores, os quais funcionam usando a lingua-
gem binária. A seguir, vamos falar da origem da álgebra booleana para, a seguir,
passar para seus operadores.

3.1.1  Origens

A linguagem binária se tornou um componente fundamental da computação,


mesmo tendo sido desenvolvida muito antes dos primeiros computadores. O
mesmo aconteceu com a álgebra booleana: nascida no séc. XIX fruto da formali-
zação do pensamento lógico realizada por George Boole, um grande matemático
inglês (figura 1). A motivação de Boole era encontrar e formalizar leis universais
do raciocínio, aproximando este da álgebra matemática. Esse esforço foi estru-
turado em sua obra “As Leis do Pensamento”, de 1854 (NULL & LOBOUR, 2011).

Figura 1 – George Boole (1814 – 1864)


Fonte: <http://en.wikipedia.org/wiki/George_Boole#mediaviewer/File:George_Boo-
le_color.jpg>. Acesso em: 24 jul. de 2014.

58 • capítulo 3
Uma ilustração simples da álgebra booleana pode ser dada avaliando as três
afirmações abaixo:
Afirmação 1: Ana foi ao cinema.
Afirmação 2: Paulo foi ao show.
Afirmação 3: Ana foi ao cinema E Paulo foi ao show.
Para a afirmação 3 ser verdadeira, tanto a afirmação 1 quanto a 2 devem ser
também. Se Ana não foi ao cinema, ou se Paulo não foi ao show, já fica com-
prometida a afirmação feita sobre os dois. Perceba que a afirmação 3 equivale
considerar a afirmação 1 e a afirmação 2 simultaneamente. Podemos organizar
o que foi dito até aqui por uma tabela-verdade, a qual relaciona os valores de
proposições e operadores lógicos. Com esse fim, vamos usar a notação:
Afirmação 1: p
Afirmação 2: q
Afirmação 3: Afirmação 1 E Afirmação 2: p.q
V: proposição verdadeira
F: proposição falsa.

Desse modo, a tabela-verdade fica:

p q p•q

V V V

V F F

F V F

F F F

Podemos ainda explicar mais um operador lógico a partir da seguinte assertiva:


Afirmação 4: Ana foi ao cinema OU Paulo foi ao show.
: Afirmação 1 OU Afirmação 2: p + q
A afirmação 4 será verdadeira caso ambas as afirmativas sejam verdadeiras,
mas também caso somente uma delas seja. Por exemplo, mesmo Paulo não
tendo ido ao show, basta que Ana tenha ido ao cinema para garantir essa vera-
cidade. A afirmativa 4 só será falsa se ambas as afirmativas também o forem.
Consequentemente, a tabela-verdade nesse caso terá a seguinte configuração:

capítulo 3 • 59
p q p+q

V V V

V F V

F V V

F F F

Figura 2 – Labirinto Teseu de Claude Shannon (Museu do MIT)


Fonte: Labirinto Teseus de Claude Shannon (Museu do MIT) <http://commons.wikime-
dia.org/wiki/Category:Claude_Shannon#mediaviewer/>File:Theseus_Maze_by_Clau-
de_Shannon,_1952_-_MIT_Museum_-_DSC03702.JPG. Acesso em: 24 jul. de 2014.

A utilidade da álgebra booleana e suas tabelas verdade para circuitos elé-


tricos foi estabelecida pelo americano Charles Shannon em sua dissertação
de mestrado de 1937, concluída no MIT. Em lugar dos valores “falso” ou “ver-
dadeiro”, os circuitos poderiam operar por essa álgebra usando os “zeros” e
“uns”. Essa adaptação lançou as bases da computação que conhecemos hoje.
Shannon ainda ajudou a criar os fundamentos da teoria da informação e da
inteligência artificial. Um dos seus experimentos famosos foi um “rato eletro-
mecânico” programado a encontrar a saída de um labirinto (figura 2) e capaz de
acumular conhecimento a cada entrada no mesmo labirinto. (GLEICK, 2011).

60 • capítulo 3
Na sumarização seguinte da álgebra booleana, vamos usar os dígitos biná-
rios. Assim, “0” será equivalente a “falso” e, consequentemente, 1 a “verdadei-
ro”. Além de formalizar nesses termos os operadores E e OU já vistos, vamos
ainda definir a Negação, XOR, NOT e NAND, baseando-se em Murdocca e Heu-
ring (2000), Monteiro (2007) e Stallings (2002).

3.1.2  Operador E (Conjunção ou AND)

Uma expressão com operador E resulta 1 somente se as suas entradas forem


todas iguais a 1. O funcionamento é análogo ao exemplo da seção anterior com
a afirmativa 3.
Considerando duas entradas, p e q, a notação de “p E q” já foi vista:

p.q

Chama-se essa expressão também de produto booleano, ou multiplicação


lógica. Abaixo está a tabela-verdade para o operador E com duas entradas:

p q p•q

1 1 1

1 0 0

0 1 0

0 0 0

3.1.3  Operador OU (Disjunção ou OR)

Uma expressão com operador OU resulta em 0 somente se as suas entradas fo-


rem todas iguais a 0. Aqui temos um comportamento análogo ao exemplo ante-
rior com a afirmativa 4.
Considerando duas entradas, p e q, já conhecemos a notação de “p OU q”.

p+q

capítulo 3 • 61
Essa expressão também é nomeada de soma booleana, ou adição lógica. A
tabela-verdade para o operador OU com duas entradas está a seguir:

p q p+q

1 1 1

1 0 1

0 1 1

0 0 0

ATENÇÃO
Já pensou se gastos com jardinagem forem divulgados como investimentos ambien
tais internos?
Certamente, gastos com jardinagem não servem para reduzir o impacto negativo dos re-
síduos das próprias operações da empresa. A não ser que o jardim seja uma estação de
tratamento de efluente.

A fórmula da ecoeficiência de Helminen (2000) e Burritt e Saka (2005) e o


WBCSD (1996) exposto na figura 7 pondera o valor adicionado e o impacto am-
biental causado para produzir a riqueza Valor Adicionado. Com base nisso,
Schaltegger, Burrit e Peterson (2003 apud Derwall at. al. 2005) explicam que a
ecoeficiência pode refletir o quanto de impacto ambiental foi necessário para
gerar o Valor Adicionado da DVA.
Nas duas metodologias pondera-se o impacto causado no meio ambien-
te pelas operações da empresa. Uma o analisa durante o ciclo de vida dos
produtos e a outra durante o processamento de serviços e produtos da em-
presa. Independente do método, o WBCSD (1996) recomenda ponderar a
ecoeficiência nos processos decisórios, internamente como parte do dia a
dia dos sistemas de gestão e, externamente, como algo a ser divulgado como
um dos elementos integradores da sustentabilidade.

62 • capítulo 3
ATENÇÃO
Existem outras notações para operadores vistos aqui e que podem ser comumente encontra-
das na disciplina de Raciocínio Lógico:
Operador E: p • q.
Operador OU: p + q.
_
Operador Negação: p

3.1.4  Operador Negação (Inversão ou NOT)

Esse operador simplesmente inverte a entrada. Ou seja, se a entrada é 0 o ope-


rador o transforma em 1, e vice-versa. Com uma entrada p, a notação de “p ne-
gado” é: ~p
A tabela-verdade para esse operador é:

p ~p

1 0

0 1

3.1.5  Operadores XOR, NOR, NAND

Os operadores AND, OR e NOT podem ser combinados e aplicados sucessiva-


mente a entradas. Três dessas combinações encontram uso corrente em siste-
mas computacionais:

Disjunção exclusiva (XOR)


O resultado dessa operação é 1 se, e somente se, apenas uma das entradas
for 1. A tabela-verdade do operador XOR é:

(p • ~q) + (~p
p q
• q)

1 1 0

capítulo 3 • 63
1 0 1

0 1 1

0 0 0

•  NEM (NOR)
O resultado dessa operação é 1 se, e somente se, todas as entradas forem 0.
A tabela-verdade do operador NOR é:

p q ~ (p + q)

1 1 0

1 0 0

0 1 0

0 0 1

•  NOU (“Não... e...”, NAND)


O resultado dessa operação é 1 se pelo menos uma entrada for 0. A tabela
verdade do operador NOU é:

p q ~ (p + q)

1 1 0

1 0 1

0 1 1

0 0 1

64 • capítulo 3
CONEXÃO
Para aprofundar seus conhecimentos sobre álgebra booleana, leia o texto disponível em: <http://
www.inf.ufsc.br/~guntzel/isd/isd2.pdf>
Acesso em: 24 jul. de 2014.

3.2  Portas lógicas

A adaptação de Claude Shannon da álgebra booleana é também denominada


álgebra de chaveamento devido à orientação inicial para circuitos que podiam
estar ligados ou desligados por chave. Essa álgebra é usada na construção de
circuitos físicos, que podem modificar os sinais digitais conforme estabelecido
por seu desenho. Devido a esse uso, há símbolos gráficos para cada operador,
chamadas portas lógicas, o que facilita o trabalho em circuitos complexos. Na
tabela a seguir, as entradas são representadas pelos traços à esquerda, podendo
ser, cada uma, zero ou um. A saída é representada pelo traço à direita, também
obedecendo à base binária.

CONEXÃO
Conheça um aplicativo gratuito para dispositivos móveis que desenha portas lógicas:
<https://play.google.com/store/apps/details?id=com.Logic.gates_Xor.en>
Acesso em: 24 jul. de 2014.

Operador Símbolo
AND

OR

NOT

XOR

NOR

NAND

Fonte: <http://commons.wikimedia.org/wiki/File:NAND_ANSI.svg>. Acesso


em: 24 jul. de 2014.

capítulo 3 • 65
Para fins didáticos, tratamos de operações, portas lógicas e símbolos com
apenas duas entradas. No caso abaixo, temos um operador AND com três entra-
das de valor 1. Pela própria definição do operador, a saída também será 1:

1
1 1
1

3.3  Operações aritméticas e lógicas em algoritmos

Até aqui, entendemos as operações booleanas principais. Contudo, como elas são
usadas em programação? A seguir, vamos mostrar operações aritméticas e lógicas
implementadas em algoritmos simples, usando o visualg. Não devemos perder de
vista, contudo, que são essas operações que fundamentam programas complexos
e processamento de dados em grande escala. O poder analítico desse processa-
mento nos é lembrado com frequência, como acontece com as vitórias de sistemas
computacionais sobre grandes mestres do xadrez (ver box explicativo).

Em 1997, o supercomputador Deep Blue da IBM venceu o campeão mundial de xadrez


Garry Kasparov em um match de seis partidas. O evento chamou a atenção do mundo
para os avanços em inteligência artificial, estimulando a reflexão sobre os limites e as
potencialidades dos computadores. Kasparov havia derrotado uma versão desse com-
putador em 1996 e acusou a IBM de fraudar a disputa em 1997. A fraude teria sido o
uso de grandes mestres de xadrez para apoiar o processo de decisão do computador.
De qualquer modo, a superioridade dos computadores nesse jogo foi reafirmada por
programas de software mais inteligentes e que, assim, não requerem a capacidade de
processamento do Deep Blue. Se este calculava até 200 milhões de posições de jogo
por segundo em um estrutura complexa e dedicada, o programa Deep Fritz, rodando em
Windows com processadores Pentium, conseguiu derrotar o campeão mundial Vladimir
Kramnik em 2006 (NEWBORN, 2011).

66 • capítulo 3
Figura 3 – Supercomputador Deep Blue (Museu Figura 4 – Garry Kasparov.
da História do Computador, Califórnia. Fonte: <http://commons.wikimedia.org/
wiki/File:Kasparov-27.jpg>. Acesso em 24
Fonte:< http://commons.wikimedia.org/wiki/File:-
jul. de 2014.
Deep_Blue.jpg>. Acesso 24 jul. de 2014

3.3.1  Comandos de entrada e saída

Os algoritmos computacionais e os programas têm como principal funcionali-


dade o processamento de informações. Essas informações geralmente são for-
necidas pelo usuário, o qual utiliza o teclado para entrada de dados e, em um
segundo momento, os resultados são apresentados em dispositivos de saída
como monitor ou impressora. Durante o processo de construção de algoritmos,
o programador pode contar com instruções específicas para carregar informa-
ções fornecidas pelo usuário e para apresentar resultados na tela, essas instru-
ções são chamadas de comandos de entrada e saída.
Para leitura de informações, o comando utilizado para entrada de dados é
conhecido como leia. Assim, com este comando é possível transferir uma infor-
mação digitada pelo usuário com o teclado para uma determinada variável no
escopo do algoritmo. Por outro lado, para a apresentação de uma informação
na tela é utilizada um comando de saída específico denominado escreva.
Para demonstrar a utilização dos comandos de entrada e saída vamos cons-
truir uma calculadora simples de quatro operações. Nesta calculadora, o usu-
ário fornecerá dois valores números (valor1 e valor2) e serão realizados os cál-
culos de soma, subtração, multiplicação e divisão. Para leitura dos valores será
utilizado o comando leia e para a apresentação dos resultados será necessário
o comando escreva. Na linguagem algorítmica VisuAlg, existe uma variação do

capítulo 3 • 67
comando escreva denominada escreval. Este comando, além de exibir as infor-
mações desejadas na tela, também realizar a quebra de linha, ou seja, o coman-
do é capaz de exibir uma determinada informação na tela e mudar de linha.
Com isso, os dados não serão apresentados em uma única linha, o que facilita
bastante a exibição de grandes quantidades de informações.
O algoritmo que codifica a calculadora simples de quatro operações foi no-
meado como unid3_exemplo06 e a figura 5 apresenta a codificação completa
do exemplo.

Figura 5 – Algoritmo que codifica um cálculo simples com quatro operações.

O resultado da execução do algoritmo é apresentado na figura 6. Nessa exe-


cução, os valores fornecidos como entrada foram 10 e 20.

Figura 6 – Resultado da execução do algoritmo.

68 • capítulo 3
O próximo exemplo de codificação utilizando comandos de entrada e saída
tem como objetivo construir um algoritmo capaz de calcular o consumo médio
de combustível de um veículo. Para isso, o usuário deverá informar como entra-
da os quilômetros percorridos pelo veículo e o total de litros abastecidos. Com
isso, o algoritmo é capaz de determinar o consumo médio e o resultado é exibi-
do na tela. Este algoritmo foi nomeado como unid3_exemplo07, e a codificação
é demonstrada na figura 7.

Figura 7 – Algoritmo para determinar o consumo médio de combustível de um veículo.

O resultado da execução do algoritmo pode ser visualizado na Figura 8. Os


parâmetros informados na entrada foram 460 para quilômetros rodados e 50
para litros abastecidos.

Figura 8 – Resultado da execução do algoritmo.

capítulo 3 • 69
3.3.2  Operações e expressões

Os computadores podem ser encarados como grandes máquinas capazes de


realizar uma quantidade imensa de operações por segundo. Na evolução his-
tórica da computação, os primeiros algoritmos foram criados com o intuito
de solucionar complexas expressões em poucos segundos. As expressões são
formadas essencialmente por operadores, operandos e parênteses. De acordo
com o tipo de operador utilizado, podemos criar expressões denominadas:

3.3.3  Expressões aritméticas

As expressões aritméticas utilizam os operadores aritméticos da matemática


tradicional para criar expressões capazes de resolver os mais variados tipos de
funções. Neste grupo, os principais operadores utilizados são soma (+), subtra-
ção (–), multiplicação (*), divisão (/) e resto da divisão (%).
A figura 9 apresenta a codificação de um algoritmo que utiliza expressões
aritméticas para resolver um polinômio. Este algoritmo foi nomeado como
unid3_exemplo08.alg.

Figura 9 – Algoritmo computacional que utiliza expressões aritméticas.

70 • capítulo 3
A figura 10 apresenta o resultado da execução do algoritmo.

Figura 10 – Resultado da execução do algoritmo.

3.3.4  Expressões relacionais

Quando construímos algoritmos é muito comum a necessidade de comparar,


ou estabelecer relações entre determinados operandos. Para isso, podemos
utilizar um conjunto específico de operadores capazes de produzir expressões
relacionais. Os operadores relacionais conhecidos são:
•  maior (>)
•  menor (<)
•  menor ou igual (<=)
•  maior ou igual (>=)
•  igual (=)
•  diferente (<>).

A figura 11 demonstra a construção de um algoritmo computacional que


utiliza expressões relacionais. Note no algoritmo que todos os operadores re-
lacionais são expressões por meio de símbolos. Este algoritmo foi nomeado
como unid3_exemplo09.alg.

capítulo 3 • 71
Figura 11 – Algoritmo computacional que demonstra a utilização de expressões e operado-
res relacionais.

A figura 12 apresenta o resultado da execução do algoritmo.

Figura 12 – Resultado da execução do algoritmo.

72 • capítulo 3
ATENÇÃO
Em uma expressão relacional o resultado produzido pela avaliação da expressão é sempre um
valor lógico. Assim, uma expressão relacional resulta em um valor do tipo verdadeiro ou falso.

3.3.5  Expressões lógicas

Na construção de algoritmos computacionais também é possível criar expres-


sões a partir de operadores lógicos. Estas expressões são conhecidas como
expressões lógicas. Para criação de uma expressão lógica é necessário utilizar
operadores booleanos, em que os principais são:
•  negação (NOT)
•  conjunção1 (E)
•  disjunção (OU)
•  disjunção-exclusiva (XOR)

Na figura 13 é apresentada a codificação de um algoritmo capaz de calcular


a tabela-verdade a partir de expressões lógicas. Neste exemplo é possível de-
terminar um dos principais conceitos da lógica matemática conhecido como
tabela-verdade. Este algoritmo foi nomeado como unid3_exemplo10.alg.

CONEXÃO
Para um estudo aprofundado a respeito de tabelas verdade, você poderá consultar as se-
guintes referências: <http://pt.wikipedia.org/wiki/Tabela_verdade>
<http://www.calculadoraonline.com.br/tabela-verdade>

Os operadores lógicos são muito importantes para a construção de programas, principalmente


para a elaboração de expressões relacionais compostas. Para complementar seu estudo você
poderá utilizar a seguinte referência:
<http://pt.wikipedia.org/wiki/Operadores_l%C3%B3gicos>
Acesso em 24 jul. de 2014.

1 Oportunidade; ocasião; conjuntura.

capítulo 3 • 73
Figura 13 – Algoritmo computacional que demonstra a utilização de expressões e operado-
res lógicos.

A figura 14 apresenta o resultado da execução do algoritmo.

Figura 14 – Resultado da execução do algoritmo.

Com isso, concluímos o estudo a respeito dos operadores e das expressões


aritméticas, relacionais e lógicas. Aproveite este momento para construir algo-
ritmos a partir das atividades propostas.

74 • capítulo 3
ATIVIDADE
1.  Monte uma tabela-verdade para o operador AND com quatro entradas.

2.  Monte uma tabela-verdade para o operador OR com três entradas.

3.  Por que a álgebra booleana se mostrou adequada para circuitos elétricos?

4.  Qual é o valor de q no circuito lógico abaixo?

1
1 q
0

REFLEXÃO
Não ocorrendo problemas de hardware, um computador basicamente segue as instruções
que lhe são fornecidas, incluindo aquelas de operações lógicas. Sendo assim, quando nos
deparamos com falhas em nossos programas e equipamentos, seria mais adequado falar em
erro humano?

LEITURA
BERLINSKI, D. O Advento do Algoritmo: A ideia que governa o mundo. Rio de Janeiro:
Globo, 2002.
Esta obra oferece o desenvolvimento histórico do algoritmo, um conceito que antecede o desen-
volvimento dos computadores, mas que agora, como demonstra o autor, está presente em quase
todas as nossas atividades.

capítulo 3 • 75
REFERÊNCIAS BIBLIOGRÁFICAS
CAPRON, H. L.; JOHNSON, J. A. Introdução à Informática. São Paulo: Pearson Prentice Hall.
2004.

GLEICK, J. The Information: A history, a theory, a flood. Nova York: Random House, 2011.

LAUDON, K. C. e LAUDON, J. P. Sistemas de Informação Gerenciais. São Paulo: Prentice


Hall. 2007.

MONTEIRO, M. A. Introdução à Organização de Computadores. 5a ed. São Paulo: LTC, 2007.

MURDOCA, M. J.; HEURING, V. P. Introdução à Arquitetura de Computadores. Rio de Janei-


ro: Campus, 2001.

NEWBORN, M. Beyond Deep Blue. Nova York: Springer, 2011.

NULL, L.; LOBUR, J. Princípios Básicos de Arquitetura e Organização de Computadores. 2a


ed. Porto Alegre: Bookman, 2010.

STALLINGS, W. Arquitetura e Organização de Computadores. São Paulo: Prentice Hall, 2002.

NO PRÓXIMO CAPÍTULO
No próximo capítulo, vamos compreender como as instruções são recebidas e executadas pela
Unidade Central de Processamento.

76 • capítulo 3
4
Instruções e
Processamento
4  Instruções e Processamento
A partir do conteúdo anterior, entendemos os sistemas computacionais como
executores de instruções, baseados fundamentalmente na liguagem binária e
na álgebra booleana (LAUDON & LAUDON, 2007; CAPRON & JOHNSON, 2004).
Neste capítulo, vamos entender melhor o que são instruções e quais são os seus
tipos. Vamos explorar como o processador se relaciona com o fluxo dessas instru-
ções, inclusive com a sua interrupção. Para esse entendimento, será necessário
compreender os componentes básicos da Unidade Central de Processamento
(UCP). Por fim, vamos apontar algumas dimensões mais operacionais da imple-
mentação dos sistemas de computador, incluindo a placa-mãe, linguagens de
programação e os sistemas operacionais.

OBJETIVOS
•  Identificar as funções dos componentes da UCP.
•  Reconhecer os diferentes tipos de instruções.
•  Dominar a estrutura básica das instruções.
•  Conhecer os tipos de interrupção.

REFLEXÃO
Quantas vezes você viu uma campanha sobre o lançamento de uma nova geração de micro-
processadores? A velocidade dos computadores que você usa se mantém constante ou tende
a cair? A maior parte dos problemas de processamento é devido aos microprocessadores, ou
você identifica outras causas mais relevantes?

4.1  Componentes fundamentais para o processamento

No capítulo 1, vimos uma esquematização básica de um computador, como


também a arquitetura de Von Neumann. Entendemos o computador como
uma máquina que recebe instruções e dados, processa estes na UCP com o au-
xílio do armazenamento de memória e, por fim, realiza a saída aos dados.
Segundo Null e Lobur, a UCP “é responsável por carregar instruções de pro-
gramas, decodificar cada instrução carregada e realizar a sequência indicada de

capítulo 4 • 79
operações sobre os dados corretos” (2010, p. 208). Na UCP, há elementos funda-
mentais que dão base a esse processo. Esses elementos podem ser internamente
restritos à UCP ou servirem de interface a componentes externos. Na figura 1,
encontra-se uma representação da Arquitetura de Von Neumann com uma espe-
cificação mais detalhada dos seus elementos, os quais serão explicados a seguir.

Barramento
Memória
Dispositivo de E/S
Programa
Área de dados
1 010101 11001 101 01000 1 111

.........................
1 10 0 110 10001 1101 0001 1 101

Área de código
110 0 110 10001 1101 0001 1 101 Registro
1 010101 11001 101 01000 1 111
1 10 0 110 10001 1101 0001 1 101

Un. de
UAL
Controle

Figura 1 – Arquitetura de Von Neumann


Fonte: <http://pt.wikipedia.org/wiki/Arquitectura_de_von_Neumann#media-
viewer/Ficheiro:Arquitectura_von_Neumann.png>. Acesso em: 24 jul. de 2014.

Registradores
São componentes de hardware que guardam dados binários relativos a dados,
endereços de memórias e informações de controle. Não devem ser confundi-
dos com os dispositivos de armazenamento do computador, pois são internos
à UCP (MURDOCA & HEURING; 2000). Os registradores podem ler dados em
tamanho fixo, sendo mais comumente hoje palavras de 16 ou 32 bits (MONTEI-
RO, 2007). A arquitetura do processador designa a quantidade de registradores,
tamanho de leitura, assim como pode especificar funções específicas para cada
registrador.

Unidade de Aritmética e Lógica (UAL)


As operações matemáticas e de álgebra booleana que vimos anteriormente são
executadas pela UAL.

80 • capítulo 4
Unidade de Controle
Essa unidade é responsável por manipular os registradores adequadamente
e ativar a UAL para as operações requeridas na ordem correta. Cabe ainda à
Unidade de Controle executar interrupções e monitor o estado das operações
(STALLINGS, 2002).

Relógio
A frequência desse dispositivo sincroniza todo o sistema computacional. Os re-
gistradores podem ser carregados com outro dados apenas com a passagem de
um ciclo do relógio (NULL & LOBUR, 2010).

Interfaces de Entrada e Saída (E/S)


A UCP recebe e disponibiliza dados por meio de dispositivos externos como
mouses, teclados, microfones, scanners (entrada) ou telas, alto-falantes, im-
pressoras (saída), para citar alguns exemplos comuns. O sinais entre UCP e es-
ses dispositivos precisam ser devidamente formatados para serem entendidos.

Barramento
Os elementos descritos acima precisam se comunicar, transmitindo dados,
instruções de controle e energia. Essa comunicação é feita pelo conjunto de
vias de transmissão chamado barramento.

4.2  Instruções de computador

4.2.1  Estrutura e tipos


Cada tipo de processador é capaz de executar um determinado conjunto de
instruções (MURDOCCA & HEURING, 2000). Esse fato ajuda a explicar os pro-
blemas de compatibilidade entre arquiteturas de computadores, pois elas pos-
suem conjuntos diferentes. Essas questões de compatibilidade tiveram e ainda
têm consequências importantes para usuários e empresas do setor.

capítulo 4 • 81
O tipo de processador tem diversas implicações para a arquitetura do computador e
para o desenvolvimento de software. Por décadas, a Apple preferiu não adotar chips
Intel, que foram a base da explosão do mercado de computadores pessoais, seja com
os sistemas operacionais DOS ou Windows da Microsoft. Quando o Macintosh foi
lançado em 1984, a máquina usava processadores da Motorola. Com esta empresa
e a IBM, a Apple fez um consórcio que criou a arquitetura do processador PowerPC
em 1991. Porém em 2005, Steve Jobs anunciava a transição para os processadores
Intel, citando como motivo a superioridade de desempenho. (LASHINSKY, 2012; LINZ-
MAYER, 2004).
É interessante notar que tablets e smartphones são comumente baseados em chips
ARM, que possuem uma arquitetura diferente dos chips de PCs. Assim, embora haja
bastante semelhanças visuais entre a interface de um computador da Apple e a de um
iPhone, os seus sistemas operacionais - MAC OS E iOS respectivamente - são constru-
ídos e funcionam de forma muito distinta.
A Microsoft buscou essa aproximação das interfaces do desktop e de aparelhos móveis
com o Windows 8 e o Windows RT, embora o uso dos dois sistemas tenha ficado abaixo
das expectativas da empresa (OVIDE, 2013).

Figura 2 – Steve Jobs anunciando a transição para processadores Intel (2005).


<http://en.wikipedia.org/wiki/File:Steve_Jobs_Presentation_1.jpg>. Acesso em
24 jul. de 2014.

82 • capítulo 4
CONEXÃO
Leia um artigo que resume a história dos microprocessadores e a disputa entre Intel e AMD:
<http://www.tecmundo.com.br/historia/2157-a-historia-dos-processadores.htm>
Acesso em 24 jul. de 2014.

Segundo Stallings (2000), uma instrução deve possuir os seguintes elemen-


tos de modo a fornecer toda a informação requerida para a execução:
•  Código da operação. A operação de adição, por exemplo, é usualmente
simbolizada por ADD.
•  Referência aos operandos de entrada: dados que serão processados, en-
dereços de memória, entre outros.
•  Referência aos operandos de saída: resultado da operação.
•  Endereço da instrução seguinte.

O quadro 4.1 sumariza os tipos principais de instruções. Há aquelas que


envolvem operações lógicas e aritméticas como vimos no capítulo anterior. Po-
rém há instruções específicas que se referem a armazenamento e movimenta-
ção de dados, assim como instruções ligadas ao próprio controle de instruções
(MURDOCCA & HEURING, 2000).

CODIFICAÇÃO
TIPO DE INSTRUÇÃO FUNÇÃO/EXEMPLOS COMUM
Aritmética / Lógica Adicionar, subtrair, conjunção ADD, SUB, AND

Movimentação de dados Faz a transferência de dados LOAD, STORE,


entre os registradores e a OUT
memória principal ou entre o
registradores entre si: carre-
gar, gravar, saída.

capítulo 4 • 83
CODIFICAÇÃO
TIPO DE INSTRUÇÃO FUNÇÃO/EXEMPLOS COMUM
Transferência de Con- Chamar subrotinas, Desviar a HALT, JE
trole instrução do fluxo sequencial:
suspensão, “desvia se igual”.

Quadro 4.1 – Tipos Principais de Instruções


Fonte: adaptado de Murdocca & Heuring, 2000

ATENÇÃO
O termo operando se refere a dados que serão objeto de operações de processamento. Stallin-
gs (2002) classifica os operandos em quatro tipos:
Números. Exemplos.: inteiros, de ponto flutuante.
Caracteres: Exemplos.: alfabeto latino, chinês, símbolos especiais.
Dados lógicos. Exemplos: verdadeiro, falso.
Endereços de memória: registros no disco rígido.

4.2.2  Ciclo de instrução e interrupção

Monteiro (2007) ilustra um ciclo simplifica de instrução conforme a figura 3.


O próprio autor chama atenção que os computadores de hoje não mais reali-
zam uma instrução só por vez. O modelo atualmente empregado usa o método
de pipelining, em que as instruções são executadas de forma paralela. Por esse
método, as instruções são dividas em etapas, permitindo que a UCP armazene
e execute diversas instruções por vez. Outro ponto positivo desse método, é que
são armazenadas continuamente etapas de instruções nos registradores, evi-
tando que se espere para buscá-las na memória principal, um procedimento
mais lento. Como desvantagem do pipelining, está a maior complexidade do
controle da instruções, o que pode implicar conflitos e problemas de fluxos de
memória (MURDOCCA & HEURING, 2000).

84 • capítulo 4
ATENÇÃO
Overflow aritmético acontece quando o resultado matemático de uma operação ultrapassa o
valor designado de memória e/ou o formato designado de sua variável.

O ciclo esquematizado na figura 3, ou qualquer ou ciclo que envolva instru-


ções, pode ser interrompido por causa diversas (NULL & LOBUR, 2010):
•  Instruções de entrada e saída, como aquelas requisitadas pelo usuário.
(No ambiente Windows, é possível interromper processos por meio do
gerenciador de tarefas, acionado pela combinação CTRL+ALT+DEL)
•  Erros em operações aritméticas: divisão por zero, overflow.
•  Problemas de hardware.
•  Instruções inválidas.

Início

Busca
instrução na
memória

Interpretar a
operação a ser
realizada

Busca
operandos
(se houver)

Executar a
operação

Escrever o
resultado

Término

Figura 3 – Ciclo de Instrução Básico (MONTEIRO, 2007, p. 157).

capítulo 4 • 85
4.3  Aspectos de arquitetura nos computadores pessoais

Até este momento, tratamos de modelos para instruções e para arquitetura de


computadores. Nesta seção, vamos explorar aspectos mais visíveis em nossos
computadores de uso cotidiano. Inicialmente, vamos apresentar a função da pla-
ca-mãe, que ajuda a entender a arquitetura do computador em termos físicos.
Depois, vamos falar da linguagem de alto nível e um pouco sobre sistemas ope-
racionais, que correspondem a aspectos práticos das instruções para o usuário.

4.3.1  Placa-mãe

A placa-mãe realiza a comunicação e dá suporte físico aos componentes do


computador. Essa comunicação pode se referir àquela entre os componentes
internos, ou entre esses componentes e interfaces externas. Por meio da placa-
mãe, o processador se comunica com a memória principal; esta se comunica
com a memória principal se comunica com dispositivos de armazenamento
secundário; os resultados de cálculo são transmitido para a tela; etc. Para tan-
to, as placas-mãe possuem conjuntos de circuitos integrados (chipsets) que fa-
zem a comunicação entre o processador, a memória e o controle de periféricos.
(CORNACCHIONE, 2012).
Avanços na tecnologia dessas placas buscam prover uma melhor ventilação
e resfriamento, especialmente ao processador (CORNACCHIONE, 2012).

ATENÇÃO
Como a placa-mãe é responsável por transmitir sinais elétricos entre componentes eletrônicos,
quaisquer fatores físicos que prejudiquem a qualidade desse comunicação dificultará ou mes-
mo impedirá o desempenho do computador, por exemplo: poeira, umidade e maresia, oscila-
ções de energia (corrente/voltagem), altas temperaturas e falta de ventilação.
Algumas placas-mãe são banhadas a ouro para prevenir a oxidação. Em todos os casos, reco-
menda-se realizar a manutenção preventiva da placa-mãe e não apenas a corretiva, depois que
problemas se manifestaram.

86 • capítulo 4
Figura 4 – Placa-mãe
Disponível em: <http://en.wikipedia.org/wiki/Mother_board#mediaviewer/File:Micro-
ATX_Motherboard_with_AMD_Athlon_Processor_2_Digon3.jpg>.
Acesso em: 24 jul. de 2014.

Figura 5 – Processador AMD Figura 6 – Chipset


Disponível em: <http://pt.wikipe- <http://pt.wikipedia.org/wiki/
dia.org/wiki/Placa-m%C3%A3e#- Chipset#mediaviewer/>Fi-
mediaviewer/>Ficheiro:AMD-A- cheiro:Southbridge.jpg Acesso
thlonXP-1700.jpg>. Acesso em 24 em 24 jul. de 2014.
jul. de 2014.

capítulo 4 • 87
4.3.2  Software e instruções

Como falamos antes, para usar os recursos de hardware você precisará de sof-
tware. Sem o software, seu hardware apenas ficará inerte. Por meio do softwa-
re, o hardware recebe instruções detalhadas que dizem ao computador o que
deve ser feito. Basicamente, nós temos dois tipos de software. Antes, na época
do ENIAC, todo o software era escrito desde o começo, e o próprio software
precisava saber manipular tudo o que fosse necessário: tanto a informação
quanto os próprios componentes do computador. Os dois tipos de software
hoje existentes são o software de sistema e o software aplicativo.
ADAPTADO DE (LAUDON E LAUDON, 2007)

Software aplicativo

Software de sistemas Software de Sistemas


Sistemas operacionais
Tradutores de linguagem
Hardware Programas utilitários

Software Aplicativo
Linguagens de programação
Linguagens de quarta geração
Pacotes de software e ferramentas
de produtividade para PCs

Figura 7 – Principais tipos de software.

O software de sistema inclui os sistemas operacionais, os tradutores de lin-


guagem e os programas utilitários. Os softwares aplicativos incluem as lingua-
gens de programação, as linguagens de quarta geração e os pacotes de software.
Os softwares aplicativos com os quais temos mais contatos são os pacotes
de software. São ferramentas como suítes de aplicativos para escritório, como
o Office, da Microsoft. Incluem editores de texto, planilhas eletrônicas, editores
de apresentações, dentre outros.Um navegador para Internet, como o Internet
Explorer, o Firefox ou o Opera, é um exemplo de software aplicativo também.
Enfim, são softwares para utilização do usuário final.
Estes softwares aplicativos foram construídos, de alguma maneira, usan-
do linguagens de programação. No entanto, o desenvolvedor, ao criar um sof-
tware, precisa cuidar de muitos detalhes de funcionamento. Isto torna custoso
o processo de desenvolvimento. Porém, este desenvolvedor não precisa saber

88 • capítulo 4
como o computador faz para escrever ou desenhar uma interface gráfica na tela
do seu monitor. Para isto, basta que ele solicite (escreva) isto no seu código, e
quem cuidará da execução deste tipo de tarefa é o sistema operacional.

4.3.2.1  Software de sistema


O software de sistema operacional é aquele que “conversa” com o hardware e
manipula seus recursos. Ele “sabe” como escrever informações na saída, seja
um vídeo ou impressora. Ele também sabe como interpretar as informações
vindas da entrada, como o mouse e o teclado. Além disto, sabe como guardar es-
tas informações na memória e levá-las ao processador quando necessário, para
que as tarefas descritas por linguagens de programação possam ser executadas
e transformem-se em programas úteis aos usuários finais, como uma planilha
de cálculo, por exemplo.
É por isto que, na figura vista, o sistema operacional fica próximo do núcleo
do computador, que é o hardware. Ele traduz as necessidades dos softwares
aplicativos e, assim, os desenvolvedores têm mais facilidade para trabalhar.
Um sistema operacional de propósito geral (pois existem SOs para ativida-
des específicas) é uma coleção de outros softwares que gerenciam todos os
dispositivos do computador. Em geral, ele possui os seguintes componentes:
•  gerenciador (escalonador) de processos;
•  gerenciador de memória;
•  gerenciador de entrada e saída;
•  gerenciador de sistema de arquivos.
Um programa é apenas um conjunto de instruções a serem realizadas,
como uma receita. No entanto, o programa está escrito numa linguagem de
máquina, que o computador possa compreender. Quando você deseja usar este
programa, ele se torna um processo para o sistema operacional. Por isso, o SO
possui um escalonador de processos. Por meio dele, o SO consegue controlar os
programas em execução, manipular informações para este processo, controlar
os arquivos que este processo está usando, dentre outros.
O gerenciador de memória atua no sistema operacional para garantir que
cada processo tenha seu espaço de trabalho reservado na memória RAM (a me-
mória de trabalho). O gerenciador de entrada e saída controla e manipula infor-
mações que, por exemplo, entram pelo teclado, digitadas pelo usuário, e devem
ser escritas na tela do monitor. Além disso, também controlam dispositivos de
armazenamento, como discos, CDs, pen drives etc. Já o gerenciador do sistema

capítulo 4 • 89
de arquivos garante a manipulação de arquivos em dispositivos de armazena-
mento, cuida para que os arquivos fiquem organizados e possam ser acessados.
Estes componentes do sistema operacional, normalmente, não são visí-
veis ao usuário final. Digo normalmente porque, em sistemas com código
fonte aberto, como o Linux, é possível ao usuário não só ver como alterar os
códigos para os componentes do sistema operacional.
Para os usuários finais, a manipulação dos recursos oferecidos é feita por
meio de uma interface. Esta interface começou em seus primórdios, como a
famosa “linha de comando” ou interface modo texto! E hoje evoluímos para
interfaces gráficas (tão comuns para as novas gerações que já nasceram com
a existência dela), interfaces por comandos de voz etc.

4.3.2.2  Tradutores de linguagem


Além dos sistemas operacionais, temos também os softwares que fazem a
tradução de linguagem e os softwares utilitários. Os softwares de tradução
convertem o código escrito numa linguagem de programação (veja o tópico se-
guinte) para a linguagem de máquina que será compreendida pelo hardware e
usará recursos administrados pelo sistema operacional.
Já os programas utilitários são aqueles que auxiliam o usuário na confi-
guração e no gerenciamento do sistema operacional de seu computador. Um
exemplo de programa utilitário é o Windows Explorer para Windows. Trata-se
de um gerenciador de arquivos que permite ao usuário encontrar seus arquivos
no computador, como na figura a seguir.

Figura 8 – Gerenciador de arquivos Windows Explorer

90 • capítulo 4
Você já deve estar habituada a ela, não é mesmo?

Figura 9 – Desfragmentador de Discos do Windows

Outra ferramenta que podemos citar é o Desfragmentador de Discos, que


serve para reorganizar os arquivos que estão no disco rígido de maneira a ocu-
parem menos espaço.
Além desses, existem diversas outras ferramentas para auxiliar na configu-
ração da área de trabalho, no logon (entrada do usuário no sistema), no geren-
ciamento de recursos etc.

CONEXÃO
Recomendações 3.2
Se você quiser saber, detalhadamente, sobre o funcionamento do sistema operacional, acesse:
<http://informatica.hsw.uol.com.br/sistemas-operacionais.htm>. Acesso em: 24 jul. de 2014.

4.3.2.3  Linguagens de programação


Dentre os softwares aplicativos existentes, temos as linguagens de progra-
mação, as chamadas linguagens de quarta geração e os pacotes de software
e ferramentas de produtividade. Existem diversas linguagens de programação
famosas, como C, C++, Java, COBOL, Visual Basic, C#, PHP, Python e muitas
outras. A linguagem de programação serve para representarmos as instruções
que um programa deve realizar para alguma tarefa. O computador entende ape-
nas sinais elétricos. Como representamos a existência (1) ou a ausência (0) de
sinal, a linguagem que o computador entende é chamada de binária. Logo, se
instruirmos o computador por meio de uma linguagem binária, ele poderá rea-
lizar a tarefa que desejamos.

capítulo 4 • 91
100100100100100111
001100011111101011

Figura 10 – O computador compreende a linguagem binária

No entanto, é muito difícil escrever na linguagem do computador, assim


como é muito difícil escrever em inglês ou em japonês se você não conhece a
fundo a linguagem! Mas, se precisamos dar estas instruções e não sabemos a
linguagem daquele que será instruído, então podemos usar algum intermediá-
rio, por exemplo um tradutor.

???
Mostre um número
na sua tela.

Figura 11 – O computador não compreende a linguagem de alto nível

Esse intermediário, o tradutor, precisa saber falar a sua linguagem e a lin-


guagem do computador. Assim, ele precisará converter o que você quiser para a
linguagem de computador (o binário!).

Mostre um número 100100100100100111


Compilador
na sua tela. 001100011111101011

Figura 12 – O compilador traduz a linguagem de alto nível para a linguagem binária

92 • capítulo 4
Em computação, esse tradutor é chamado de compilador, e a conversão de
uma linguagem em outra é chamada de processo de compilação. O tradutor é
uma ferramenta de sistema, enquanto a linguagem é um software voltado ao
usuário (para que possa “programar” o sistema).

4.3.2.4  Linguagens de quarto nível


As linguagens de quarta geração consistem num conjunto de diversas ferra-
mentas de software para auxiliar os usuários finais no desenvolvimento de sof-
twares aplicativos sem necessitar tanto de conhecimentos mais técnicos. Algu-
mas linguagens de programação, como Java e C++, são consideradas de quarta
geração por não serem procedurais, mas sim orientadas a objetos. A tabela a
seguir mostra sete tipos de linguagens de quarta geração.

CONEXÃO
Recomendações 3.3
Veja mais informações sobre as linguagens e suas gerações em:
<http://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_de_quarta_
gera%C3%A7%C3%A3o>.
<http://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o>.
Acesso em 24 jul. de 2014.

capítulo 4 • 93
FERRAMENTAS DE
LINGUAGEM DE DESCRIÇÃO EXEMPLO
QUARTA GERAÇÃO
Orientada
WordPerfect
Ferramentas de Pacotes de softwares de uso geral para o
Internet Explores
software de PC para PCs. usuário
Access
final
Linguagens para extrair dados arma-
Linguagens de zenados em arquivos ou bancos de
SQL
consulta dados. Suportam requisições de infor-
mações que não são predefinidas.
Extraem dados de arquivos ou bancos
de dados para criar relatórios espe-
cíficos sob uma grande variedade de
formatos que não são produzidos por
sistemas de informação.
Geradores de
Cristal Reports
relatórios
Geralmente proporcionam maior con-
trole sobre a maneira como dos dados
são formatados, organizados e apre-
sentados do que as linguagens de
consulta.
Extraem dados de arquivos ou ban-
co de dados e os apresentam sob o
Linguagens grá- formato de gráficos. alguns softwares SAS Graph
ficas geradores de gráficos também pode Systat
executar operações aritméticas ou ló-
gicas com os dados.
Contém módulos pré-programados
que poderm gerar aplicações comple-
tas, incluindo sites Web, conferindo
FOCUS
grande velocidade ao desenvolvimen-
Geradores de PowerBuilder
to. O usuário pode especificar o que
aplicações Microsoft Fron-
precisa ser feito e o gerador de apli-
tPage
cação criará o código de programa
apropriado para entrada, validação,
atualização e apresentação.
Programas de software vendidos ou
Pacotes de sof- arrendados por empresas comerciais PeopleSoft HRMS
twares aplicativos que eliminam a necessidade de sof- SAP R/3
tware personalizado, da casa.
Gerem códigos de programa com um
número menor de instruções do que
Linguagens de as linguagens convencionais, como
APL
programação de COBOL ou FORTRAN. Projetadas
Normad2
altíssimo nível primordialmente como ferramentas
de produtividade para programadores
profissionais.

94 • capítulo 4
ATIVIDADE
1.  Quais causas podem acarretar o interrompimento de uma instrução?

2.  O que são registradores e o que os diferenciam da memória de armazenamento?

3.  Pesquise sobre a relação entre a Lei de Moore e os microprocessadores com núcleo múl-
tiplos.

4.  Pesquise sobre as linguagens de primeiro ao quinto nível.

REFLEXÃO
Por muito tempo, a capacidade dos processadores foi um limite frequente para a microin-
formática. Avanços em software e hardware frequentemente precisavam esperar uma nova
geração de microchips. Reflita sobre o estado atual da microinformática: são os micropro-
cessadores hoje um gargalo relevante para a maioria dos usuários? Caso contrário, que fator
se tornou a principal fronteira da microinformática?

LEITURA
Relatório de pesquisa: TUSSET, F. Evolução dos processadores. Rio de Janeiro: UFRJ, sem ano.
Disponível em: <http://equipe.nce.ufrj.br/gabriel/arqcomp2/Hist%F3rico.pdf>. Acesso em: 15
jun. 2014.

REFERÊNCIAS BIBLIOGRÁFICAS
CAPRON, H. L.; JOHNSON, J. A. Introdução à Informática. São Paulo: Pearson Prentice
Hall. 2004.

CORNACCHIONE JR., E. B. Informática. São Paulo: Atlas, 2012.

LAUDON, K. C. e LAUDON, J. P. Sistemas de Informação Gerenciais. São Paulo: Prentice


Hall. 2007.

capítulo 4 • 95
LASHINSKY, A. Nos Bastidores da Apple. São Paulo: Saraiva, 2012.

LINZMAYER, O. W. Apple Confidential 2.0 – The definitive history of the world’s most colorful
company. São Francisco: No Starch, 2004.

MONTEIRO, M. A. Introdução à Organização de Computadores. 5a ed. São Paulo: LTC, 2007.

MURDOCA, M. J.; HEURING, V. P. Introdução à Arquitetura de Computadores. Rio de Janeiro:


Campus, 2001.

NULL, L.; LOBUR, J. Princípios Básicos de Arquitetura e Organização de Computadores. 2a ed.


Porto Alegre: Bookman, 2010.

OVIDE, S. CEO exits sets Microsoft on new path. The Wall Street Journal, edic’ão eletrônica, 25
ago 2013. Disponível em: <http://online.wsj.com/news/articles/SB10001424127887324619
504579031300409638802>. Acesso em: 15 jun. 2014.

STALLINGS, W. Arquitetura e Organização de Computadores. São Paulo: Prentice Hall, 2002.

NO PRÓXIMO CAPÍTULO
No próximo capítulo, vamos entender como funciona o sistema de memória e as suas opera-
ções com a UCP. Ainda, vamos explorar os dispositivos de entrada e saída..

96 • capítulo 4
5
Memória e
Dispositivos de
Entrada e Saída
5  Memória e Dispositivos de Entrada e Saída
No capítulo anterior, vimos como a UCP precisa ter dados e instruções disponí-
veis para que possa cumprir a sua função. A fonte imediata de dados para a UCP
encontra-se nos registradores, que são componentes internos à unidade. Os re-
gistradores se caracterizam pela rapidez com que se comunicam com o processa-
dor, porém eles possuem uma capacidade limitada de armazenamento e outros
componentes de memória também precisam ser utilizados (LAUDON & LAUDON,
2007; CAPRON & JOHNSON, 2004). Neste capítulo, vamos identificar os tipos prin-
cipais de memória e como se dá a sua inter-relação. Também discutiremos as in-
terfaces de entrada e saída.

OBJETIVOS
•  Conhecer os diferentes tipos de memória e as suas inter-relações.
•  Identificar os trade-offs a respeito do desempenho dos dispositivos de memória.
•  Compreender a importância da memórica cache.
•  Saber como funcionam diferentes dispositivos de entrada e saída e a sua comunicação
com a UCP.
•  Avaliar os diferentes tipos de computadores em relação a seus dispositvos de entrada e saída.

REFLEXÃO
Busque identificar todos os tipos de armazenamento que você possui e classifique-os
em termos de velocidade de transferência e capacidade. Quais tipos de armazenamento
você já usou com frequência, mas hoje estão obsoletos? Quantas vezes você já foi pre-
judicado por problemas relacionados a armazenamentos de dados?

capítulo 5 • 99
5.1  Memória

5.1.1  Hierarquia

Os diversos tipos de memória são definidos em termos da sua relação com a UCP.
Quanto mais direta for essa relação, considera-se maior a sua posição hierárquica.
Há diversas formas de ilustrar essa hierarquia, a figura 1 é baseada na versão de
Stallings (2002) e Murdoca & Heuring (2000).
Deve-se notar que discos rígidos são considerados como armazenamento
externo ou secundário. Apesar de possuírem uma interface com a placa-mãe,
essa relação não é tão direta e veloz quanto aquela da memória interna à UCP.
Durante o funcionamento da UCP, primeiro se verifica se o dado necessário
está ou não na memória interna. Em caso contrário, é acionado o armazena-
mento externo e assim por diante.

Mais rápida e cara

Memória
Interna

Armazenamento
Externo (disco)

Armazenamento de Segurança
(fitas)

Mais lenta e barata

Figura 1 – Hierarquia da Memória


Fonte: Adaptado de Stallings (2002, p. 100) e Murdoca & Heuring (2000, p. 225).

Deve-se notar que quanto mais alto estiver na hierarquia, mais custoso ten-
de a ser o dispositivo. Assim, um projeto de computador deve balancear os be-
nefícios trazidos pela capacidade da memória interna face a seus custos. Ain-
da, deve haver um balanceamento adequado na velocidade dos componentes

100 • capítulo 5
do computador: De nada adianta, por exemplo, haver uma grande capacidade
de memória se os dispositivos de saída atrasarem os ciclos de instruções. Da
mesma forma, um processador potente pode permanecer subutilizado se não
houver a capacidade de memória adequada (MONTEIRO, 2007).

5.1.2  Características dos dispositivos de memória

O quadro 5.1 sumariza as características fundamentais dos componentes de me-


mória, as quais serão exploradas ao longo deste capítulo. A característica de loca-
lização reflete a hierarquia discutida anteriormente. Quanto à unidade de trans-
ferência, sabemos do capítulo 2 que os processadores e certos dispositivos de
memória leem e transferem dados em tamanho fixo, daí uma das diferenças entre
computadores de 16 ou 32 bits. Quanto aos métodos de acesso que os dispositivos
utilizam para localizar e dispor dados, a figura 2 sumariza os tipos principais.

CARACTERÍSTICA TIPOS PRINCIPAIS


Localização No processador (registradores), interno, externo.

Capacidade Tamanho da palavra (16, 32 bits), número de pala-


vras.

Unidade de transferência Palavra (16, 32 bits), blocos (nas memórias exter-


nas, as transferências se dão por blocos considera-
velmente maiores do que as palavras).

Acesso Sequencial, direto, aleatório, associativo.

Desempenho tempo de acesso, tempo de ciclo e taxa de transfe-


rência.

Tecnologia semicondutores, ótico, magnético.

Característica física volátil ou não, apagável ou não.

Quadro 5.1 – Características Fundamentais dos Componentes de Memória


Fonte: adaptado de Stallings (2002)

capítulo 5 • 101
• registros organizam dados.
Sequencial • o acesso segue um sequenciamento linear.
• Exemplo: fitas.

• registros também organizam dados.


Direto • cada registro possui endereço único.
• Exemplo: discos.

• endereçamento único e fisicamente


Aleatório dedicado de cada posição.
• Exemplo: memória RAM.

• a busca é orientada pelo conteúdo, não


Associativo pelo endereço.
• Exemplo: alguns tipos de memória cache.

Figura 2 – Métodos de Acesso à Memória


Fonte: Stallings (2002)

Como a qualidade dos sistemas computacionais depende do desempenho


dos seus dispositivos de memória, é importante termos métodos para avaliá
-los. Stallings identifica três fatores fundamentais:
•  Tempo de acesso: na memória que não usa o acesso aleatório, esse tem-
po corresponde àquele gasto para o posicionamento da leitura ou da es-
crita na localização desejada. Já para as memórias de acesso aleatório,
esse fator equivale diretamente ao tempo gasto para o procedimento de
leitura ou escrita.
•  Tempo de ciclo de memória: intervalo requerido para que um acesso possa
suceder o outro. Fator que se aplica mais a memórias de acesso aleatório.
•  Taxa de transferência: taxa em que os bits podem ser deslocados no dis-
positivo de memória. Para as memórias de acesso aleatório, essa taxa
corresponde ao inverso do tempo de ciclo. Para memórias de acesso não
aleatório, tem-se a relação:

102 • capítulo 5
N
R=
TΝ − T a

Onde: R = taxa de transferência em bits por segundo (bps)


N: número de bits.
TN: tempo médio para ler ou escrever uma quantidade N de bits.
Ta: tempo médio de acesso.

Além dos fatores acima, é importante levar em consideração a taxa de acerto


(NULL & LOBUR, 2010). Essa taxa reflete quantas vezes o dado requerido esteve
no nível especificado da memória em relação ao total de requisições.

5.1.3  Memória principal

Registradores

Memória Cache

Memória Principal

Figura 3 – Divisão da Memória Interna


Fonte: Adaptado de Stallings (2002, p. 100) e Murdoca & Heuring (2000, p .225)

Como mostra a figura 3, a memória interna também é subdivida em termos


de comunicação com a UCP. Vamos caracterizar inicialmente a memória prin-
cipal para depois tratar da memória cache.

capítulo 5 • 103
Memória
UCP
Principal

Barramento

Figura 4 – Relação entre UCP e Memória Principal


Adaptado de Murdoca & Heuring (2000, p .235)

Retomando o modelo de Von Neumann, a UCP precisa ser alimentada rápi-


da e diretamente com dados e instruções (figura 4). Essa é a função da memória
principal. Para que a memória funcione com a UCP, é preciso haver uma inte-
gração de registradores, mecanismos de controle e o barramento (MONTEIRO,
2007), tal como resume o quadro 5.2.

ELEMENTO FUNÇÃO
Registrador de endereço (REM) armazena temporariamente o endereço a
ser acessado.

Barramento de endereços transmite dados do REM para a memória


principal (unidirecional).

Registrador de dado (RDM) armazena de forma temporária o dado a


ser transferido.

Barramento de dados faz a ligação entre o RDM e a memória


principal (bidirecional)

Controlador da memória integra a unidade de controle: sinaliza


instruções e avalia o estado de execução
das operações de memória integrando
toda a UCP.

104 • capítulo 5
ELEMENTO FUNÇÃO
Barramento de controle comunica os sinais relativos ao controle
no sistema.

Relógio sincroniza o sistema.

Quadro 5.2 – Elementos para Operações de Memória


Fonte: adaptado de Monteiro (2007)

ATENÇÃO
Em linguagens de programação como C++, um ponteiro armazena o endereço da posição de
um dado na memória, servindo para referenciá-lo (PIVA JR. et al, 2012).

A partir dos componentes acima, podemos descrever as duas operações bá-


sicas da memória: leitura e escrita. Na operação de leitura temos a sequência
descrita na figura 5. Perceba que há três tipos comunicações envolvidas: o en-
dereço do dado, os sinais de controle de instrução e, por fim, o dado em si. Nes-
sa operação, o começo depende da indicação do endereço da memória onde
está o dado a ser acessado. Já na operação de escrita, é indicado o endereço
onde o dado deve ser gravado. De qualquer forma, as três formas de comunica-
ção pelo barramento também são usadas.

CONEXÃO
Conheça como funciona uma data center do Google (há opção de legenda em português).
<https://www.youtube.com/watch?v=avP5d16wEp0>
Acesso em 24 jul. de 2014.

capítulo 5 • 105
Início

A UCP envia ao REM o endereço


na memória do dado a ser lido
(barramento de endereços)

É sinalizada a operação de leitura


no barramento de controle.

O dado é transferido e armazenado


no RDM (barramento de dados)

Do RDM, o dado é transmitido para


outro registrador na UCP.

Término

Figura 5 – Esquematização da operação de leitura.


Adaptado de: (DELGADO e RIBEIRO, 2009).

Início

A UCP envia ao REM o endereço na


memória onde o dado será gravado
(barramento de endereços)

É sinalizada a operação de escrita


no barramento de controle.

O dado é transferido e armazenado


no RDM (barramento de dados)

Do RDM, o dado é transmitido para


o endereço designado.

Término

Figura 6 – Esquematização da operação de leitura.


Adaptado de: (DELGADO e RIBEIRO, 2009)

106 • capítulo 5
5.1.4  Memória RAM

Figura 7 – Modelos diferentes de memória RAM.


Disponível em: <http://pt.wikipedia.org/wiki/RAM#mediaviewer/Fichei-
ro:RAM_n.jpg>. Acesso em: 24 jul. de 2014.

ATENÇÃO
A Memória RAM é volátil, ou seja, seus dados deixam de ser armazenados na ausência de
energia. Para que um computador receba instruções básicas sem depender da RAM, criou-
se uma memória de apenas leitura (ROM, read-only memory) que não é volátil. Embora exis-
tam alguns dispositivos de ROM que podem ser reprogramados, a função principal deles
ainda é manter um conjunto essencial de dados para leitura. Em sistemas embutidos, como
eletrodomésticos, brinquedos e equipamentos médicos, a memória ROM possui uma importân-
cia maior (NULL & LOBUR, 2010).

capítulo 5 • 107
Nos computadores convencionais, o papel da memória principal é desem-
penhado pela memória RAM e parcialmente pela memória ROM. Como vimos
no capítulo 1, a memória RAM (memória de acesso randômico) serve para
armazenar dados de trabalho do processador. Nas especificações de compu-
tadores comerciais, a capacidade da memória RAM recebe destaque. Quando
lançado em 1977, o Apple II tinha uma memória RAM de 4Kb expansível até
48 Kb apenas (LINZMAYER, 2004), já em 2014, um iMac podia chegar ter até
32G (APPLE, 2014). Nas placas-mãe dos computadores pessoais, geralmente há
slots livres para que outros circuitos de RAM possam ser adicionados, já em dis-
positivos móveis isso é mais raro.

CONEXÃO
Saiba mais sobre Memória RAM:
<http://e.cdn-hardware.com.br/static/media/RevistaGDH_04.pdf>
Acesso em 24 jul. de 2014.

Figura 8 – iMac.
Disponível em: <http://commons.wikimedia.org/wiki/IMac#mediaviewer/Fi-
le:IMac_vector.svg>.

108 • capítulo 5
O quadro 5.3 relaciona os principais tipos de memória RAM. Deve-se desta-
car aquelas de tipo síncrono, que trabalham sem atraso (delay) com o proces-
sador (CORNACCHIONE, 2012). Outra diferença importante reside nas memó-
rias RAM estáticas, que mantém os seus dados enquanto houver alimentação
de energia, e as dinâmicas, que demandam recargas em períodos de poucos
milissegundos (NULL & LOBOUR, 2011).

CATEGORIA GERAL TIPO


DRAM (Dynamic RAM)

FPM DRAM (Fast Page Mode DRAM)

Principal EDO DRAM (Extended Data Out DRAM)

SDRAM ( Synchronous DRAM)

MDRAM (Multibank DRAM)

Cache SPRAM (Static RAM)

VRAM (Vídeo RAM)

Vídeo SGRAM (Synchronous Graphics RAM)

WRAM (Window RAM)

Quadro 5.3 – Tipos principais de memória RAM


Fonte: Cornacchione (2012, p. 45)

5.1.5  Memórica Cache

A UCP processa dados em velocidade consideravelmente maior do que os mes-


mos são transferidos entre a memória principal (STALLINGS, 2002). Por isso,
o acesso à memória pode frequentemente se tornar um gargalo do sistema. A

capítulo 5 • 109
ideia de uma memória intermediária entre a UCP e a memória principal veio
da constatação de que 90% do processamento depende de apenas de 10% de
código (MURDOCHA & HEURING, 2000). Assim, uma memória pequena pode-
ria armazenar os dados que são usados com mais frequência. Colocando essa
memória em comunicação direta e rápida com a UCP (figura 9), o desempenho
do computador poderia ser melhorado de forma significativa.

UCP Memória
Cache Principal

Barramento

Figura 9 – Relação entre UCP e Memória Principal


Adaptado de Murdoca & Heuring (2000, p. 235)

O desafio para que a memória cache seja eficiente é que haja um bom mape-
amento de memória e que realmente os dados mais úteis sejam armazenados.
A memória cache é geralmente mapeada pelos métodos direto, associativo ou
associativo por conjunto (NULL & LOBOUR, 2011).

Há algum tempo, o armazenamento secundário era sinônimo de discos magnéticos,


como os disquetes e o disco rígido do computador pessoal. Este último consiste na ver-
dade em uma série de discos empilhados em uma estrutura a vácuo. Em comum com
os disquetes, está a presença de partes móveis e dependência de um cabeçote para
fazer a leitura dos dados. Essas características acarretam alguma fragilidade desses
sistemas em relação a choques e esse é um dos motivos, além da relativa lentidão, para
que as memórias em estado sólido (semicondutores) tenham passado a encontrar mais
uso, inclusive como armazenamento secundário em laptops (NULL & LOBOUR, 2011).

110 • capítulo 5
5.2  Dispositivos de entrada e saída E/S

Um computador não processa dados como um fim de si mesmo. Os usuários


precisam indicar que instruções e dados querem processar e os mesmos usu-
ários devem receber o resultado do processamento. Essa comunicação se dá
pelos sistemas de entrada e saída (E/S), ou, em inglês, In and Out (I/O) (DEL-
GADO & RIBEIRO, 2009). Não se trata aqui apenas de transmissão de dados,
deve-se ressaltar, mas da própria experiência que o usuário terá com o disposti-
vo. Smartphones e tablets com tela multitoque ultrapassaram os computadores
pessoais como objetos de consumo justamente por oferecem uma experiência
única quanto à interface.
As arquiteturas dos computadores devem fornecer não só portas físicas
para os dispositivos de E/S, mas um mapeamento de memória adequado e pro-
gramação de baixo nível para comunicação, tal como em drivers. Como salienta
Monteiro (2007), mouses, teclados, vídeos, microfones possuem formas de si-
nais e velocidades muito distintas. Além disso, tais dipositivos não são sincro-
nizados pelo relógio da UCP. Na figura 10, temos um exemplo de arranjo entre
UCP, memória pricipal (MP) e dispositos periféricos (P1, P2 e P3) por meio de
uma interface E/S. Lembrando que cabe ao controle implementar as operações
de leitura e escrita, além de monitorar o estado de sua execução.

UCP
Memória Principal

Endereço Controle Dados

Controlador E/S

P1 P2 P3

Figura 10 – Exemplo de arranjo entre UCP, MP, E/S e periféricos


Fonte: Adaptado de Monteiro (2007, p. 343)

capítulo 5 • 111
A transmissão de dados entre a interface do periférico e a memória/UCP
pode se dar por formas bem distintas. Na transmissão serial, a comunicação se
dá por uma linha única e, assim, um bit é transmitido de cada vez. Via de regra,
a interface possui um buffer de forma a regular o fluxo e ritmo da transmissão.
Na transmissão paralela, um conjunto de bits é repassado de uma só vez (MON-
TEIRO, 2007).

5.3  Tipos de Computadores

A seguir serão apresentados brevemente os tipos principais de computadores.


Busque identificar para cada um deles, a partir do texto e de pesquisa, quais
são os dispositivos de entrada e de saída.

5.3.1  Computadores pessoais

São os chamados computadores de mesa (desktop) ou microcomputadores.


Esta linha de computadores é usada para tarefas rotineiras, domésticas ou em
escritórios. Uma variação deste tipo de computador que é usada para serviços
mais avançados são as estações de trabalho (workstations). São PCs com confi-
guração muito mais robusta.
GOCE / DREAMSTIME.COM

Figura 11 – Uma Workstation PC

112 • capítulo 5
5.3.2  Notebooks

Estes computadores são mais leves, projetados para o uso portátil. Equipados com
bateria com boa duração, são usados em viagens ou em qualquer lugar. Atualmen-
te existem notebooks com configurações tão robustas e caras quanto workstations.
Recentemente, surgiu uma variação dos notebooks. São modelos com tela
menor (de 7 a 11 polegadas), bateria com maior duração, sem leitores de CD ou
DVD e muito mais leves, além de serem mais baratos (em geral). São os chama-
dos netbooks. Planejados para portabilidade e navegação na Internet em qual-
quer lugar. Com a grande difusão das redes que fornecem Internet sem fio, este
modelo tem ganhado popularidade e vem sendo adotado até por escolas como
ferramenta de auxílio às atividades em sala.
KMTHEMAN / DREAMSTIME.COM

Figura 12 – Um notebook versus um netbook

5.3.3  Computadores handheld

O handheld, também chamado de PDA (Personal Digital Assistant), foi criado


originalmente para controlar agendas de compromissos, informações pessoais,
catálogo de endereços e telefones. Geralmente acessados por meio de uma cane-
ta gráfica, possuem tela sensível ao toque, sendo possível escrever sobre ela.

capítulo 5 • 113
Estes computadores evoluíram e passaram a ter suas funcionalidades inte-
gradas em celulares, surgindo o chamado smartphone. Um smartphone é basi-
camente um celular com funções de um PDA.

Um dos smartphones mais procurados e mais desejados desde o seu lan-


çamento é o Iphone, da Apple.

Um computador ultraportátil, o popular IPhone e um handheld da Compac.

5.3.4 Supercomputadores

São os mais caros e mais poderosos computadores. Usados para grandes simu-
lações, como previsão do tempo, análise do mercado de ações, efeitos especiais
em produções cinematográficas. Também são muito usados por órgãos do go-
verno para tarefas que envolvam gigantesca manipulação de dados.
LEROY N. SANCHEZ, RECORDS MANAGEMENT / MEDIA SERVICES AND OPERATIONS / WIKIMEDIA

Figura 13 – Supercomputador RoadRunner

114 • capítulo 5
ATIVIDADE
1.  Qual é a diferença das memórias RAM e ROM?

2.  Uma operação de leitura de memória envolve no mínimo quantos registradores?

3.  O que é a memória cache?

4.  Qual a diferença entre o método de acesso direto e por associação?

5.  Qual é a relação entre o processador e a memória RAM?

REFLEXÃO
Os tablets e smartphones trouxeram uma nova abordagem tanto para hardware quanto para
software. A microinformática se tornou ainda mais presente no cotidiano, ganhando uma na-
tureza muito próxima e intíma com o usuário. Quais serão os caminhos de desenvolvimento
dos computadores, sabendo-se da tendência de queda de preços de componentes de um
lado e, de outro, da motivação das empresas em lançarem produtos inovadores, os quais
garantem uma maior margem de lucro? r!

LEITURA
Livro: SCHMIDT, E.; COHEN, J. A Nova Era Digital. Rio de Janeiro: Intrínseca, 2013.

REFERÊNCIAS BIBLIOGRÁFICAS
APPLE. Compare Mac models. Website. 2014. . Disponível em: <https://www.apple.com/
mac/compare/>. Acesso em: 22 jun. 2014.

CAPRON, H. L.; JOHNSON, J. A. Introdução à Informática. São Paulo: Pearson Prentice Hall.
2004.

CORNACCHIONE JR., E. B. Informática. São Paulo: Atlas, 2012.

capítulo 5 • 115
DELGADO, J.; RIBEIRO, C., Arquitetura de Computadores, 2ª edição, LTC, , 2009.

LAUDON, K. C. e LAUDON, J. P. Sistemas de Informação Gerenciais. São Paulo: Prentice Hall.


2007.

LINZMAYER, O. W. Apple Confidential 2.0 – The definitive history of the world’s most colorful
company. São Francisco: No Starch, 2004.

MONTEIRO, M. A. Introdução à Organização de Computadores. 5a ed. São Paulo: LTC, 2007.

MURDOCA, M. J.; HEURING, V. P. Introdução à Arquitetura de Computadores. Rio de Janeiro:


Campus, 2001.

NULL, L.; LOBUR, J. Princípios Básicos de Arquitetura e Organização de Computadores. 2a ed.


Porto Alegre: Bookman, 2010.

PIVA JR., D.; NAKAMITI, G. S.; ENGELBRECHT, A. M.; BIANCHI, F. Algoritmos e Programação
de Computadores. Rio de Janeiro: Elsevier, 2012.

STALLINGS, W. Arquitetura e Organização de Computadores. São Paulo: Prentice Hall, 2002.

116 • capítulo 5