Sei sulla pagina 1di 23

USCS - UNIVERSIDADE MUNICIPAL DE SÃO CAETANO DO SUL

CURSO DE GRADUAÇÃO BACHARELADA EM CIÊNCIA DA COMPUTAÇÃO

DISCIPLINA: ARQUITETURA DE COMPUTADORES I

RAFAEL EDUARDO ESTEVES GRANDO

O ÁBACO COMO INSTRUMENTO DE COMPUTAÇÃO

SÃO CAETANO DO SUL

2011

USCS UNIVERSIDADE MUNICIPAL DE SÃO CAETANO DO SUL

CURSO DE GRADUAÇÃO BACHARELADA EM CIÊNCIA DA COMPUTAÇÃO

DISCIPLINA: ARQUITETURA DE COMPUTADORES I

RAFAEL EDUARDO ESTEVES GRANDO

O ÁBACO COMO INSTRUMENTO DE COMPUTAÇÃO

Trabalho ordinário apresentado para obtenção de nota parcial de aproveitamento na disciplina “Arquitetura de Computadores I”.

Área de concentração:

Arquitetura de

computadores

Solicitante: Prof. Cláudio Cura Júnior

SÃO CAETANO DO SUL

2011

RAFAEL EDUARDO ESTEVES GRANDO

O ÁBACO COMO INSTRUMENTO DE COMPUTAÇÃO

Trabalho ordinário apresentado para obtenção de nota parcial de aproveitamento na disciplina “Arquitetura de Computadores I”.

Área de concentração: Arquitetura de computadores

Data de entrega: 25 de outubro de 2011.

Nota:

AVALIADOR

Prof. Cláudio Cura Júnior

Universidade Municipal de São Caetano do Sul

RESUMO

O ábaco, assim como uma memória de acesso aleatório (RAM, do inglês Random- Access Memory), é usado para armazenar os dados a serem utilizados por um processador (humano, no caso do ábaco).

Imaginando um computador como sendo composto por uma pessoa, um ábaco, um lápis e uma folha de papel, é possível observar a analogia entre ábaco e RAM. Ao efetuar uma soma, por exemplo, a pessoa armazena o valor de um operando movendo as miçangas para certa posição e depois armazena o valor de outro operando do mesmo modo. O resultado, então, é interpretado pela pessoa e escrito no papel.

Neste exemplo, a pessoa é, além de processador, memória não-volátil e memória volátil, pois ela, ao receber a entrada de dados, imediatamente os aloca em sua memória de trabalho ou em sua memória de curto prazo e evoca da memória de longo prazo o algoritmo necessário para a execução da operação utilizando o ábaco. Este, por sua vez, também é uma espécie de memória, pois armazena os dados da memória de trabalho do humano, permitindo a execução do algoritmo sem haver necessidade de armazenar os dados na memória de longo prazo, além de ser mais confiável do que a memória de curto prazo.

Palavras-chave: Ábaco. Dados. Memória.

ABSTRACT

The abacus, as well as a random-access memory (RAM) is used to store the data to be used by a processor (human, in the case of the abacus). Imagining a computer as being composed of a person, an abacus, a pencil and a sheet of paper, you can see the analogy between abacus and RAM. When performing a sum, for example, the person stores the value of an operand by moving the beads to a certain position and then stores the value of another operand operating the same way. The result is then interpreted by the person and written on the paper.

In this example, the person, besides being a processor, is also non-volatile and volatile memory, for it receives the input data, immediately allocates them in his/her working memory or short-term memory and retrieves from the long-term memory the algorithm required to perform the operation using the abacus. The latter in turn is also a kind of memory, for it stores the data of the human working memory, allowing the execution of the algorithm without the need to store the data on the long-term memory, besides being more reliable than short-term memory.

Keywords: Abacus. Data. Memory.

Sumário

RESUMO

3

ABSTRACT

4

1. INTRODUÇÃO

6

2. UMA BREVE HISTÓRIA DO ÁBACO

7

2.1 ETIMOLOGIA

7

2.2 DA ANTIGUIDADE À ATUALIDADE

7

3. ÁBACO SIMPLES

9

3.1 DEFINIÇÃO

9

3.2 INSTRUÇÕES DE USO

9

3.2.1 Adição

10

3.2.2 Subtração

10

4. A MEMÓRIA ÁBACO

11

4.1 CAPACIDADE DE ARMAZENAMENTO

11

4.2 CARACTERES

12

4.3 DIFERENÇAS ENTRE O ÁBACO E AS MEMÓRIAS DE COMPUTADOR

13

5. CONSIDERAÇÕES FINAIS

14

REFERÊNCIAS BIBLIOGRÁFICAS

15

APÊNDICES

16

6

1 INTRODUÇÃO

Com o advento da Ciência da Computação, surgiu a necessidade de se definir o que é um computador. De acordo com o dicionário Merriam-Webster, computador é um dispositivo programável, geralmente eletrônico, capaz de armazenar, recuperar e processar dados”. O ábaco não se encaixa nesta definição, mas um humano utilizando-o, sim. Pode-se concluir, nesta situação, que o humano é o computador. Entretanto, pelo menos neste exemplo, o ábaco é parte integrante deste computador, pois é utilizado como uma espécie de memória pelo humano.

7

2 UMA BREVE HISTÓRIA DO ÁBACO

2.1 Etimologia

A palavra ábaco descende do latim abacus, que por sua vez descende do grego abakos, forma genitiva de abax (“tábua” [coberta por pó], antigo dispositivo de contagem). O termo grego tem, possivelmente, origem na palavra hebraica ābāq, que significa “pó”.

2.2 Da antiguidade à atualidade

O mais antigo ábaco descoberto é datado de ca. 300 a.C. e foi encontrado em 1846 na ilha de Salamina, na Grécia. Entretanto, é certo que o ábaco é um instrumento muito mais antigo, utilizado pelas civilizações egípcia e babilônica.

Os ábacos não foram sempre concebidos da mesma forma. Inicialmente, eram superfícies com marcações onde objetos, em geral pedras, eram movidos. Alguns, como o ábaco romano, possuíam duas seções, onde em cada uma era atribuído um valor para as unidades, com cada coluna representando uma posição de casa decimal. Outros, como o ábaco russo, possuem uma única seção e utilizam o mesmo valor para suas unidades, mas também utilizam a separação de posições decimais por haste.

Ao longo da história, o ábaco foi usado por todo o mundo: da Índia à Mesoamérica, da Rússia à Mesopotâmia.

Na China, o ábaco, chamado de suànpán, foi desenvolvido como uma moldura atravessada por hastes, nas quais correm miçangas. Esta estrutura é dividida em duas seções: a seção inferior, que conta com 5 miçangas em cada haste, e a seção superior, que conta com 2 miçangas em cada haste. As miçangas da seção inferior correspondem a uma unidade cada, enquanto as da seção superior, a cinco unidades cada.

Levado da China à Coreia, e desta ao Japão, o suànpán foi modificado para conter quatro miçangas na seção inferior e uma miçanga na parte superior. Esta variante é chamada de jupan, supan ou jusan, na Coreia, e soroban, no Japão.

Na Rússia, o ábaco é chamado de schoty e possui apenas uma seção, atravessada por hastes curvadas com dez miçangas cada, exceto por uma ou duas hastes (também curvadas) de quatro miçangas, dependendo do modelo. Este dispositivo foi amplamente utilizado na União

8

das Repúblicas Socialistas Soviéticas (U.R.S.S.) até o início da produção em massa da calculadora eletrônica de bolso em 1974, quando sua popularidade começou a declinar.

No mundo todo, o ábaco tem sido utilizado como ferramenta de ensino de matemática à crianças em idade pré-escolar. Neste caso, é geralmente utilizado um ábaco simples, sendo composto por cinco ou dez hastes, por onde correm suas miçangas. Como o objetivo é demonstrar princípios básicos de contagem, alguns educadores ensinam às crianças um sistema de utilização no qual todas as miçangas têm o mesmo valor, independentemente da haste na qual se encontram.

Nos dias de hoje, é possível encontrar ábacos fabricados em diversos materiais, como madeira, plástico, bambu ou metal.

A faixa de preço na qual se pode encontrar um ábaco atualmente varia de R$ 6,00 à R$ 180,00, dependendo do material de que é feito e do modelo.

9

3 ÁBACO SIMPLES

3.1 Definição

Em todo o mundo, instrumentos foram construídos para auxiliar na contagem e cálculos matemáticos, muitos desses que poderiam ser categorizados como ábaco. Entretanto, estes aparatos possuem características muito distintas. Portanto, para ilustrar este trabalho, será usado como padrão o “ábaco simples”. O ábaco simples tem a mesma estrutura de um ábaco escolar ocidental, porém com algumas características aqui definidas:

Uma moldura com uma única seção;

Dez hastes horizontais e dez miçangas por haste, totalizando cem miçangas;

Cada miçanga tem o valor de uma unidade multiplicada pelo valor de sua respectiva haste;

O valor das hastes cresce de cima para baixo, de dez em dez, partindo do número um;

Cada miçanga pode adotar apenas dois valores: 0 e 1. Quando a miçanga está o máximo possível à esquerda, recebe o valor zero. Quando está o máximo possível à direita, recebe o valor 1.

Teoricamente, um ábaco poderia ter uma quantidade infinita de hastes, desde que o número de miçangas por haste fosse finito. Entretanto, um ábaco com dez hastes e dez miçangas por haste é capaz de armazenar um valor igual à 11.111.111.110 (onze bilhões, cento e onze milhões, cento e onze mil, cento e dez), mais do que suficiente para o desenvolvimento deste trabalho.

A partir deste ponto, exceto se explicitado o contrário, o termo ábaco simplesserá usado em referência ao instrumento descrito nesta seção.

3.2 Instruções de uso

Considerando que o ábaco está zerado (soma de seus valores igual a zero) quando todas as miçangas estão à esquerda, é recomendável partir deste ponto. Para começar uma contagem, basta mover as miçangas para a direita.

10

3.2.1 Adição

A operação de soma pode ser efetuada seguindo-se o algoritmo apresentado no

APÊNDICE A Algoritmo de adição para ábaco simples. A operação é realizada registrando- se o valor do primeiro operando movendo as miçangas para a direita. Se dez miçangas forem movidas para a direita em uma haste, uma miçanga deve ser movida para a direita na próxima haste abaixo e as dez miçangas devem retornar para a esquerda. Esta operação pode ser feita indefinidamente, sendo limitada apenas pelo número de hastes.

3.2.2 Subtração

A subtração é realizada de forma semelhante à adição, porém no sentido contrário:

move-se as miçangas da direita para a esquerda.

Quando o resultado é um número negativo, é possível deduzí-lo através de seu complemento. Por exemplo: a subtração 23 - 64 tem resultado negativo, que não pode ser representado diretamente no ábaco. Move-se, então, uma miçanga de centena para a direita, totalizando 123. Agora, subtrai-se 64 de 123, que é igual à 59. Este resultado é o complemento do resultado da subtração 23 - 64, que é -41 (pois 100 - 59 = 41).

É possível também realizar multiplicações, divisões e operações mais complexas, como extrair raízes e calcular logaritmos com o auxílio de um ábaco.

11

4 A MEMÓRIA ÁBACO

O ábaco é um instrumento que auxilia seu utilizador a não esquecer alguns dados

cruciais para o desenvolvimento da operação a ser executada. Por isso, podemos compará-lo a

uma memória de computador, pois esta faz algo parecido: armazena temporariamente alguns dados que serão utilizados pelo processador para a execução de suas operações.

Mesmo não sendo seu objetivo guardar dados por longos períodos de tempo, o ábaco é capaz de fazê-lo, pois é uma mémoria não-volátil, ou seja, não necessita de energia elétrica (ou algo que o valha) para manter os dados. Para apagar os dados, porém, é necessário usar força: seja pela ação de mover manualmente as miçangas, seja pela força gravitacional exercida sobre elas quando se vira o ábaco, ou por outro meio (molas, eletroímãs etc.).

4.1 Capacidade de armazenamento

O valor máximo que um ábaco simples consegue armazenar é 11.111.111.110, pois:

9

(10 ∙ 10 i ) = 11.111.111.110

i = 0

Se o número a ser armazanado for negativo, o valor máximo é -88.888.888.890, pois:

100.000.000.000 - 11.111.111.110 = 88.888.888.890

Ou seja, 11.111.111.110 é o complemento a 100.000.000.000 de -88.888.888.890. Como no ábaco só é possível representar um valor negativo na forma de seu complemento e o maior valor positivo que se pode armazenar no ábaco é 1,111111111 ∙ 10 10 , o maior valor negativo que se pode representar (por meio de seu complemento) no ábaco simples é -8,8888888889 ∙ 10 10 . Sendo assim, pode-se dizer que o ábaco simples pode conter 10,1 bans (ou dits) de dados.

Ao se comparar os 34.359.738.368 bits, ou 4 GiB, de memória dos computadores atuais com meros 10,1 bans (33,532 bits) é possível notar o quão obsoleto é o ábaco comparado às novas tecnologias. Seriam necessárias 10.349.318.786 hastes, com dez miçangas cada, para se atingir a capacidade de 4 GiB (aproximadamente 10,4 gigabans).

12

Como se pode perceber, a capacidade de armazenamento de um ábaco semelhante ao ábaco simples é dada por:

Onde:

S max log b (

h - 1

(m b i )

i = 0

) + 1

S max = Capacidade máxima de armazenamento (em bans);

h = Número de hastes;

i = Índice do somatório;

m = Número de miçangas por haste;

b = Base.

4.2 Caracteres

No ábaco simples é possível armazenar até três caracteres da tabela ASCII simultaneamente. Isto se dá porque os caracteres da tabela ASCII são representados por 1 byte cada, e 1 byte é aproximadamente igual à 2,4 bans. Entretanto, à medida em que se aumenta o número de hastes, é possível armazenar maior quantidade de caracteres.

O armazenamento pode ocorrer de duas formas: por meior da divisão por tempo ou da divisão em áreas.

Na divisão por tempo, as hastes matêm seus valores, fazendo com que o número de caracteres que podem ser representados por vez se limite a apenas um. Entretanto, o número de caracteres que podem ser representados no total (ainda que um por vez) é muito maior. Tomando o ábaco simples como exemplo, este número chega a 11.111.111.111.

A divisão em áreas é a única maneira de se armazenar strings (cadeias de caracteres), e consiste em dividir o ábaco em seções de número igual de hastes. É definido, então, que cada uma das seções se comporta como um ábaco independente. Porém, em cada uma dessas seções será possível armazenar apenas um caractere de cada vez.

Vale ressaltar que, apesar de ser possível armazenar códigos ASCII no ábaco, isso não é uma prática comum, ou mesmo útil.

13

4.3 Diferenças entre o ábaco e as memórias de computador

Embora haja semelhanças entre o ábaco e as memórias de computador, há muitas diferenças, a saber:

Ábacos costumam ser dispositivos mecânicos, enquanto as memórias de computador modernas são eletrônicas;

Memórias modernas são usadas para armazenar dados em geral, enquanto os ábacos são úteis para armazenar dados numéricos;

ábaco é utilizado por computadores humanos, que executam operações aritméticas e

O

o

utilizam para armazenar alguns dados importantes para a execução de seus

algoritmos. Já as memórias modernas são utilizadas por computadores, em geral eletrônicos, para armazenar dados a serem utilizados para diversas finalidades, como a exibição de um texto, por exemplo.

14

5 CONSIDERAÇÕES FINAIS

Ao longo deste trabalho, foi possível demonstrar que o ábaco é um tipo de memória física, e que seu uso é análogo ao de um dispositivo de memória principal de um computador.

Obviamente, não se propõe que o ábaco seja usado como memória de computador (não-humano). Mesmo computadores mecânicos possuem memórias que se enquadram melhor às suas arquiteturas. Entretanto, para humanos, o ábaco é uma excelente opção de memória, sendo tão boa quanto (se não melhor do que) papel e caneta.

15

REFERÊNCIAS BIBLIOGRÁFICAS

BALAN, José Mário. A Pré-História da Computação: O Ábaco. 6 ago. 2007. Disponível em <http://www.bitsbytes.com.br/a-pre-historia-da-computacao-o-abaco/>

Acesso em: 8 out. 2011.

MANO, Rui. Representação de Dados Negativos em Complemento. Pontifícia Universidade Católica do Rio de Janeiro. Disponível em

<http://wwwusers.rdc.puc-rio.br/rmano/rd3compl.html>

Acesso em: 9 out. 2011.

MERRIAM-WEBSTER DICTIONARY. Computer. Disponível em <http://www.merriam- webster.com/dictionary/computer>

Acesso em: 8 out. 2011.

REINCKE, Torsten. Abacus - Negative numbers. Disponível em <http://www.typoscriptics.de/soroban/handbook/negative-numbers.html>

Acesso em: 9 out. 2011.

UNIVERSIDADE DE SÃO PAULO. O Ábaco. Curso de Matemática. Programa Educ@r. Disponível em <http://educar.sc.usp.br/matematica/l2t3.htm>

Acesso em: 8 out. 2011.

WIKIPÉDIA, A ENCICLOPÉDIA LIVRE. Ábaco. Disponível em

<http://pt.wikipedia.org/wiki/%C3%81baco>

Acesso em: 9 out. 2011.

16

APÊNDICE A Algoritmo de adição para ábaco simples

// Este algoritmo está escrito em um dialeto de português estruturado.

// Ele serve apenas para ilustrar a soma de dois numeros inteiros utilizando-se um

// ábaco simples.

// Mais operandos podem ser adicionados.

// Este algoritmo pressupõe que o excendente dos valores somados nas

// variáveis “hasteN” (que só aceitam valores ≤ 10) seja armazenado na memória de

// curto prazo do humano.

início

inteiro: haste1 ← 0, haste2 ← 0, haste3 ← 0, haste4 ← 0, haste5 ← 0, haste6 ← 0, haste7 ← 0, haste8 ← 0, haste9 ← 0, haste10 ← 0, operandoX, operandoY, somatório ← 0;

leia(operandoX);

leia(operandoY);

se (operandoY > operandoX) então

início

somatório operandoX;

operandoX operandoY;

operandoY somatório;

somatório 0;

fim;

fim-se;

se(operandoX ≥ 11111111110 ou operandoY ≥ 11111111110 ou (operandoX + operandoY) > 11111111110) então

início

encerrar;

fim;

senão

se(operandoX < 10) então

início

17

haste1 ← operandoX; fim;

senão

haste1 operandoX mod 10; haste2 (operandoX - haste1) div 10; se(haste2 ≥ 10) então início haste3 ← haste2 - (haste2 mod 10) div 10; haste2 ← haste2 mod 10; fim;

fim-se; se(haste3 ≥ 10) então início haste4 ← haste3 - (haste3 mod 10) div 10; haste3 haste3 mod 10; fim;

fim-se; se(haste4 ≥ 10) então início haste5 ← haste4 - (haste4 mod 10) div 10; haste4 ← haste4 mod 10; fim;

fim-se; se(haste5 ≥ 10) então início haste6 ← haste5 - (haste5 mod 10) div 10; haste5 ← haste5 mod 10; fim;

fim-se;

18

se(haste6 ≥ 10) então início haste7 ← haste6 - (haste6 mod 10) div 10; haste6 ← haste6 mod 10; fim;

fim-se; se(haste7 ≥ 10) então início haste8 ← haste7 - (haste7 mod 10) div 10; haste7 ← haste7 mod 10; fim;

fim-se; se(haste8 ≥ 10) então início haste9 ← haste8 - (haste8 mod 10) div 10; haste8 ← haste8 mod 10; fim;

fim-se;

se(haste9 ≥ 10) então início haste10 ← haste9 - (haste9 mod 10) div 10; haste9 haste9 mod 10; fim;

fim;

fim-se;

se(operandoY < 10 e operandoX = 0) então início haste1 ← operandoY;

19

fim;

senão se(operandoY ≥ 10 e operandoX = 0) haste1 ← operandoY mod 10; haste2 ← (operandoY - haste1) div 10; se(haste2 ≥ 10) então início haste3 ← haste2 - (haste2 mod 10) div 10; haste2 ← haste2 mod 10; fim;

fim-se; se(haste3 ≥ 10) então início haste4 ← haste3 - (haste3 mod 10) div 10; haste3 haste3 mod 10; fim;

fim-se; se(haste4 ≥ 10) então início haste5 ← haste4 - (haste4 mod 10) div 10; haste4 ← haste4 mod 10; fim;

fim-se; se(haste5 ≥ 10) então início haste6 ← haste5 - (haste5 mod 10) div 10; haste5 ← haste5 mod 10; fim;

fim-se;

20

se(haste6 ≥ 10) então início haste7 ← haste6 - (haste6 mod 10) div 10; haste6 ← haste6 mod 10; fim;

fim-se; se(haste7 ≥ 10) então início haste8 ← haste7 - (haste7 mod 10) div 10; haste7 ← haste7 mod 10; fim;

fim-se; se(haste8 ≥ 10) então início haste9 ← haste8 - (haste8 mod 10) div 10; haste8 ← haste8 mod 10; fim;

fim-se;

se(haste9 ≥ 10) então início haste10 ← haste9 - (haste9 mod 10) div 10; haste9 haste9 mod 10; fim; se(operandoY < 10 e operandoX = 0) então início haste1 ← operandoY; fim;

senão

21

se(operandoY ≥ 10 e operandoX > 0) haste1 ← haste1 + (operandoY mod 10);

haste2 ← (operandoY - (operandoY mod 10)) div 10; se(haste2 ≥ 10) então início haste3 ← haste2 - (haste2 mod 10) div 10; haste2 ← haste2 mod 10; fim;

fim-se; se(haste3 ≥ 10) então início haste4 ← haste3 - (haste3 mod 10) div 10; haste3 haste3 mod 10; fim;

fim-se; se(haste4 ≥ 10) então início haste5 ← haste4 - (haste4 mod 10) div 10; haste4 ← haste4 mod 10; fim;

fim-se; se(haste5 ≥ 10) então início haste6 ← haste5 - (haste5 mod 10) div 10; haste5 ← haste5 mod 10; fim;

fim-se; se(haste6 ≥ 10) então

22

início

haste7 ← haste6 - (haste6 mod 10) div 10;

haste6 ← haste6 mod 10;

fim;

fim-se;

se(haste7 ≥ 10) então

início

haste8 ← haste7 - (haste7 mod 10) div 10;

haste7 ← haste7 mod 10;

fim;

fim-se;

se(haste8 ≥ 10) então

início

haste9 ← haste8 - (haste8 mod 10) div 10;

haste8 ← haste8 mod 10;

fim;

fim-se;

se(haste9 ≥ 10) então

início

haste10 ← haste9 - (haste9 mod 10) div 10;

haste9 haste9 mod 10;

fim;

fim-se;

fim;

somatório ← haste1 + haste2 * 10 + haste3 * 100 + haste4 * 1000 + haste5 * 10000 + haste6 * 100000 + haste7 * 1000000 + haste8 * 10000000 + haste9 * 100000000 + haste10 * 1000000000;

escreva(somatório);

fim.