autor do original
autor do original
MARCO FÁBIO POLLI
MARCO FÁBIO POLLI
1ª edição 1ª edição SESES SESES
ORGANIZAÇÃO DE
ORGANIZAÇÃO DE
COMPUTADORES
COMPUTADORES
Conselho editorial
Conselho editorial fernando fukuda, simone markenson, jeferson ferreira fagundesfernando fukuda, simone markenson, jeferson ferreira fagundes
Autor do original
Autor do original marco fábio pollimarco fábio polli
Projeto editorial
Projeto editorial roberto paesroberto paes
Coordenação de produção
Coordenação de produção rodrigo azevedo de oliveirarodrigo azevedo de oliveira
Projeto gráfico
Projeto gráfico paulo vitor bastospaulo vitor bastos
Diagramação
Diagramação fabrifabricoco
Revisão linguística
Revisão linguística aderbal torres bezerraaderbal torres bezerra
Imagem de capa
Imagem de capa nome nome do do autor autor — — shutterstockshutterstock
Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida 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 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
qualquer sistema ou banco de dados sem permissão escrita da Editora. Copyrightseses, 2015.seses, 2015.
Dados Internacionais de Catalogação na Publicação Dados Internacionais de Catalogação na Publicação(cip)(cip)
P771o
P771o Polli, MarcoPolli, Marco
Organizaçã
Organização o de de computadores computadores / / Marco Marco Polli.Polli. Rio
Rio de de Janeiro: Janeiro: SESES, SESES, 2014.2014. 128
128 pp. . : : il.il.
ISBN
ISBN 978-85-60923-978-85-60923-49-649-6 1.Ciências
1.Ciências da da computação. computação. 2. 2. Organização Organização de de computadores.computadores. 3.
3. Arquitetura Arquitetura de de computadores. computadores. 4. 4. Processamento. Processamento. I. I. SESESESES.S. II. Estácio
II. Estácio
CDD 004.22 CDD 004.22
Sumário
Prefácio
5
1. Processamento de Dados
e Estrutura Básica do Computador
8
Organização e arquitetura de computadores 9
Processamento de dados, Informação e Conhecimento 9
Breve histórico dos computadores 12
Visão geral do computador pessoal 19
Elementos Básicos da Arquitetura de Von Neumann 22
Construção de algoritmos simples 25
2. Representação de Dados
34
Elementos binários fundamentais: bits, bytes e words. 34
Bases numéricas 38
Representação de caracteres 44
Tipos de dados e uso de variáveis em algoritmos 46
3. Álgebra Booleana e Operações Lógicas em
Algoritimos
56
Álgebra booleana 57
Portas lógicas 64
4. Instruções e Processamento
78
Componentes fundamentais para o processamento 78
Instruções de computador 80
Aspectos de arquitetura nos computadores pessoais 85
5. Memória e Dispositivos de Entrada e Saída
98
Memória 99
Dispositivos de entrada e saída E/S 110
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 sucente 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 inuenciar. Para tanto,
devemos conhecer como os computadores funcionam e são organizados. Esse conhe
-cimento é essencial tanto para o desenvolvimento de hardware, de software ou mesmo para se fazer um bom uso dessa tecnologia.Com essa preocupação, o conteúdo da
disciplina é organizado do seguinte modo:
• Capítulo 1 – Entenderemos o que é processamento de dados e o funcionamento
básico de um computador.
• Capítulo 2 – Será explicada a linguagem binária.
• Capítulo 3 – Entenderemos a álgebra booleana e a sua implementação em algo
-ritmos simples.
• Capítulo 4 – Veremos com mais detalhes como o computador trata dados e ins
-truções na Unidade Central de Processamento.
• Capítulo 5 – Exploraremos os tipos de memória e suas
inter--relações.
Processamento de
Dados e Estrutura
Básica do Computador
1 Processamento de Dados
e Estrutura Básica do Computador
Computadores não se limitam aosnotebooks e aosdesktops nos escritórios, eles
estão nos equipamentos médicos, carros, aparelhos de TV, celulares e em sim-ples brinquedos. É impossível dissociar a computação do nosso estilo de vida. Porém, são poucas pessoas que de fato entendem como funciona um computa-dor e como dados são processados. Esse conhecimento é importante para que os computadores e seu modo de usar continuem a se desenvolver.
Aqui vamos descrever os elementos básicos de computação e sua história, ser- vindo de base para os demais capítulos da disciplina. Vamos entender o
concei-to de dados e seu processamenconcei-to. Um breve panomora da trajetória histórica dos computadores será apresentado para que depois discutamos a arquitetura daVon Neumann. Dessa forma, teremos uma visão fundamental sobre o
funcio-namento do computador.
OBJETIVOS
• Compreender a diferença entre organização e arquitetura de computadores. • Dominar o conceito de dados e do seu processamento.
• Entender a trajetória de evolução dos seus computadores e seus tipos principais.
• Identificar as partes principais de um computador segundo a arquitetura de Von Neumann.
REFLEXÃO
Você já deve ter visto diversos filmes e artigos que discutem o tema da inteligência artificial. Seria possível mesmo que computadores sejam inteligentes? Eles poderiam ter vontade ou consciên-cia? Ao ler esse capítulo, busque refletir sobre o que um computador pode ou não fazer, relem-brando as obras de ficção e opiniões sobre o assunto.
1.1 Organização e arquitetura de computadores
A organização dos computadores trata da estrutura dessas máquinas, preocu-pando-se com circuitos, tipos de memória e demais componentes físicos usa-dos, como os periféricos. Ou seja, busca-se saber como se dá o funcionamento do computador. Já a arquitetura dos computadores fornece elementos críticos a serem usados pelo programador: dados e suas representações, operações ló-gicas e rotinas, etc. Por isso, a da descrição da arquitetura possui uma natureza mais abstrata. Devido à importância de se integrar conhecimento de hardware
esoftware, esta disciplina cobrirá aspectos tanto de organização quanto
arqui-tetura, seguindo o caminho de obras de referência na área (NULL & LOBUR, 2010; MURDOCA & HEURING; 2000; STALLINGS, 2002; MONTEIRO, 2007).
Por mais simples ou complexa que seja a estrutura de um computador, a sua função básica é o processamento de dados. A seguir, vamos discutir qual é o significado dessa atividade e a sua relação com o conhecimento.
1.2 Processamento de dados, Informação e Conhecimento
Vamos discutir um pouco esses conceitos e as diferenças entre eles?
A seguir, apresento trechos da definição dada pelo professor Dr. Valdemar W. Setzer, disponibilizada em: <http://www.ime.usp.br/~vwsetzer/dado-info.html>.
Segundo o professor Dr. Valdemar Setzer, podemos dizer que dado é:
[...] uma sequência de símbolos quantificados ou quantificáveis. Portanto, um texto é um dado. De fato, as letras são símbolos quantificados, já que o alfabeto, sendo um conjunto finito, pode por si só constituir uma base numérica (a base hexadecimal emprega tradi-cionalmente, além dos 10 dígitos decimais, as letras de A a E). Também são dados fotos, figuras, sons gravados e animação, pois todos podem ser quantificados a ponto de se ter eventualmente dificuldade de distinguir a sua reprodução, a partir da representação quantificada, com o original. É muito importante notar-se que, mesmo se incompreensível para o leitor, qualquer texto constitui um dado ou uma sequência de dados [...]. (SETZER)
Segundo o Dr. Setzer, o dado é uma entidade matemática puramente sin-tática, ou seja, os dados podem ser descritos por estruturas de representação. Assim sendo, podemos dizer que o computador é capaz de armazenar dados.
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:
[...] uma abstração informal (isto é, não pode ser formalizada através de uma teoria lógica ou mate-mática), que está na mente de alguém, representando algo significativo para essa pessoa. Note--se que isto não é uma definição, é uma caracterização, porque “algo”, “significativo” e “al-guém” não estão bem definidos; assumo aqui um entendimento intuitivo (ingênuo) desses termos. Por exemplo, a frase “Paris é uma cidade fascinante” é um exemplo de informação – desde que seja lida ou ouvida por alguém, desde que “Paris” signifique para essa pessoa a capital da França (supondo-se que o autor da frase queria referir-se a essa cidade) e “fascinante” tenha a qualidade usual e intuitiva associada com essa palavra.
Assim, a informação depende de algum tipo de relacionamento, avaliação ou interpretação dos dados.
Veja também que informação e dado mantêm relações:
[...] Se a representação da informação for feita por meio de dados, como na frase sobre Paris, pode ser armazenada em um computador. Mas, atenção, o que é armazenado na máquina não é a informação, mas a sua representação em forma de dados. Essa repre-sentação pode ser transformada pela máquina, como na formatação de um texto, o que seria uma transformação sintática. A máquina não pode mudar o significado a partir deste, já que ele depende de uma pessoa que possui a informação. Obviamente, a máquina pode
embaralhar os dados de modo que eles passem a ser ininteligíveis pela pessoa que os re-cebe, deixando de ser informação para essa pessoa. Além disso, é possível transformar a representação de uma informação de modo que mude de informação para quem a recebe (por exemplo, o computador pode mudar o nome da cidade de Paris para Londres). Hou-ve mudança no significado para o receptor, mas no computador a alteração foi puramente sintática, uma manipulação matemática de dados.
Podemos agrupar dados isolados e torná-los consistentes ao se transfor-marem em informações. Por exemplo, se tivermos um conjunto de dados que descreva a temperatura do ambiente num local, horário e data, poderíamos ter a seguinte relação: Em Ribeirão Preto, SP, no dia 3 de fevereiro, às 15h10 estava uma temperatura de 24°. 15h10 3 de fevereiro 24° Entrada (Dados) Processamento Classificar Filtrar Organizar Saída (Informações) Ribeirão Preto- SP A D A P T A D O D E ( C Ô R T E S ,2 0 0 8 )
Figura 1 - Geração de informações a partir do processamento de dados.
Assim, o conjunto de dados inicial foi organizado de maneira que “faça sen-tido” àqueles que o estiverem lendo. Isto os torna informação. No entanto, a representação no computador é feita baseada nos dados.
E como fica o conhecimento?
Caracterizo Conhecimento como uma abstração interior, pessoal, de algo que foi expe-rimentado, vivenciado, por alguém. Continuando o exemplo, alguém tem algum conheci-mento de Paris somente se a visitou.
[...] A informação pode ser inserida em um computador por meio de uma representação em forma de dados (se bem que, estando na máquina, deixa de ser informação). Como o conhecimento não é sujeito a representações, não pode ser inserido em um computador. Assim, neste sentido, é absolutamente equivocado falar-se de uma “base de conheci-mento” em um computador. O que se tem é, de fato, é uma tradicional “base (ou banco) de dados”.
Um nenê de alguns meses tem muito conhecimento (por exemplo, reconhece a mãe, sabe que chorando ganha comida etc.). Mas não se pode dizer que ele tem informações, pois não associa conceitos. Do mesmo modo, nesta conceituação não se pode dizer que um animal tem informação, mas certamente tem muito conhecimento. [...]
A informação, segundo o Dr. Setzer, associa-se à semântica, enquanto o co-nhecimento está associado àpragmática, ou seja, algo existente no mundo real.
CONEXÃO
Recomendações 1.3
Leia na íntegra o artigo do Dr. Setzer em: <http://www.ime.usp.br/~vwsetzer/dado-info.html>. Acesso em: 24 jul. de 2014.
1.3 Breve histórico dos computadores
Um dos pontos interessantes na história do surgimento dos computadores foi a rápida evolução das tecnologias utilizadas para sua produção.
O primeiro computador de grande porte a usar eletrônica digital foi o ENIAC ( Electrical Numerical Integrator and Calculator ). Ele era de grande porte, devido
à quantidade de cálculos que ele era capaz de realizar: cerca de 5 mil somas ou 360 multiplicações por segundo (muito pouco comparado à capacidade de nos-sos computadores atuais).
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 Mau-chly. O desenvolvimento iniciou-se em 1943, com financiamento mili-tar, para ser usado na Segunda Guerra Mundial, mas só se tornou opera-cional em 1946. Tinha cerca de 30 toneladas e ocupava 180 m2 de área.
Em 1944, juntou-se ao grupo de pesquisadores o engenheiro John Von Neu-mann. Este criou a arquitetura (chamada de arquitetura deVon Neumann) que é
usada até hoje nos computadores comerciais.
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álvu-las a vácuo, que foi a tecnologia inicial para com-putadores eletrônicos. Por isto, ele é o marco da Primeira Geração de Computadores. O proble-ma das válvulas era o custo alto para proble- manuten-ção. Para você ter uma ideia, o ENIAC foi cons-truído usando mais de 17 mil válvulas e gastava mais de 200.000 watts, aquecendo muito!
As válvulas eletrônicas possuíam o tama-nho aproximado de uma lâmpada elétrica.
A era da computação comercial iniciou-se no ano de 1951, quando o UNIVAC (Universal Automatic Computer ) foi entregue ao primeiro
cliente: o escritório do Censo do Estados Uni-dos para tabulação Uni-dos daUni-dos do censo do ano anterior. Pode-se dizer que o UNIVAC foi o re-sultado de modificações positivas no ENIAC.
Em 1947, os cientistas John Barde-en, Walter H. Brattain e William Sho-ckley desenvolveram o transistor. O transistor é um pequeno dispositivo que transmite sinais eletrônicos usan-do um resistor. Os transistores revo-lucionaram a eletrônica e a maneira de construir computadores. Além de serem muito menores do que as válvu-las, consumiam muito menos energia e geravam menos calor. Também eram
W I K I M E D I A
Figura 4 – Foto de uma válvula eletrônica
Figura 5 – Foto de um transistor
A N N E D A V E / D R E A M S T I M E . C O M
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 linguagensassembly. E esta
foi chamada a segunda geração dos computadores. Nesta época, os computa-dores ainda não atingiam as pessoas “comuns” da sociedade, sendo usados apenas por universidades e por organizações do governo e militares.
Entre 1965 e 1970, surgiu o Circuito Integrado (CI). Trata-se de um circuito eletrônico completo num pequeno chip feito de silício. Em 1965, os CIs
come-çaram a substituir os transistores nos computadores e aí nós tivemos os Com-putadores de Terceira Geração.
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étri-ca quando misturado com impurezas químielétri-cas 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.
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 me-nores, mais de 100 vezes menores que aqueles de primeira geração, mas um únicochip é mais poderoso que o próprio ENIAC. Para você ter uma ideia, em
1977 uma calculadora podia fazer cerca de 250 multiplicações por segundo, custava de 300 a 500 dólares e pesava mais de 500 gramas. Hoje, uma calcula-dora pesa muito pouco, custa 1 dólar ou menos às vezes (depende da cotação) e realiza muito mais cálculos. Em comparação ao ENIAC, um Pentium de 150 MHz era capaz de mais de 300 milhões de operações de soma por segundo, en-quanto que o ENIAC processa apenas 5.000 operações.
CONCEITO
International Business Machines (IBM) – trata-se de uma empresa de desenvolvimento de hardware e software, estadunidense, com quase um século de existência. Mais informações em <http://www.ibm.com/ibm/br/pt/>.
Dê uma olhada na figura a seguir.
Figura 8 – Evolução dos computadores
Retirado de A história dos processadores, desde ENIAC até Nehalem/INTEL.
Claro que a história mais recente dos computadores você já conhece, mas vamos apenas comentar um pouco sobre os computadores pessoais. Estes
com-putadores mudaram completamente o paradigma do uso de comcom-putadores. O primeiro computador pessoal que foi disponibilizado ao público em ge-ral foi o MITS Altair, produzido em 1975. Na época, foi “choque” grande, pois os computadores só faziam sentido para empresas, universidades, o governo ou os militares! Para que ter um computador em casa? Se fosse para investir, investiria em maquinários, em ferramentas, mas um computador? Não teria serventia! Esse seria um típico discurso de um pai cujo filho acabou de lhe fazer um pedido naquela época!
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 osoftware de planilha eletrônica VisiCalc.
Figura 10 – Apple I V O L K E R S T E G E R / S C I E N C E 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 V O L K E R S T E G E R / S C I E N C E 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 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
Não podemos nos esquecer de um nome importantíssimo no século passado. Claro, ainda é um nome muito importante: Microsoft. A hoje gigante empresa de
software forneceu o sistema operacional para o computador pessoal da IBM. Este sof-tware, chamado de MS-DOS, foi usado pela IBM e pelas empresas que criaram
com-putadores pessoais baseadas no padrão IBM PC. Com grande expansão, a Microsoft logo evoluiu para novas versões de seu sistema operacional até que “descobriram” e popularizaram a interface gráfica com o sistema operacional Windows! Os sistemas Windows mudaram o conceito de interface entre usuário e computador. Não foi a Microsoft que criou o conceito de interface gráfica, mas foi uma das principais em-presas (senão a principal) a popularizá-lo!
CONEXÃO
Recomendações 2.1
Assista ao filme história do computador em minutos disponível em <www.youtube.com/wa-tch?v=F3qWg1JBPZg>.
Acesso em: 24 jul. de 2014.
1.4 Visão geral do computador pessoal
O hardware de seu computador pessoal precisa dos seguintes componentes
para um efetivo funcionamento:
• dispositivos de entrada; • dispositivos de saída;
• dispositivos de armazenamento secundário; • unidade de processamento.
O funcionamento básico de um computador convencional acontece de acordo com a figura a seguir:
Armazenamento secundário O dispositivo de armazenamento secundário armazena dados e programas O dispositivo de entrada envia dados à unidade central de processamento A unidade central de processamento (UCP) executa instruções de computador A memória mantém dados e programas em uso no momento O dispositivo de saída disponibiliza os dados processados (as Informações)
Entrada Processamento Saída
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 )
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 omouse, 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
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. 1 2 3 4 5 6 7 8 9
Figura 14 – Componentes básico do computador: 1 – monitor, 2 – placa-mãe, 3 – proces-sador, 4 – memória RAM, 5 – placas de expansão, 6 – fonte de alimentação, 7 – leitor ótico (DVD, CD etc.), 8 – disco rígido (hd), 9 – mouse, 10 – teclado.
Dispositivos de entrada: 10 e 9 Dispositivos de saída: 1
Armazenamento secundário: 7 e 8 Elementos da UCP: 2, 3, 4, 5 e 6.
A UCP representa toda a unidade que faz o processamento, mas não é um único componente, pois reúne diversos outros. Por exemplo, a placa-mãe, que recebe este nome em razão de todos os demais componentes da UCP, periféri-cos de entrada e de saída, dependerem dela para conexão. É uma placa que faz a interligação entre todos os componentes do computador. Nela há os slots de
memória, onde fica a memória RAM do computador. A memória RAM (memó-ria de acesso randômico) é a memó(memó-ria de trabalho da máquina. Nela ficam os
programas que estão sendo processados e todas as informações necessárias. Além da memória RAM, temos o próprio processador, a unidade capaz de reali-zar complexas operações matemáticas, e as placas de expansão, que permitem adicionarmos novas funcionalidades ao nosso computador, como uma placa que faça processamento dedicado de vídeo. Enquanto a memória RAM guarda as informações de trabalho, os discos rígidos guardam todas as informações e todos os programas. Quando desligamos o computador, as informações são salvas no disco. Quando ligamos o computador, os programas necessários para utilização dele, bem como aquele que desejarmos, são carregados do disco para a memória RAM.
Além dos componentes vistos, podemos enumerar um outro tipo de dispo-sitivo: Dispositivo para Comunicação Externa. No hardware de seu
computa-dor, ele é tratado com um dispositivo de entrada e saída, mas é interessante diferenciá-lo. Exemplos destes dispositivos são:
• placas de rede; • hub;
• switch; • modems.
1.5 Elementos Básicos da Arquitetura de Von Neumann
Lembra-se de termos comentado sobre John Von Neumann, que participou da
criação do ENIAC? Apesar de Von Neumann ter sua formação na área de
mate-mática, sua contribuição foi muito importante em diversas outras áreas e, ele popularizou a chamada Arquitetura deVon Neumann, que será nosso objeto de
estudo agora.
A arquitetura de Von Neumann é a base da construção da principal
arquite-tura dos computadores modernos, os PCs.
De maneira bem simples, ela funciona assim:
A unidade central de processamento (UCP) faz operações com 1. Informações. Estas operações podem ser:
a) operações de entrada e saída, como leitura de dados do teclado e escrever dados na tela. São operações para inserção de dados na
b) operações aritméticas como adição, subtração, multiplicação e di- visão de valores inteiros ou ponto flutuante (basicamente,
núme-ros reais representados num formato definido);
c) operações lógicas e relacionais como comparações, testes de con-dições lógicas etc.;
d) movimentação de dados entre os vários componentes, ou seja, res-gate e inserção de informação na memória ou em dispositivos de entrada e saída.
2. Para fazer estas operações, necessitará de que as informações estejam na memória. Trata-se de um componente eletrônico para armazenar informações.
3. Além da memória, existem os dispositivos de entrada e saída, como te-clado emouse (entrada) ou monitor e impressora (saída), que emitirão
as informações num formato legível ao usuário do computador.
Memória Primária Dados
D a d o s D a d o s Controle Unidade Lógico e Aritmética Unidade de Controle Unidade de Entrada e Saída
Figura 15 – A arquitetura de Von Neumann – Visão interna do funcionamento de um com-putador.
Então, basicamente, na arquitetura de Von Neumann, o que ocorre é que
uma máquina pode armazenar seus programas e executá-los numa unidade responsável por diferentes operações.
Pela figura, pudemos ver que as informações podem ser dados ou infor-mações de controle. As inforinfor-mações de controle são aquelas que dizem o que deve ser feito com os dados. Por exemplo, se tivéssemos, de alguma maneira,
na memória a informação da expressão “5 + 7 < 10 ?”, saberíamos que estamos tentando comparar a soma de 5 e 7 com o valor 10 e saber quem é maior. Logo, 5, 7 e 10 são dados e “+” , “<” e “?” são informações de controle. O computador entenderia que deve somar os dados 5 e 7 (controle +) e verificar se o resultado é menor que 10 (controle < e resultado ?).
As duas outras unidades da figura são a ULA (Unidade Lógica e Aritmética) que serve para realizar as operações, efetivamente, e a UC (Unidade de Contro-le), que serve para decodificar as operações, ou seja, entender o que precisa ser feito, e disparar novas operações, caso necessário.
A UCP entende operações num determinado formato. Vamos aqui chamar formato de linguagem, ok?
Bom, o computador entende a linguagem eletrônica que popularmente é chamada de binária, devido à sua representação. Como um programador vai escrever códigos que descrevam operações em binário? Não vai (geralmente)!
Nesse ponto, entrará em cena uma camada intermediária que cuidará disto para ele! Um programador de hoje escreve código em linguagem de alto nível. Isto quer dizer que a linguagem é de mais fácil compreensão humana!
Os passos seguidos por um programador são:
1. Ele pensa no problema e o analisa;
2. depois formula algoritmos que possam resolver este problema;
3. na sequência, transforma os algoritmos em código de alto nível (esta fase é chamada de codificação ou programação);
4. após isto, traduz o código de alto nível, que resultará num “executável”; 5. um executável é um programa que roda sobre uma plataforma;
6. uma plataforma é um computador com sua arquitetura e um sistema “principal” de gerenciamento de seus recursos, chamado sistema ope-racional;
7. o sistema operacional “sabe” como fazer o executável funcionar, usan-do memória, dispositivos de entrada e saída etc.
8. o Windows, o Linux, o Solarix e o Unix, dentre outros, são exemplos de sistemas operacionais (veremos mais sobre sistemas operacionais no capítulo seguinte).
1.6 Construção de algoritmos simples
Algoritmos são conjuntos sistemáticos e formalizados de intruções voltados para resolução de um problema (PIVA JR. et al, 2012). O conceito de algorit-mo não é exclusivo da computação: uma receita de bolo, por exemplo, pode ser considerado como tal. Porém, a estrutura de algoritmos se tornou mais difun-dida a partir da programação.
Nos próximos dois capítulos, vamos relacionar os conceitos de organização e arquitetura de computadores com sua implementação em algoritmos sim-ples. Para tanto, vamos apresentar um ambiente de programação que pode ser facilmente usado pelo aluno, além de uma explicação introdutória sobre a es-trutura de algoritmos.
1.6.1 Indicação de ambiente de desenvolvimento
Para simplificar o processo de codificação de algoritmos por meio de pseudo-códigos que utilizaremos neste e no próximo capítulo um ambiente de desen- volvimento conhecido como VisuAlg. Esse ambiente pode ser obtido gratuita-mente e permite a construção e simulação de algoritmos. O programa VisuAlg é muito indicado para programadores iniciantes, uma vez que possui uma inter-face simplificada e de fácil compreensão. O quadro 1.1 apresenta os endereços principais do ambiente de desenvolvimento VisuAlg.
SITE OFICIAL
http://www.facom.ufu.br/~claudio/Cursos/PP/Docs/Visualg2.pdf Download (endereço abreviado)
goo.gl/n8YLk
Download (endereço completo)
http://www.guanabara.info/2007/09/visualg-v25/ Quadro 1.1 – Ambiente de Desenvolvimento VisuALg.
Inicialmente utilize um dos endereços apresentados no quadro 1.1 para reali-zar odownload do ambiente. Escolha uma pasta no seu computador para
arma-zenar o arquivo. Finalizado o processo de download clique duas vezes sobre o
arquivo e você visualizará uma tela semelhante a ilustrada na figura 15.
Figura 16 – Tela inicial do instalador do VisuAlg.
Clicando no botão avançar você poderá definir o diretório para instalação
do programa. Geralmente não é necessário modificar o diretório, assim, clique novamente no botão avançar . Na tela Componentes Selecionados, você
tam-bém não precisará realizar nenhuma alteração, dessa forma, clique novamente no botãoavançar . A telaSelecione o grupo do menu Iniciar , permite a
especifi-cação do nome que será definido para menu, o que novamente não necessita de modificação. A tela seguinte Selecionar Tarefas Adicionais, também já possui
as principais configurações definidas, com isso, você pode clicar no botão avan-çar, e em seguida, clique no botão instalar . A instalação é rápida e dura apenas
alguns segundos. No final, você já poderá iniciar o ambiente VisuAlg.
Para a criação de um novo algoritmo no ambiente VisuAlg, você deverá uti-lizar o menu Arquivo>Novo, ou simplesmente pressionar as teclas de atalho
Figura 17 – Criação de um novo algoritmo no ambiente VisuAlg.
Nesse momento você já tem o ambiente para desenvolvimento de algorit-mos VisuAlg instalado no seu computador. Além disso, você já sabe como criar um novo algoritmo. Poderemos agora iniciar um estudo mais detalhado a res-peito da construção de algoritmos.
1.6.2 Estrutura básica de um algortimo
O primeiro passo para a construção de algoritmos computacionais é o enten-dimento do conceito de algoritmo. Segundo Forbellone (2005), um algoritmo é uma sequência de passos que visa atingir um objetivo bem definido. Outra definição pode ser encontrada em Ascencio e Edilene (2002), em que um al-goritmo é descrito como uma sequência de passos que deve ser seguida para a realização de uma tarefa. Dentro deste contexto, você pode entender o termo algoritmo como um conjunto de passos que busca a solução de um problema.
No cenário computacional, os algoritmos têm como fundamento a elabo-ração de uma sequência de passos de forma que o computador seja capaz de solucionar um determinado problema. Em geral, os algoritmos são utilizados para abstrair1 problemas do mundo real, e transformá-los em soluções no
mun-do computacional.
A escrita de algoritmos é a base para o processo de desenvolvimento dos pro-gramas de computador. No ciclo de vida do desenvolvimento de um programa, o primeiro estágio é a elaboração da representação algorítmica. Assim, inicialmen-te, os programadores criam uma especificação algorítmica do problema compu-tacional, antes de transformá-lo no código fonte de uma determinada linguagem de programação. Com a representação algorítmica do problema é possível espe-cificar quais as principais funcionalidades do futuro programa, bem como, iden-tificar possíveis erros que ocorrerão com a execução do programa.
Para a construção de um algoritmo computacional é necessário a utiliza-ção de uma estrutura básica, que é definida a partir de uma sintaxe específica e contém blocos pré-determinados para codificação. Nesta estrutura, é especi-ficado, por exemplo, o nome do algoritmo, quais variáveis serão utilizadas e o bloco de instruções que contém a lógica do programa. O código 1 apresenta a estrutura básica de um algoritmo computacional, a qual foi definida utilizando uma representação conhecida como pseudocódigo. Esse tipo de representação também é comumente descrita como português estruturado ou portugol .
Código 1 1 algoritmo “semnome” 2 // Função : 3 // Autor : 4 // Data : 20/10/2011 5 // Seção de Declarações 6 var 7 8 inicio 9 // Seção de Comandos 10 fmalgoritmo
Na primeira linha do algoritmo é necessário especificar um nome, da mes-ma mes-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.
É importante destacar que estas linhas começam pelos caracteres //, os quais são chamados de comentários. Uma linha de comentário tem como objetivo auxiliar o entendimento do algoritmo, assim, você poderá utilizá-las sempre que necessário. Outro detalhe interessante sobre os comentários, é que as linhas comentadas não influenciam na execução do algoritmo, dessa forma, você poderá escrever comentários em português da maneira que de-terminar mais adequada. Na linha 5 temos a seção de declarações, a qual será utilizada para declaração das variáveis que fazem parte do programa. A linha 8 define o início do algoritmo, e as linhas seguintes (Seção de Comandos), especificam a lógica de programação utilizada no algoritmo. Por fim, a linha 10, denominada fimalgoritmo, representa o término do algoritmo.
Para demonstrar a utilização do ambiente VisuAlg na codificação de algo-ritmos, vamos escrever nosso primeiro algoritmo. Este algoritmo tem como objetivo exibir seu nome completo na tela, assim, inicialmente você deverá abrir o ambiente e escrever o algoritmo conforme apresentado na figura 17.
Figura 18 – Codificação do algoritmo para exibir o nome na tela.
Finalizada a codificação do algoritmo é fundamental salvar o código antes de realizar a execução. Para isso, utilize o menu Arquivo>Salvar, ou simples-mente pressione a tecla de atalho Ctrl+S. Você pode escolher a pasta de sua preferência para armazenar o arquivo. A escolha do nome do algoritmo é
im-portante, assim, recomenda-se não utilizar espaços, acentos, ou caracteres es-peciais. Para este exemplo, utilizaremos o seguinte nome unid3_exemplo01. alg . A extensão.alg é utilizado pelo ambiente VisuAlg para identificar arquivos
do tipo algoritmo.
Para facilitar o acompanhamento da codificação, você pode exibir os nú-meros das linhas, dessa forma, utilize o menu Exibir>Número de linhas para habilitar o recurso. Em seguida, poderemos executar o algoritmo e visualizar o resultado na tela. A execução de um algoritmo no ambiente VisuAlg é realizada por meio do menu Algoritmo > Executar, alternativamente, você poderá utilizar a tecla de atalho F9. A figura 4 apresenta o resultado da execução do algoritmo.
Figura 19 – Resultado da execução do algoritmo no ambiente VisuAlg.
Com isso, você aprendeu os procedimentos para codificação de um algoritmo no ambiente VisuAlg, bem como, sua execução e visualização dos resultados.
ATIVIDADE
1. Especifique a diferença entre organização e arquitetura de computadores.
2. Descreva a arquitetura de Von Neumann.
3. Pode-se dizer que o computador pessoal extinguiu os mainframes? Justifique.
REFLEXÃO
Vimos até aqui que há muito mais sobre computadores do que simplesmente entender como eles funcionam. A história e a evolução dos computadores determinaram, de certa forma, como as pessoas passaram a pensar em tecnologia e a “consumir” tecnologia. Mesmo que você não se torne especialista na área de tecnologia da informação, é sempre importante saber como funcionam os equipamentos que serão usados no dia a dia. Isto facilita o diálogo entre nós e as novas tecnologias.
LEITURA
Artigo – O papel da informação no processo de capacitação tecnológica das micro e peque-nas empresas. Escrito por Paulo César Rezende de Carvalho Alvim.
Disponível em:
<http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0100-19651998000100004>
Livro – Administração de Sistemas de Informação, do autor Pedro Luiz Cortes. Livro muito interessante e abrangente sobre o uso de sistemas de informação nas empresas.
REFERÊNCIAS BIBLIOGRÁFICAS
CAPRON, H. L.; JOHNSON, J. A. Introdução à Informática. São Paulo: Pearson Prentice Hall. 2004.
LAUDON, K. C. e LAUDON, J. P. Sistemas de Informação Gerenciais. São Paulo: Prentice Hall. 2007.
MONTEIRO, M. A. Introdução à Organização de Computadores. 5a ed. São Paulo: LTC, 2007.
MURDOCA, M. J.; HEURING, V. P. Introdução à Arquitetura de Computadores. Rio de Janeiro: Campus, 2000.
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.
Representação de
Dados
2 Representação de Dados
No capítulo prévio, entendemos o computador como uma máquina que pro-cessa dados. Deve-se notar que existem artefatos mecânicos que, mesmo com capacidade limitada, conseguem fazer também processamento – tal como cal-culadoras mecânicas criadas no séc. XVII. Claro que pela sua capacidade e flexi-bilidade, o nosso interesse reside nos computadores baseados em dispositivos eletrônicos, e assim descrevemos no capítulo anterior a evolução das máquinas baseadas em válvulas, transistores simples e microprocessadores. Porém, não foi respondida uma pergunta importante: como os computadores eletrônicos conseguem reconhecer dados.
Para tratar dessa questão, este capítulo começa com a definição de elementos fun-damentais da linguagem binária, partindo para bases numéricas funfun-damentais.
OBJETIVOS
• Compreender o que são bits, bytes e palavras (words). • Conhecer as principais bases numéricas.
• Saber como o computador representa números e caracteres.
• Entender, sob a perspectiva de programação, o relacionamento entre variáveis e tipos de dados.
REFLEXÃO
Ao preencher dados em formulários eletrônicos, muitas vezes recebemos mensagens de erro, indicando incompatibilidade entre os dados que entramos e o tipo de dados esperado. Qual seria a consequência de não haver esse controle?
2.1 Elementos binários fundamentais: bits, bytes e words.
Pode-se pensar em diversas propriedades relacionadas ao componente ele-trônico e à corrente elétrica, tais como voltagem, amperagem, frequência de
Essa linguagem contém dois dígitos apenas, os quais vão corresponder aos dois estados básicos. A representação desses dois dígitos foi convencionada como sendo 0 ou 1. Deve-se comentar que a linguagem binária foi desenvolvida antes mesmo da eletrônica e da computação, porém se mostrou perfeitamente ade-quada para esses campos de desenvolvimento (NULL & LOBUR, 2010).
À unidade de dígito binário (zero ou um) se dá o nome de bit, termo vindo do inglêsbinary digital unit (STALLINGS, 2002). Comobits 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 8bits é chamado debyte. Deve-se notar que a definição
do byte estava ligada à arquitetura e características do hardware. Com o
tem-po, as unidades de endereçamento foram crescendo, sendo 32 bits e 64 bits
as mais encontradas hoje. O termo word ou palavra é usado para identificar
esses conjuntos debits 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: <https://www.youtube.com/watch?v=6oDiJLg6xbE>
Tamanho bits Exemplo 1 nibble 1 byte 0 16 bits 0 32 bits 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 1 0
Quadro 2.1 – Conjunto de Dados mais Comuns
Fonte: adaptado de (MONTEIRO, 2007, p. 94)
O aumento de capacidade de processamento e armazenamento de dados nos deixou familiares com termos como megabyte, gigabyte, etc. Essas
unida-des se referem a potências de dez de quantidade de bytes, conforme está
rela-cionado no quadro 2.2.
MÚLTIPLOS
SÍMBOLO
VALOR
kilo k 1000 mega M 10002 giga G 10003 tera T 10004 peta P 10005 exa E 10006 zetta Z 10007 yotta Y 10008
A definição simples desses múltiplos pode ser melhor ilustrada com algu-mas estimativas de uso:
• A Biblioteca do Congresso Americano guardava em 2011 cerca de 235
te-rabytes (MCKENNA, 2013).
• Em 2008, o Google já processava 20 mil terabytes ao dia (SCHONFELD,
2010).
• Os serviços de mapas doGoogle disponibilizam certa de 20 petabytes de
imagens (MCKENNA, 2013).
• Em 2014, estima-se que o Facebook tinha nada menos do que
258 petabytes em arquivos de fotos e vídeos (LEUNG, 2014).
• A capacidade do cérebro humano para armazenar memória seria
equiva-lente a 2,5 petabytes (SMITH, 2010).
Deve-se reforçar que esses números são apenas estimativas, sendo o cálculo preciso bastante complexo e sujeito a diversas questões metodológicas.
Figura 2 – Biblioteca do Congresso Americano, Washington.
<http://commons.wikimedia.org/wiki/File:Library_of_Congress_Interior_ Jan_2006.jpg>
Figura 3 – Um dos datacenter do Facebook, Oregon.
Fonte: <http://commons.wikimedia.org/wiki/File:Facebook_Data_Center.jpg> Acesso em: 24 jul. de 2014
Até este ponto tratamos de alguns elementos básicos de linguagem binária e demos alguma noção de escala de uso. Entretanto como números e palavras são representados nesse tipo de convenção? Para explorarmos esse assunto, é preciso conhecer algumas bases numéricas e como se pode convertê-las.
2.2 Bases numéricas
2.2.1 Base decimal
O sistema numérico decimal foi adotado dos árabes pelo europeus e é a base que usamos para contas simples a complexas transações financeiras em nossa economia (NULL & LOBUR, 2010). Como é um sistema muito comum, não nos detemos para pensar como funciona. Veja o exemplo abaixo de decomposição de números em base decimal:
15 = 1x10 + 5x1
146 = 1x100 + 4x10 + 6x1
Outra forma importante de decompor números é com o uso de potências. Os números acima podem ser reescritos como em termos de potências de 10, lembrando que qualquer potência elevada a zero é igual a 1:
15 = 1x101 + 5x100
Nesse caso, temos dois dígitos: o dígito 5, corresponde ao multiplicador da potência elevada a zero. O dígito 1, corresponde ao multiplicador da potência elevada a 1. Por analogia, examine os casos seguintes:
146 = 1x102 + 4x101 + 6x100
8303 = 8x103 + 3x102 + 0x101 + 3x100
Em outras bases numéricas, usamos potências de base correspondente. Mas por que estudamos outras bases? Dependendo da utilização, a base deci-mal pode não ser a mais eficiente e eficaz. Deve-se saber que há uma notação que explicita em que base o número deve ser entendido:
(153)10 refere-se a 153 na base decimal.
(1110)2 refere-se a 1110 na base binária, que será vista a seguir.
2.2.2 Base binária
Como sabemos, é mais adequado implementar dados em base binária no computador. No quadro 3, temos uma relação da representação dos números de 1 a 15. Porém como esses números são formados? Podemos entendê-los a partir de sua decomposição em potências de dois:
(14)10 = (1 1 1 0)2 = (1x23) + (1x22) + (1x21) + (0x20)
= 8 + 4 + 2 + 0 = 14
Por analogia, verifique estes três exemplos: (1)10 = (1)2 = 1x20 = 1
(2)10 = (10)2 = 1x21 + 0x20 = 2 + 0 = 2
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
memória para cada variável. O byte, também referido como octeto
(MURDO-CA & HEURING; 2000), surgiu com essa preocupação, definindo conjuntos em uma quantidade fixa de 8 bits. No caso do número 1, os seus dígitos vacantes
são preenchidos por zero, assim temos na representação de inteiros positivos: (1)10= (000000001)2
(9)10= (00001001)2 (255)10 = (11111111)2
Usando as combinações possíveis de zeros e uns em 8 bits, um byte pode
representar 256 valores numéricos, ou seja, 28. Se precisássemos usar apenas
inteiros positivos, poderíamos representar valores começando por zero até che-gar a 255. Contudo, para indicar se o valor é negativo ou positivo em um byte,
precisamos usar um dígito para ter essa informação. Assim, usando-se o byte,
chega-se a um intervalo que vai de -128 a 127 (STALLINGS, 2002) .
Bug do Milênio
Quando os sistemas computacionais estavam sendo desenvolvidos no pós-guerra, um dos principais gargalos era a capacidade de memória e processamento. Por essa ra-zão, foi simplificada a representação dos anos, subentendendo que todas as datas se referiam ao século 20. Assim, a representação de “1985” correspondia a 85, suben-tendendo-se os dígitos “19” à frente. Chegando a “2000”, porém, teríamos “00”, que seria entendido como “1900”. Previu-se que esse problema de representação pudesse causar o colapso de muitos sistemas computacionais, mas as consequências foram muito menores do que as previstas (BBC, 2014).
Também pela forma de representação de datas, estão previstos problemas em 2038 com sistemas UNIX de 32 bits e programados na linguagem C (SMAAL, 2011).
Para representar valores maiores ou menores do que esse intervalo, há duas saídas principais. A primeira é lançar mão dewords (palavras), como de 16bits
ou 32 bits citados anteriormente. Em uma palavra de 16 bits, os valores de
números inteiros podem variar de -32.768 a 32.767 (MONTEIRO, 2007). A quan-tidade de bits e o formato que são convencionados a cada dado é importante.
Antes de mais nada, quanto maior o word , naturalmente maior é o uso de
me-mória e capacidade de processamento. Outro fator importante é que uma vez fixado o tamanho de certo tipo de dado em um sistema, o custo de mudança
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 debytes parawords de 16bits e dewords de 16 para 32bits
re-quer mais capacidade e mudanças na estrutura de hardware. Buscou-se evitar
a necessidade dessas mudanças e ainda de aumentar o escopo para represen-tação de números reais por meio de método de represenrepresen-tação por ponto flutu-ante (STALLINGS, 2002). Esse método se baseia na representação de números por seus algarismos significativos e potências. O padrão mais usado para esse método denomina-se IEEE 754, servindo de base para construtores de hardwa-re e programadores (MONTEIRO, 2007).
Os números a seguir possuem grandezas bastante diferentes, mas podem ser representados com basicamente a mesma quantidade de bits:
1,27 x 106 = 1,27 x 1000000 = 1270000
7,31 x 10-2 = 7,31 x 0,01 = 0,0731
Nos dois casos, temos três algarismos significativos e determinada potência na base 10. Assim, podemos representar números inteiros e aproximar valores fracionários e dízimas, ampliando consideravelmente o intervalo de tação numérica. O termo “ponto flutuante” vem do fato da vírgula na represen-tação numérica poder estar na casa centesimal, unitária, de milhar, etc.
Assim como é possível somar e subtrair usando o sistema decimal, é possí- vel fazer as opções aritméticas com o sistema binário, incluindo números de
ponto flutuante.
CONEXÃO
Saiba mais sobre o método ponto utuante e padrão IEEE 754: <http://www.lia.ufc.br/~valdisio/download/ieee.pdf>
Acesso em: 24 jul. 2014.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 2 3 4 5 6 7 8 9 A B C D E F
Diversas representações computacionais, padrões e linguagens usam a base hexadecimal. Um exemplo são as representações de cores em HTML, em que se inicia com # para depois especificar quatro dígitos hexadecimais. A cor azul primária, por exemplo, é representada por “#0000FF”.
2.2.4 Conversão entre bases
Ao usar o computador, sem perceber estamos usando a conversão entre siste-ma decisiste-mal e binário a todo o tempo. Há diversas ferramentas na WEB e em
planilhas eletrônicas para fazer realizar a conversão entre diversos sistemas. Para ilustrar aqui uma conversão simples, vamos mudar o número 9 da base decimal para binária. Vamos usar o método de divisão e resto (NULL & LOBUR, 2011), que serve apenas a números inteiros sem sinal. Repare que os dígitos da base binária vão corresponder ao resto da divisão:
9 2 1 4 2 0 2 2 0 1 2 1 0
CONEXÃO
Conheça um ferramenta na Web para conversão entre bases numéricas: <http://wims.unice.fr/wims/en_tool~number~baseconv.en.html>
Acesso em: 24 jul. 2014.
Os passos feitos foram esses:
• Dividindo-se 9 por 2, temos 4 com resto 1. • Dividindo-se 4 por 2, temos 2 com resto 1.
• Dividindo-se 2 por 2, temos 1 com resto 0, para converter precisamos
fa-zer mais uma divisão.
• Atenção: dividindo-se 1 por 2, considera-se o resultado 0 com resto 1.
Usando os restos, na ordem da esquerda para a direita, temos: (9)10 = (1001)2
ATENÇÃO
O Excel tem funções implementadas que permitem a conversão entre bases numéricas. Se você, por exemplo, possuir o número 14 em uma célula A1, você pode implementar uma função em uma célula A2 que use o 14 como argumento. Isso pode ser feito pelo ícone fx ou pelo menu Inserir. Algumas funções disponíveis são:
BINADEC: converte da base binária para a decimal. BINAHEX: converte da base binária para a hexadecimal. DECABIN: converte da base decimal para a binária.
2.3 Representação de caracteres
Até agora exploramos a representação de números, mas como se tratam as le-tras do alfabeto e os caracteres em geral? Também no pós--guerra, ainda em um contexto de escassez de memória, os sistemas computacionais adotaram o padrão ASCII(American Standard Code for Information Interchange).
BINÁRIO DECIMAL
CARAC-TERE BINÁRIO DECIMAL
CARAC-TERE BINÁRIO DECIMAL
CARAC-TERE 0010 0000 32 0100 0000 40 @ 0110 0000 96 ` 0010 0001 33 ! 0100 0001 41 A 0110 0001 97 a 0010 0010 34 “ 0100 0010 42 B 0110 0010 98 b 0010 0011 35 # 0100 0011 43 C 0110 0011 99 c 0010 0100 36 $ 0100 0100 44 D 0110 0100 100 d 0010 0101 37 % 0100 0101 45 E 0110 0101 101 e
BINÁRIO DECIMAL
CARAC-TERE BINÁRIO DECIMAL
CARAC-TERE BINÁRIO DECIMAL
CARAC-TERE 0010 1000 40 ( 0100 1000 48 H 0110 1000 104 h 0010 1001 41 ) 0100 1001 49 I 0110 1001 105 i 0010 1010 42 * 0100 1010 4A J 0110 1010 106 j 0010 1011 43 + 0100 1011 4B K 0110 1011 107 k 0010 1100 44 , 0100 1100 4C L 0110 1100 108 l 0010 1101 45 - 0100 1101 4D M 0110 1101 109 m 0010 1110 46 . 0100 1110 4E N 0110 1110 110 n 0010 1111 47 / 0100 1111 4F O 0110 1111 111 o 0011 0000 48 0 0101 0000 50 P 0111 0000 112 p 0011 0001 49 1 0101 0001 51 Q 0111 0001 113 q 0011 0010 50 2 0101 0010 52 R 0111 0010 114 r 0011 0011 51 3 0101 0011 53 S 0111 0011 115 s 0011 0100 52 4 0101 0100 54 T 0111 0100 116 t 0011 0101 53 5 0101 0101 55 U 0111 0101 117 u 0011 0110 54 6 0101 0110 56 V 0111 0110 118 v 0011 0111 55 7 0101 0111 57 W 0111 0111 119 w 0011 1000 56 8 0101 1000 58 X 0111 1000 120 x 0011 1001 57 9 0101 1001 59 Y 0111 1001 121 y 0011 1010 58 : 0101 1010 5A Z 0111 1010 122 z 0011 1011 59 ; 0101 1011 5B [ 0111 1011 123 { 0011 1100 60 < 0101 1100 5C \ 0111 1100 124 | 0011 1101 61 = 0101 1101 5D ] 0111 1101 125 } 0011 1110 62 > 0101 1110 5E ^ 0111 1110 126 ~ 0011 1111 63 ? 0101 1111 5F _
Quadro 2.4 – Tabela ASC II – Caracteres imprimíveis.
Fonte: (MONTEIRO, 2007).
Esse padrão foi desenvolvido para os sistemas de telex originalmente, o
que se reflete na definição de 33 caracteres não imprimíveis que hoje estão na maioria obsoletos e a reserva de um dígito para controle de erro (MURDOCCA & HEURING, 2000).
O quadro 4 apresenta os caracteres imprimíveis do ASC II e a sua corres-pondência binária. Assim, usando esse padrão, um sistema computacional lê “01000000” como “@”, “01111010” como “z”, etc. desde que tenha sido defini-do que o dadefini-do é 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 dehardware
e desenvolvedores desoftware ampliassem os caracteres definidos. Nesse
con-texto, destaca-se o padrão Unicode ((NULL & LOBUR, 2011).
2.4 Tipos de dados e uso de variáveis em algoritmos
O principal objetivo dos algoritmos computacionais é a manipulação de infor-mações, as quais podem ser especificadas pelo usuário, ou geradas ao longo da execução do algoritmo. Para manipulação de informações nos algoritmos é necessário a utilização de um recurso denominadovariáveis.
ATENÇÃO
Uma variável é um elemento sintático do algoritmo que tem como funcionalidade armazenar um determinado valor. O valor associado a variável depende do tipo de informação que se deseja manipular, assim, diversos tipos de valores podem ser atri- buídos as variáveis.
De acordo com o tipo de informação que será armazenado, é necessário especificar o tipo que será a variável. Este conceito é conhecido como tipo de dados. Um tipo de dados determina quais tipos de operações e quais tipos de valores podem ser manipulados pelas variáveis.
O tipo de dados mais comum existente é utilizado para a manipulação de valores numéricos do tipo inteiro. As variáveis do tipo de dados inteiro arma-zenam valores do tipo: 25, 32, 0, 45, -92, -853, entre outros. Para demonstrar a utilização deste tipo de dados, bem como, a declaração de variáveis nos algo-ritmos, vamos codificar nosso segundo exemplo. A figura 5 apresenta o código do algoritmo capaz de realizar a soma de duas variáveis do tipo inteiro. Este
Figura 4 – Codificação do algoritmo capaz de realizar a soma de dois números inteiros.
No algoritmo da figura 5 é importante notar o bloco de declaração de variáveis, o qual é codificado nas linhas 6, 7, 8 e 9. A linha 6 contém a palavra reservada
var , que indica o início do bloco de declaração de variáveis. Na linha 7 é
apre-sentada a declaração de uma variável denominada a do tipointeiro. As linhas 8
e 9 declaram mais duas variáveis do tipo inteiro, definidas comob esoma. Você
pode perceber com as declarações das variáveis um padrão sintático, o qual é representado por:
nome_da_variável: tipo_da_variável
Os algoritmos computacionais, bem como as linguagens de programação possuem algumas regras para a nomeação das variáveis. Uma variável deve obrigatoriamente iniciar como um caractere literal, assim, não é possível decla-rar variável que comecem com um número, por exemplo,1soma. Outro detalhe
importante é que nomes de variáveis não podem conter espaços, por exemplo,
soma total , então, caso seja necessário, você poderá utilizar o caractere
subli-nhado (underline), da seguinte maneira: soma_total . Outra regra importante
sobre a identificação de variáveis é não utilizar caracteres especiais, tais como @, #, $, %, bem como, não utilizar acentos de qualquer tipo.
Observando ainda o algoritmo apresentado na figura 5, é importante notar as linhas 12 e 13 que armazenam valores nas variáveisa eb. O termo
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ávelsoma recebe o resultado da operação da variável a somado com a variável b.
Finalmente, na linha 19 é apresentado na tela o resultado da soma dos valo-res. É importante destacar que a instruçãoescreva é utilizada para exibir uma
in-formação na tela, em que todas as informações textuais devem ser especificadas entre “aspas duplas”. Para a escrita de variáveis na tela, não é necessário utilizar as aspas duplas. O resultado da execução do algoritmo é apresentado na figura 6.
Figura 5 – Resultado da execução do algoritmo.
Outro tipo de dado utilizado para a manipulação de informações numéri-cas é denominado real . Com o tipo de dados real é possível realizar operações
com números que contenham casas decimais, por exemplo, 2.34, 4.48, -5.82, 0.004, entre outros. Um detalhe importante que merece destaque é com relação ao símbolo utilizado para separação das casas decimais. Geralmente, pelo fato das linguagens de programação utilizarem instruções na linguagem inglesa, a separação das casas decimais é realizada com o símbolo de . (ponto), no en-tanto, é possível criar mecanismos capazes de efetuar a substituição do ponto pelo símbolo de , (vírgula) utilizado para separar a parte fracionária no Brasil. Para demonstrar a utilização de números do tipo real, considere o problema de calcular a média de um conjunto numérico. Podemos utilizar como exemplo, a necessidade de calcular a média de notas de um conjunto de cinco alunos, por isso, a figura 7 apresenta o resultado da codificação deste exemplo. Antes da execução, o arquivo foi salvo com o nome deunid3_exemplo03.alg .
plificar a seção de declaração das variáveis. No entanto, a escolha de como as variáveis serão declaradas, é exclusivamente do programador, e este fato não
interfere no desempenho da execução do algoritmo ou do programa. Caso pre-ferir, o programador pode declarar as variáveis individualmente, uma em cada linha, como apresentado na listagem código 2.
Código 2 1 var 2 nota1: real 3 nota2: real 4 nota3: real 5 nota4: real 6 nota5: real 7 media: real
Figura 6 – Algoritmo que demonstra a utilização de variáveis do tipo real.
O resultado da execução do algoritmo é apresentado na figura 8. Na execu-ção é importante notar que na separaexecu-ção das casas decimais o VisuAlg utiliza o símbolo de ponto.
Para manipulação de informações literais, as linguagens de programação e os algoritmos, possuem um tipo específico denominado caractere. Com este
tipo de dados é possível armazenar e manipular qualquer tipo de valor, tais como uma letra do alfabeto, um símbolo, um número, entre outros. Em lingua-gens de programação de alto nível, tais como Java ou C#, a manipulação de ca-racteres pode ser realizada individualmente, com um tipo exclusivo chamado
char , ou ainda, por meio de um conjunto de caracteres, com um tipo de dados
específico conhecido comostring . A figura 9 apresenta um algoritmo que
reali-za a manipulação de informações com o tipo de dados caractere. Este exemplo foi nomeado comounid3_exemplo04.alg .
Figura 8 – Algoritmo que demonstra a manipulação de informações com o tipo de dados caractere.
Neste exemplo é importante notar que os valores do tipo caractere são re-presentados entre aspas duplas, como pode ser visualizado nas linhas 13 e 14. Porém, algumas linguagens de programação realizam a separação entre a re-presentação de um único caractere, e a definição de um conjunto de caracteres. Geralmente, a especificação de um único caractere é definida utilizando aspas simples, por exemplo, ‘M’, e a indicação de um conjunto de caracteres é realizada com aspas duplas, por exemplo, “João da Silva”. Na linguagem VisuAlg, tanto a representação de um único caractere, quanto de vários, é realizada com aspas duplas. O resultado da execução do algoritmo pode ser visualizado na figura 10.
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 comobooleanos. Um tipo de dados booleano permite o armazenamento de
va-lores lógicos, por exemplo, verdadeiro (true) ou falso (false). Em programação, um valor lógico pode ser utilizado para expressar a presença ou ausência de uma determinada informação, tal como, um valor do tipo sim ou não. Na lin-guagem algorítmica, o tipo de dados booleano é definido comológico.
Para demonstrar a utilização do tipo de dados lógico, vamos codificar mais um algoritmo. Este exemplo, nomeado comounid3_exemplo05.alg , apresenta
um algoritmo que manipula informações de todos os tipos de dados existentes, sendo eles inteiro, real, caractere e lógico. No exemplo, é importante destacar a atribuição de um valor lógico, que ocorre na linha 18.
Na linguagem algorítmica utilizada pelo ambiente VisuAlg, uma variável do tipo lógico pode assumir dois valores, verdadeiro ou falso, e neste caso a atri-buição de valores lógicos também utiliza os possíveis valores (verdadeiro ou fal-so). A figura 11 apresenta o resultado da codificação do algoritmo.
Figura 10 – Algoritmo que demonstra a utilização dos principais tipos de dados e apresenta a manipulação de valores do tipo lógico.
O resultado da execução do algoritmo, que pode ser visualizada utilizando o menu Algoritmo>Executar, é apresentada na figura 12.
Figura 11 – Resultado da execução do algoritmo.
Com isso, você conheceu os principais tipos de dados que podem ser utiliza-dos para manipulação de informações nos algoritmos e programas. O próximo passo é aprender como ler informações fornecidas pelo usuário, e como apre-sentar resultados na tela.
ATIVIDADE
1. Pesquise sobre a origem da linguagem binária, antes de seu uso pela computação. 2. Por que o sistema binário é mais adequado para o uso em dispositvos eletrônicos? 3. Decomponha 19583 em potências de base 10.
4. Converta 19583 na base binária.
5. Decomponha o resultado do exercício 4 em potências de base 2.
6. Pesquise sobre o padrão UNICODE e identifique os grupos de caracteres que são definidos.
REFLEXÃO
Neste capítulo, entendemos melhor como o computador e dispositivos eletrônicos podem representar números e letras. Também vimos que o sistema binário permite manipulações aritméticas, o que seria suficiente para caracterizar uma calculadora. Contudo, como os sis-temas computacionais conseguem fazer tarefas variadas como reconhecer voz e ajudar em
LEITURA
LEVY, S. Os Heróis da Revolução. São Paulo: Evora, 2012.
Comentário: a descrição de como computadores funcionam pode ser um assunto bastante árido se esquecermos as pessoas e as motivações que residem por cada característica da computação. Ao traçar o panorama dos atores que ajudaram a desenvolver os primeiros sistemas computacionais, passando pelos PCs, chegando aos programadores de aplicativos móveis, Levy nos mostra a feição humana, entusiasmada e obsessiva dos responsáveis pela revolução digital.
REFERÊNCIAS BIBLIOGRÁFICAS
BBC. Y2K around the word. BBC, website. <http://news.bbc.co.uk/hi/english/static/millen-nium_bug/countries/default.stm>. Acesso em: 19 jun. 2014.
CAPRON, H. L.; JOHNSON, J. A. Introdução à Informática. São Paulo: Pearson Prentice Hall. 2004.
LAUDON, K. C. e LAUDON, J. P. Sistemas de Informação Gerenciais. São Paulo: P rentice Hall. 2007.
LEUNG, L. How much data x store? Techexpectations, 13 mar. 2014. Disponível em: <http:// techexpectations.org/2014/05/17/how-much-data-does-x-store/>. Acesso em: 19 jun. 2014. MCKENNA, B. What does a petabyte look like? Computer Weelky, março 2013. Disponível em: <http://www.computerweekly.com/feature/What-does-a-petabyte-look-like>. Acesso em: 19 jun. 2014.
MONTEIRO, M. A. Introdução à Organização de Computadores. 5a ed. São Paulo: LTC, 2007. MURDOCA, M. J.; HEURING, V. P. Introdução à Arquitetura de Computadores. Rio de Janeiro: Campus, 2000.
NULL, L.; LOBUR, J. Princípios Básicos de Arquitetura e Organização de Computadores. 2a ed. Porto Alegre: Bookman, 2010.