organização de computadores.pdf

June 6, 2019 | Author: Tiago Silva | Category: Personal Computers, Algorithms, Data, Operating System, Computer Data Storage
Share Embed Donate


Short Description

Download organização de computadores.pdf...

Description

ORGANIZAÇÃO DE COMPUTADORES

autor do original

MARCO FÁBIO POLLI

1ª edição SESES rio de janeiro

2015

fernando fukuda, simone markenson, jeferson ferreira fagundes

Conselho editorial

marco fábio polli

Autor do original Projeto editorial

roberto paes

Coordenação de produção

paulo vitor bastos

Projeto gráfico Diagramação

rodrigo azevedo de oliveira

fabrico

Revisão linguística Imagem de capa

aderbal torres bezerra 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 Organizaçã o de computadores / Marco Polli. Rio de Janeiro: SESES, 2014. 128 p. : il.

ISBN 978-85-60923-49-6 978-85-60923-49-6 1.Ciências da computação. 2. Organização de computadores. 3. Arquitetura de computadores. 4. Processamento. I. SESES. 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 Processamento de dados, Informação e Conhecimento Breve histórico dos computadores Visão geral do computador pessoal Elementos Básicos da Arquitetura de Von Neumann Construção de algoritmos simples

2. Representação de Dados Elementos binários fundamentais: bits, bytes e words. Bases numéricas Representação de caracteres Tipos de dados e uso de variáveis em algoritmos

3. Álgebra Booleana e Operações Lógicas em Algoritimos Álgebra booleana Portas lógicas Operações aritméticas e lógicas em algoritmos

9 9 12 19 22 25

34 34 38 44 46

56 57 64 65

4. Instruções e Processamento Componentes fundamentais para o processamento Instruções de computador Aspectos de arquitetura nos computadores pessoais

5. Memória e Dispositivos de Entrada e Saída Memória Dispositivos de entrada e saída E/S Tipos de Computadores

78 78 80 85

98 99 110 111

Prefácio Prezados(as) alunos(as)

 No m 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 sucente 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 m, 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 inuenciar. 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

-relações. Bons estudos!

6



Exploraremos

os

tipos

de

memória

e

suas

inter-

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 simples 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 computador 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 conceito 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 funcionamento 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ência? Ao ler esse capítulo, busque refletir sobre o que um computador pode ou não fazer, relembrando 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, preocupando-se com circuitos, tipos de memória e demais componentes físicos usados, 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 arquitetura, 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: . 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 tradicionalmente, 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 sintá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ésdeuma teorialógicaoumatemática),queestánamentede alguém,representandoalgosignificativoparaessapessoa.Note-se que isto não é uma definição, é uma caracterização, porque “algo”, “significativo” e “algué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 representaçã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 recebe, 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). Houve 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, usandose 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 transformarem 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: Em Ribeirão Preto, SP, no dia 3 de fevereiro, às 15h10 estava uma temperatura de 24°.

15h10 3 de fevereiro

A  D  A  P  T  A  D   O  D  E   (    C   Ô  R  T  E   S   , 2   0   0   8   )  

Processamento Entrada

Classificar

Saída

(Dados)

Filtrar

(Informações)

Organizar 24°

Ribeirão 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 sentido” à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 experimentado, vivenciado, por alguém. Continuando o exemplo, alguém tem algum conhecimento 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 conhecimento” 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 conhecimento 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: . 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 nossos computadores atuais).

capítulo 1 •

13

W I   K  I   M

E  D  I   A 

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 Mauchly. O desenvolvimento iniciou-se em 1943, com financiamento militar, para ser usado na Segunda Guerra Mundial, mas só se tornou operacional em 1946. Tinha cerca de 30 toneladas e ocupava 180 m 2  de área. Em 1944, juntou-se ao grupo de pesquisadores o engenheiro John Von Neumann. Este criou a arquitetura (chamada de arquitetura de Von Neumann ) que é usada até hoje nos computadores comerciais. W I   K  I   M E  D  I   A 

Figura 3 – O ENIAC numa visão mais ampla

14



capítulo 1

W I   K  I   M E  D  I   A 

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álvulas a vácuo, que foi a tecnologia inicial para computadores eletrônicos. Por isto, ele é o marco da Primeira Geração de Computadores. O problema das válvulas era o custo alto para manutenção. Para você ter uma ideia, o ENIAC foi construí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 tamanho 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 Unidos 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 resultado de modificações positivas no ENIAC. eletrônica

