Armazenamento
de Dados em MemóriaNum computador, em geral, existem dois tipos de memória.
Um, a memória RAM (random access memory), constituídas pelos circuitos
lógicos e portanto seu acesso é extremamente rápido, mas para manter o
conteúdo da memória, precisa-se ser alimentado pela fonte sempre. Também
por ser um circuíto lógico para bits, o custo por bit fica mais caro. Outro,
a memória permanente, que utiliza a magnetização da material (disco rígido,
fita magnética, disquetes) ou disco-laser que utiliza-se o sistema ótico,
tem a vantagem de ser permanente, mas a velocidade de acesso fica limitada
devido a sistema mecânica.
Lembre-se que os dados num computador é armazenado numa memória (identificado pela sua localização na memória) na forma binária. A unidade de armazenar os dados numa memória depende de tipo de dados. Numa máquina de 32 bits (= 4 bytes, contem 232 informações binárias). um número de forma flutuante é decomposto em tres partes, seu sinal (1bit), parte digitos significativos e a parte exponencial. Normalmente o número máximo flutuante que pode ser armazenado é até 0.3351039. A parte exponencial usa mais 7 bits, portanto, a máxima informação que pode ser utilizada para os digitos siginificativos é 25 bits, i.e., aproximadamente 8 casas decimais. Por exemplo, se calculamos o valor de 1/3 em precisão simples (32 bits), o número registrado seria
e não exatamente 1/3. Ou seja, num cálculo númerio de precisão simples, cada número sempre contém intrinsecamente o erro relativo de 10-8. Assim, se calculamos
o resultado não é nulo, dando um número da ordem de 10-8. A primeira vista, o erro de 10-8 pode parecer insignificativo. Mas dependendo da situação, pode se tornar crucial. Por exemplo, considere um caso em que queremos calcular a derivada de uma função, digamos, f(x)=1/x pela formula, df/dx=lim0 [f(x+)-f(x)]/ no ponto x=1. Se a pecisão da máquina é limitada por 10-8, é óbvio que não podemos escolher o valor do menor que esta limite. Este exemplo mostra que a precisão de um cálculo numerico de derivada fica sempre limitada. Um outro exemplo: Suponha que as duas quantidades x e y são calculadas numa sucessão de processos, e precisa fazer uma outra operação somente quando x=y. Nesta situação, precisamos comparar para cada etapa do processo se x=y ou não. Dentro de um computador, o julgamento deste tipo é feito pela comparação de todos os conteúdos de bits das duas variáveis e se todos os bits coincidiram, teremos a resposta de x=y. Mas quando as duas quantidades foram calculadas independentemente, devido ao erro de truncamento, dificilmente coincidem completamente mesmo que x=y matematicamente.
Podemos utlizar 2 unidades de memórias para armazenar
os dados para aumentar a precisão. Isto é chamado a precisão dúpla. Em
precisão dúpla, um número flututante é armazenado em 64 bits, entre quais,
cerca de 10 bits são utilizados para parte exponencial. A parte de digitos
siginificativos pode ter 53 bits, que equivale a 15 casas decimais. Neste
caso, a conta acima daria o resultado da ordem de 10-15. Assim,
podemos melhorar a situação quando a precisão de truncamento é crucial.
Entretanto, sempre deve lembrar que existe limite imposto pelo erro de
truncamento.
Além de números flutuantes, existe a outra forma de armazenar
os números, os números inteiros. Os inteiros em geral tem a metade de bits
dos flutuantes. Nesta forma de armazenamento, um número não é decomposto
em parte flutuante. Assim, em precisão simples, o número máximo inteiro
é 216-1=32767. Em precisão dúpla, o número máximo inteiro é
232-1. Quando um número flutuante é rearmazenado na forma inteira,
a parte decimal fica truncada. Por exemplo, se as variável a,
b e c são declaradas como inteiros, teremos seguintes resultados.
a=3, b=2, c=a/b c=1,
a=-5, b=2, c=a/b c=-2
Os números inteiros são utilizados em geral como índices,
permitindo a comparação exata tipo a=b.
Uma outra forma de variável num codigo FORTRAN é tipo
CHARACTER. Um conjunto de characteres pode ser armazenado. Estes variáveis
são usados para especificar, por exemplo, os nomes de arquivos dentro de
um programa, ou algum enfeites de saída de resultados.
Como atribuir a forma de dados para cada variável será
explicado dentro de alguns exemplos abaixo.
Prof. Takeshi Kodama
Ultima Alteração: 04 de novembro de 1996