22 abril 2011

Tipos de dados - Programação #9

O computador foi inicialmente concebido para manipular dados numéricos, efectuando cálculos complicados sobre esses dados.  No entanto, a generalização da aplicação do computador e a evolução da ciência, tornou possível a manipulação de outro tipo de dados, como caracteres, bytes e estruturas complexas, tornando possível hoje em dia, representar todo o tipo de informação.

Dado que para o computador qualquer tipo de dados é meramente uma combinação de 0s e 1s,  e que a manipulação dos dados é executada de forma diferente conforme o seu tipo, é necessário que se conheçam os seus diversos tipos e identificar correctamente todos os dados, quando construímos um programa.

Conceito de variável e constante

Duas definições importantes em programação são a de variável e constante.

As variáveis são elementos que podem assumir vários valores, tal como as entendemos em matemática.

As constantes são elementos cujos valores são fixos, não podendo ser alterados.

Consideremos por exemplo a seguinte declaração:

j = 5 + 12

Os símbolos "5" e "12" são constantes pois têm sempre o mesmo valor em qualquer zona do programa.
O símbolo "j" é o nome de uma variável, que está preparada para assumir vários valores, no caso da declaração apresentada assumirá o valor 17, mas mais tarde poderá assumir um outro valor em consequência de uma nova declaração.  A variável assume a sua variabilidade pela representação de uma localização de memória, ou endereço, na memória do computador.  Assim, quando o programa se refere a essa variável, vai ler ou guardas um valor nessa localização de memória.

Variável
num
j
i
Endereço
2472
2476
2480
           Conteúdo


Suponha que a variável j está localizada no endereço de memória 2476.  Então a declaração de atribuição anterior significa, soma a constante 5 com a constante 10 e depois armazena o resultado na posição de memória 2476.

Suponha agora a declaração    j = i - 7,  Esta significa subtrai do valor de i (valor contido no endereço de memória 2480 que é 51) o valor constante 7, e coloca o resultado no endereço de memória correspondente a j, ou seja o valor do endereço 2476 passará a conter o valor 44.


Nomes das variáveis

As variáveis e mesmo as constantes e outros elementos são identificados por nomes.
As regras para composição de nomes são muito simples:
  • devem ser significativos, ou seja, através de da sua leitura devemos ter uma ideia do contexto da sua utilização;
  • os nomes podem conter letras, algarismos e o caracteres underscore _ mas não podem começar por algarismos;
  • os nomes não podem ser palavras  reservadas das linguagens de programação.
  • podemos criar as nossas próprias regras de definição de nomes, incluindo nomenclaturas com significado próprio.

Analisemos os seguintes exemplos:

Considere que assumimos como convenção pessoal (ainda que importada da utilização da linguagem Fortran), de que todas as variáveis que assumam valores inteiros começam por i, j , k, m e n,  que as variáveis que comecem por x, y, z,  são reais,. então
Nomes legais

j
j5
num
znumero
ytemp
Cod_Postal
_nome
é uma variável inteira
é uma variável inteira
é uma variável inteira
é uma variável real
é uma variável real



Nomes ilegais

5j
.nome

int
Cod&Postal
os nomes não podem começar por algarismos
os nomes não podem conter o simbolo . por ser reservado pelas linguagens
int é uma palavra reservada pelas linguagens
os nomes não podem conter nenhum dos caracteres especiais além do underscore



Tipos de variáveis

A capacidade de dividir os dados em diferentes tipos é uma das mais importantes características das linguagens modernas, pois permite-nos trabalhar com objectos relativamente complexos, mais próximos da realidade mundana,  em vez de nos preocupar com a sua manipulação ao nível da sua representação na máquina.  Podemos manipular caracteres, números inteiros, reais em virgula flutuante, etc., notações que nos são perfeitamente familiares.  Ao nível do bit e o byte,  a máquina não entenderá estes conceitos.  Na verdade, tudo se passa ao nível do compilador que se encarregará de garantir que o computador manipulará os dados na forma de bits e bytes de uma forma consistente com o seu tipo.  Assim, os tipos de dados são na realidade uma forma de interpretação aplicada a um conjunto de bytes.

As linguagens de programação oferecem um pequeno conjunto de tipos de dados, com mínimas variações de linguagem para linguagem, mas que são de extrema utilidade.  Trataremos por agora apenas dos chamados tipos aritméticos, deixando para mais tarde a análise de outros tipos.

Por outro lado,

Os dados de tipo aritmético básicos são:
  • inteiros - Ex..  12;  -1534
  • reais em virgula flutuante - Ex. 3,147;  -5,1573
Estes tipos básicos são depois subdivididos noutros tipos, variando de linguagem para linguagem.  No caso da linguagem C existem oito tipos de variáveis inteiras, e as constantes inteiras podem se representadas nas notações, decimal., octal e hexadecimal.  Existem ainda dois tipos de variáveis reais.

Os números inteiros são o tipo básico, sendo tratado de forma que não pode representar um número real, sendo no entanto representado por tamanhos diferentes em diferentes máquinas.  Alguns compiladores atribuem a um inteiro quatro bytes, enquanto que outros atribuem dois bytes.  Por outro lado, o tamanho do byte não é constante, apesar da maioria das máquinas operarem com 8 bits, existem excepções a esta regra,  Tudo se passa portanto a nível da compatibilidade do compilador com a máquina,   No caso da linguagem C standard (ANSI C),  é assumido como regra que o byte tem pelo menos 8 bits e que um inteiro tem pelo menos 16 bits, e deve representar o tamanho "natural" do computador.  Por natural é entendido o número de bits que a CPU normalmente manipula numa instrução simples.  Nestas condições, um inteiro natural muna CPU de 8 bits será constituído por 16 bits, numa CPU de 32 bits será representado por 32 bits, etc.  Nesta situação, podemos concluir que quanto maior for a capacidade da CPU maior será também o maior número manipulável, e a precisão das operações executadas.
Relativamente aos números reais passa-se algo idêntico, dependendo do compilador e da máquina em causa.

Assumiremos por agora os aspectos gerais e que se encontram representados na tabela seguinte.

Nome

caracteres
inteiro
inteiro longo
caracteres sem sinal
inteiro sem sinal
inteiro longo sem sinal
real virgula flutuante
real duplo
real duplo longo

Tipo

char
int
long
unsigned char
unsigned int
unsigned long
float
double
long double
Armazenamento

1 byte
2 bytes
4 bytes
1 byte
2 bytes
4 bytes
4 bytes
8 bytes
10 byte
Intervalo de valores

-128 a 128
-32.768 a 32.767
-2.147.482.648 a 2.147.483.647
0 a 255
0 a 65.535
0 a 4.294.967.295
3.4E38 a 3.4E+38
1.7E-308 a 1.7E+308
3.4E-4953 a 1.1E+4932

A maioria das operações executadas pelo computador requerem que os operadores envolvidos tenham o mesmo tipo.   Se os operandos não forem do mesmo tipo o compilador encarregar-se-á de converter um deles para que os tipos coincidam Para que este decida que operando deve ser convertido, o compilador socorre-se do que é chamada a hierarquia dos tipos de variáveis e converte o de menor hierarquia para o de maior hierarquia, de acordo com o seguinte modelo.


Assim, no exemplo 1 + 2.5, dado que 2.5 é real, o valor 1 será convertido para 1.0 e só depois será efectuada a operação.

0 comentários:

Postar um comentário

Cadastre-se

Receba atualizações por email .

Copyright © 2011 PortalTecch.net, Todos os direitos reservados.