Em 1947, os cientistas John Bardeen, Walter H. Brattain e William Shockley desenvolveram o transistor. O transistor é um pequeno dispositivo que transmite sinais eletrônicos usando um resistor. Os transistores revolucionaram a eletrônica e a maneira de construir computadores. Além de serem muito menores do que as válvulas, consumiam muito menos energia e geravam menos calor. Também eram Figura 5 – Foto de um transistor mais rápidos e mais confiáveis do que simples as válvulas. Um novo avanço, nesta mesma época, foi a criação de uma linguagem simbólica para manipular instruções das máquinas em vez de códigos numéricos, e isto tornou um pouco A  N  N  E  D  A  V  E   /   D  R  E  A  M  S  T  I   M E  .  C   O  M

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 computadores 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 Computadores de Terceira Geração. A  L  E  X   S  K   O  P   J   E   /   D  R  E  A  M  S  T  I   M E  .  C   O  M

Figura 6 – Foto de circuitos integrados

O silício é um material chamado semicondutor, pois conduz corrente elétrica 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

N  A   S  A   /   W I   K  I   M E  D  I   A 

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 menores, 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 calculadora 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, enquanto 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 .

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 computadores mudaram completamente o paradigma do uso de computadores. O primeiro computador pessoal que foi disponibilizado ao público em geral 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. V   O  L  K  E  R   S  T  E   G  E  R   /    S   C  I   E  N   C 

V   O  L  K  E  R   S  T  E   G  E  R   /    S   C  I   E  N   C  E  P  H   O  T   O 



P  H   O  T   O  L  I   B  R  A  R  Y   /    S  P  L  D   C   /   L  A  T  I   N   S  T   O   C  K 

L  I   B 

R  A  R  Y   /    S  P  L  D   C   /   L  A  T  I   N   S  T   O   C  K 

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. H   O   /   I   B  M  /   A  F  P 

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 software, chamado de MS-DOS, foi usado pela IBM e pelas empresas que criaram computadores 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 empresas (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 . 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

A  D  A  P  T  A  D   O  D  E  :    (    C  A  P  R   O  N  E   J    O  H  N   S   O  N   , 2   0   0  4   )  

Armazenamento secundário

O dispositivo de armazenamento secundário armazena dados e programas

O dispositivo de entrada envia dados à unidade central de processamento

Entrada

A unidade central de processamento (UCP) executa instruções de computador 

A memória mantém dados e programas em uso no momento Processamento

O dispositivo de saída disponibiliza os dados processados (as Informações)

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 .

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 4 5

1 6

7 8

9

Figura 14 – Componentes básico do computador: 1 – monitor, 2 – placa-mãe, 3 – processador, 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éricos 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 realizar 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 dispositivo: Dispositivo para Comunicação Externa. No hardware de seu computador, 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 matemá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 arquitetura 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 estejam 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úmeros reais representados num formato definido); c) operações lógicas e relacionais como comparações, testes de condições lógicas etc.; d) movimentação de dados entre os vários componentes, ou seja, resgate 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 teclado 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

       s        o           d        a           D

Unidade Lógico e Aritmética

Dados

Unidade de Entrada e Saída

       s        o           d        a           D

Unidade de Controle

Controle

Figura 15 – A arquitetura de Von Neumann – Visão interna do funcionamento de um computador.

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 informaçõ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 “+” , “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 algoritmos VisuAlg instalado no seu computador. Além disso, você já sabe como criar um novo algoritmo. Poderemos agora iniciar um estudo mais detalhado a respeito 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 entendimento 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 algoritmo é 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 elaboraçã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 abstrair  problemas do mundo real, e transformá-los em soluções no mundo computacional. 1

1

28

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

capítulo 1

 A escrita de algoritmos é a base para o processo de desenvolvimento dos programas de computador. No ciclo de vida do desenvolvimento de um programa, o primeiro estágio é a elaboração da representação algorítmica. Assim, inicialmente, os programadores criam uma especificação algorítmica do problema computacional, 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 especificar quais as principais funcionalidades do futuro programa, bem como, identificar 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, é especificado, 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 fmalgoritmo

Na primeira linha do algoritmo é necessário especificar um nome, da mesma 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 determinar 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 algoritmos, 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 simplesmente 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 especiais. 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 pequenas empresas. Escrito por Paulo César Rezende de Carvalho Alvim. Disponível em: 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 processa dados. Deve-se notar que existem artefatos mecânicos que, mesmo com capacidade limitada, conseguem fazer também processamento – tal como calculadoras mecânicas criadas no séc. XVII. Claro que pela sua capacidade e flexibilidade, 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 fundamentais 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 eletrô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 adequada 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 tempo, 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

WORD

• Número convencionado 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: Acesso em: 24 jul. de 2014.

36



capítulo 2

Tamanho bits nibble byte 16 bits 32 bits

Exemplo 1 1

1 0 1

0

0 0 1 1 1 1

1

0

0 1 1 1 0 0

0

0 0

1

1 0 0 0

1

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 unidades se referem a potências de dez de quantidade de bytes, conforme está relacionado 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 algumas estimativas de uso:  A Biblioteca do Congresso Americano guardava em 2011 cerca de 235 terabytes (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 equivalente 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.

 Acesso em: 24 jul. de 2014

38



capítulo 2

Figura 3 – Um dos datacenter do Facebook, Oregon.

Fonte:  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 decimal 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 (MURDOCA & 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é chegar 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 razã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, subentendendo-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 quantidade 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 memó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 requer mais capacidade e mudanças na estrutura de hardware. Buscou-se evitar a necessidade dessas mudanças e ainda de aumentar o escopo para representação de números reais por meio de método de representação por ponto flutuante (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 hardware 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 representação numérica. O termo “ponto flutuante” vem do fato da vírgula na representaçã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 utuante e padrão IEEE 754: 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 sistema 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 1

2 4 0

2 2 0

2 1 1

2 0

CONEXÃO Conheça um ferramenta na Web para conversão entre bases numéricas: 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 fazer 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 letras 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). BINÁRIO

DECIMAL

0010 0000

32

0010 0001

33

0010 0010

  CARACTERE

BINÁRIO

DECIMAL

0100 0000

40

!

0100 0001

34



0010 0011

35

0010 0100

  CARACTERE

  CARACTERE

BINÁRIO

DECIMAL

@

0110 0000

96

`

41

A

0110 0001

97

a

0100 0010

42

B

0110 0010

98

b

#

0100 0011

43

C

0110 0011

99

c

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

BINÁRIO

DECIMAL

0010 1000

40

0010 1001

  CARACTERE

BINÁRIO

DECIMAL

(

0100 1000

48

41

)

0100 1001

0010 1010

42

*

0010 1011

43

0010 1100

  CARACTERE

  CARACTERE

BINÁRIO

DECIMAL

H

0110 1000

104

h

49

I

0110 1001

105

i

0100 1010

4A

J

0110 1010

106

j

+

0100 1011

4B

K

0110 1011

107

k

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 correspondência binária. Assim, usando esse padrão, um sistema computacional lê “01000000” como “@”, “01111010” como “z”, etc. desde que tenha sido definido 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 contexto, 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 informaçõ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 armazenam 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 algoritmos, 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 é apresentada 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 declarar 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 sublinhado (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 computacional 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 valores. É importante destacar que a instrução escreva é utilizada para exibir uma informaçã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éricas é 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 entanto, é 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 é possível, pois todas as variáveis são do mesmo tipo. Dessa forma, é possível simcapí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 preferir, 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 linguagens de programação de alto nível, tais como Java ou C#, a manipulação de caracteres 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 realiza 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 representados 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 representaçã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 valores 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 linguagem 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 atribuição de valores lógicos também utiliza os possíveis valores (verdadeiro ou falso). 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 utilizados 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 apresentar 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 sistemas 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. . 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: P rentice Hall. 2007. LEUNG, L. How much data x store? Techexpectations, 13 mar. 2014. Disponível em: . Acesso em: 19 jun. 2014. MCKENNA, B. What does a petabyte look like? Computer Weelky, março 2013. Disponível em: . 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: . Acesso em: 19 jun. 2014. SCHONFELD, E. Google processing 20,000 terabytes a day, and growing. Techcrunch, website, 9 jan. 2008. Disponível em: . Acesso em. 19 jun 2014. SMAAL, 2011. 2038: o bug do milênio atacará novamente. Tecmundo, website, 25 fev 2011. Disponível em: . 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 possam 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 aritmé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 digitamos 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 booleana, 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 computacional. 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.

 • 57

capítulo 3

3.1 Álgebra booleana Segundo Linda Null e Julia Lobur, a álgebra booleana é “uma álgebra para a manipulaçã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 linguagem 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 formalizaçã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 estruturado em sua obra “As Leis do Pensamento”, de 1854 (NULL & LOBOUR, 2011).

Figura 1 – George Boole (1814 – 1864) Fonte: . 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 comprometida 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



 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 veracidade. 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:

 • 59

capítulo 3

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) File:Theseus_Maze_by_Claude_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 “verdadeiro”, 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 eletromecâ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 “verdadeiro”. 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 Heuring (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



 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 forem todas iguais a 0. Aqui temos um comportamento análogo ao exemplo anterior com a afirmativa 4. Considerando duas entradas,  p e q, já conhecemos a notação de “ p OU q”. p+q

 • 61

capítulo 3

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 resí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 ambiental 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 ambiente 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 empresa. 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 encontradas 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 operador o transforma em 1, e vice-versa. Com uma entrada  p, a notação de “ p negado” é: ~ 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 sucessivamente a entradas. Três dessas combinações encontram uso corrente em sistemas 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



(p • ~q) + (~p •

1

1

q)

0

 • 63

capítulo 3

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  é:

64 •

capítulo 3

 p

q

~ (p + q)

1

1

0

1

0

1

0

1

1

0

0

1

CONEXÃO Para aprofundar seus conhecimentos sobre álgebra booleana, leia o texto disponível em: 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: Acesso em: 24 jul. de 2014.

Operador 

 

Símbolo

AND OR NOT XOR NOR NAND

Fonte: . Acesso em: 24 jul. de 2014.

 • 65

capítulo 3

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 entradas 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 processamento 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 computador 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 da História do Computador, Califórnia. Fonte:< http://commons.wikimedia.org/wiki/File:Deep_Blue.jpg>. Acesso 24 jul. de 2014

Figura 4 – Garry Kasparov.

Fonte: . Acesso em 24  jul. de 2014.

3.3.1 Comandos de entrada e saída Os algoritmos computacionais e os programas têm como principal funcionalidade o processamento de informações. Essas informações geralmente são fornecidas 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 informaçã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 construir 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álculos 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

 • 67

capítulo 3

comando escreva denominada escreval. Este comando, além de exibir as informações desejadas na tela, também realizar a quebra de linha, ou seja, o comando é 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 nomeado 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 execuçã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 entrada 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 é exibido 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.

 • 69

capítulo 3

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 histó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 (. Acesso em 24  jul. de 2014.

Figura 6 – Chipset Ficheiro:Southbridge.jpg Acesso em 24 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 software. Sem o software, seu hardware apenas ficará inerte. Por meio do software, 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. A  D  A  P  T  A  D   O  D  E   (   L  A   U  D   O  N  E  L  A   U  D   O  N   , 2   0   0  7   )  

Software aplicativo Software de sistemas

Hardware

Software de Sistemas Sistemas operacionais Tradutores de linguagem 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 linguagem e os programas utilitários. Os softwares aplicativos incluem as linguagens 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, usando linguagens de programação. No entanto, o desenvolvedor, ao criar um software, 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 estas 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 atividades 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 memória de trabalho). O gerenciador de entrada e saída controla e manipula informaçõ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 armazenamento, 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 seguinte) 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 configuraçã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 ocuparem menos espaço.  Além desses, existem diversas outras ferramentas para auxiliar na configuração da área de trabalho, no logon (entrada do usuário no sistema), no gerenciamento de recursos etc.

CONEXÃO Recomendações 3.2 Se você quiser saber, detalhadamente, sobre o funcionamento do sistema operacional, acesse: . Acesso em: 24 jul. de 2014.

4.3.2.3 Linguagens de programação

Dentre os softwares  aplicativos existentes, temos as linguagens de programaçã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 apenas 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á realizar 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 linguagem do computador. Assim, ele precisará converter o que você quiser para a linguagem de computador (o binário!).

Mostre um número na sua tela.

Compilador 

100100100100100111 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 ferramentas de software para auxiliar os usuários finais no desenvolvimento de softwares aplicativos sem necessitar tanto de conhecimentos mais técnicos. Algumas 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: . . Acesso em 24 jul. de 2014.

capítulo 4 •

93

FERRAMENTAS DE LINGUAGEM DE QUARTA GERAÇÃO Ferramentas de software de PC

DESCRIÇÃO

EXEMPLO

WordPerfect Pacotes de softwares de uso geral Internet Explores para PCs. Access

Linguagens para extrair dados armaLinguagens de zenados em arquivos ou bancos de SQL consulta dados. Suportam requisições de informações que não são predefinidas. Extraem dados de arquivos ou bancos de dados para criar relatórios especí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 controle sobre a maneira como dos dados são formatados, organizados e apresentados do que as linguagens de consulta. Extraem dados de arquivos ou banco 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 completas, incluindo sites Web, conferindo FOCUS grande velocidade ao desenvolvimenGeradores de PowerBuilder to. O usuário pode especificar o que aplicações Microsoft Fronprecisa ser feito e o gerador de aplitPage 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 sofarrendados 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

Orientada para o usuário final

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últiplos. 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 microinformá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 microprocessadores 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: . 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: . 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 registradores se caracterizam pela rapidez com que se comunicam com o processador, 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 principais de memória e como se dá a sua inter-relação. Também discutiremos as interfaces 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 armazenamento 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 tende a ser o dispositivo. Assim, um projeto de computador deve balancear os benefícios trazidos pela capacidade da memória interna face a seus custos. Ainda, 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 memória, as quais serão exploradas ao longo deste capítulo. A característica de localização reflete a hierarquia discutida anteriormente. Quanto à unidade de transferê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 palavras.

Unidade de transferência

Palavra (16, 32 bits), blocos (nas memórias externas, as transferências se dão por blocos consideravelmente maiores do que as palavras).

Acesso

Sequencial, direto, aleatório, associativo.

Desempenho

tempo de acesso, tempo de ciclo e taxa de transferê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

Sequencial

• registros organizam dados. • o acesso segue um sequenciamento linear. • Exemplo: fitas.

Direto

• registros também organizam dados. • cada registro possui endereço único. • Exemplo: discos.

Aleatório

• endereçamento único e fisicamente dedicado de cada posição. • Exemplo: memória RAM.

Associativo

• a busca é orientada pelo conteúdo, não 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 tempo corresponde àquele gasto para o posicionamento da leitura ou da escrita 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 dispositivo 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. T : tempo médio de acesso. a

 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 principal para depois tratar da memória cache.

capítulo 5 •

103

 

UCP

Memória 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ápida 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 integração de registradores, mecanismos de controle e o barramento (MONTEIRO, 2007), tal como resume o quadro 5.2.

ELEMENTO Registrador de endereço (REM)

FUNÇÃO 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 Barramento de controle

FUNÇÃO 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 endereço do dado, os sinais de controle de instrução e, por fim, o dado em si. Nessa 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). 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: . 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, criouse uma memória de apenas leitura (ROM, read-only memory) que não é volátil. Embora existam 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ância maior (NULL & LOBUR, 2010).

capítulo 5 •

107

Nos computadores convencionais, o papel da memória principal é desempenhado 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 computadores 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: Acesso em 24 jul. de 2014.

Figura 8 – iMac.

Disponível em: .

108



capítulo 5

O quadro 5.3 relaciona os principais tipos de memória RAM. Deve-se destacar aquelas de tipo síncrono, que trabalham sem atraso (delay) com o processador (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 mesmos 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 poderia 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 Principal

Cache

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 mapeamento 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 verdade 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) (DELGADO & 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 programação de baixo nível para comunicação, tal como em drivers. Como salienta Monteiro (2007), mouses, teclados, vídeos, microfones possuem formas de sinais e velocidades muito distintas. Além disso, tais dipositivos não são sincronizados 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 (MONTEIRO, 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 configuração muito mais robusta.  G   O   C  E   /   D  R  E  A  M  S  T  I   M E  .  C   O  M

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. Atualmente 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 chamados netbooks.  Planejados para portabilidade e navegação na Internet em qualquer 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. K  M T  H  E  M A  N   /   D  R  E  A  M  S  T  I   M E  .  C   O  M

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 caneta 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 integradas em celulares, surgindo o chamado smartphone . Um smartphone  é basicamente 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  da Compac. 5.3.4 Supercomputadores São os mais caros e mais poderosos computadores. Usados para grandes simulaçõ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. L  E  R   O  Y  N  .  S  A  N   C  H  E  Z   , R  E   C   O  R  D   S  M A  N  A   G  E  M E  N  T   /   M E  D  I   A   S  E  R  V  I    C  E   S  A  N  D   O  P  E  R  A  T  I    O  N   S   /   W I   K  I   M E  D  I   A 

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 acesso direto e por associação? 5. Qual é a relação entre o processador e a memória RAM? 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, SCHMIDT, E.; COHEN, J. A Nova Era Digital. Rio de Janeiro: Intrínseca, Int rínseca, 2013.

REFERÊNCIAS BIBLIOGRÁFICAS APPLE. Compare Mac models. Website. 2014. . Disponível em: . 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, DELGADO, J.; RIBEIRO, C., Arquitetura de Computadores, Computadore s, 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. Comput adores. 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

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF