CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
3.1 - IDENTIFICADORES
Os objetos que usamos no nosso algoritmo são uma representação simbólica de um
valor de dado. Assim, quando executamos a seguinte instrução:
atribua o valor 2 ao objeto valor;
O valor 2 fica associado ao objeto valor. Assim, cada vez que mencionamos o nome do
objeto valor, nós estaremos referenciando, implicitamente, ao valor que foi associado a ele.
Isto torna o algoritmo mais prático, pois além de ser fácil lembrarmos de um nome do que de
um valor de dado, o nome de um objeto permanece inalterada durante toda a execução
de um algoritmo, ao passo que o valor a ele associado pode mudar com o dinamismo do
algoritmo, como por exemplo:
objetos x, y;
início das ações:
atribua 3 ao objeto x;
calcule 2 x e atribua o resultado ao objeto y;
calcule 4 y e atribua o resultado ao objeto x;
fim das ações.
Note que os valores de x e y variam no decorrer da execução do algoritmo. O objeto x
começa com o valor 3 e termina com o valor 24, e o y começa com um valor não definido e
termina com 6. Note que não nos preocupa a variação de valores dos objetos, pois eles
continuam a ter o mesmo nome.
Por este motivo, dizemos que os objetos de um algoritmo identificam valores a eles
associados, e por isto, estes objetos são chamados de identificadores.
Como os nossos algoritmos têm como finalidade a comunicação do homem com a
máquina (computador), podemos dizer, de uma forma grosseira, que um identificador do
algoritmo será associado com uma célula de memória do computador, a qual armazenará o
valor associado ao identificador. E toda vez que mencionamos o nome do identificador no
algoritmo, o computador irá "buscar", na célula de memória associada com o identificador,
o valor armazenado e realizará a operação descrita no algoritmo.
Existe uma certa semelhança entre identificadores e variáveis matemáticas, logo é
comum, em literaturas do gênero computacional encontrar, também, esta denominação para
os identificadores. Mas queremos deixar claro que esta analogia nem sempre é possível, pois,
considere a seguinte expressão matemática:
x = x + 1.
Esta expressão matemática não tem solução, pois qual é o número que é igual a ele mesmo
somado em uma unidade.
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
39
Já computacionalmente está expressão é válida, pois o significado semântico é
diferente, o qual é:
Calcule a expressão x + 1 e atribua o resultado a x;
Para o computador, isto significa: “recupere o valor que está armazenado na célula x
some uma unidade e armazene o resultado na própria célula x”.
É importante deixar claro que um identificador (objeto) só pode armazenar um
único valor por vez. E sempre armazenará o último valor que lhe for fornecido. Assim, se
fizermos o identificador x receber o valor 100, e logo mais adiante atribuirmos ao mesmo
identificador x o valor 50, a partir deste ponto o valor associado a x será 50.
Você deverá escolher os nomes dos identificadores que serão utilizados, mas devendo
respeitar as seguintes regras na escolha dos nomes:
1) Use somente letras e números na escolha dos nomes;
2) O primeiro caractere do nome deve ser sempre uma letra;
3) Não é permitido o uso de qualquer caractere especial (;, ’, -, +, é, á, ., ?, espaço em
branco) no nome de identificador.
Exemplos de identificadores válidos:
ImpostoDeRenda, F1, soma, produto, desconto, SalarioHora
Exemplos de identificadores não válidos:
1 f não começa com uma letra
Imposto-renda tem caractere especial "-" no nome do identificador
salário hora espaço em branco no nome do identificador
Obs.: Procure sempre adotar nomes de identificadores curtos mas que se relacionem com as
funções que eles irão representar no decorrer do algoritmo, será muito mais fácil de lembrar
dos identificadores e para que eles servem. Um exemplo, para representar o número de
matrícula de um funcionário de uma empresa, você poderia escolher qualquer identificador,
como x1, xurt23, ..., mas seria muito mais esclarecedor e de bom gosto adotar um nome de
identificador NumeroFuncionário, ou simplesmente NumFunc.
No conceito de identificador de dado estão associadas quatro características
(figura 3.1): o seu nome, o seu tipo, endereço da célula de memória do computador
associado ao identificador e o valor armazenado na célula de memória.
Nome
nome do identificador
conteúdo (valor armazenado na célula de memória )
célula de memória
Figura 3.1 - Atributos de um identificador.
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
40
O tipo do identificador especifica uma classe de valores que podem ser armazenados
na célula de memória associada ao identificador, além de definir quais são as operações
legais que poderão ser usadas para criar, acessar e modificar o conteúdo da célula de
memória, isto é, supondo que na célula esteja armazenado um número, poderemos fazer uma
operação de subtração com um outro número, mas se for uma letra, a operação de subtração
não pode ser feita.
3.2 - IDENTIFICADOR E O TIPO DO DADO ARMAZENADO
Um identificador, como já vimos, armazena um único valor de dado por vez. Mas,
será que ele pode armazenar qualquer dado?
Os dados podem ter estruturas físicas diferentes na representação do seu valor.
Vejamos, como exemplo. Os valores:
1
1,00
0,1 x 10
+1
representam a mesma grandeza, mas possuem estruturas de organização diferentes.
Observe que estamos tratando somente com dados numéricos. Caso, resolvamos
envolver outros tipos de dados (como dados caracteres, dados lógicos, dados cadeias de
caracteres, entre outros) teríamos estruturas completamente diferentes.
As células de memória do computador precisam ser compatível com o tipo da
estrutura do dado que ela irá armazenar, e como vimos estas estruturas variam com o
tipo dado.
Isto quer dizer que, precisamos informar ao computador quais serão as células de
memória que serão utilizadas e qual o tipo de dado que será armazenado na mesma.
A informação do tipo do dado armazenado na célula de memória tem outra função,
que é a de definir quais serão as operações válidas que poderão ser aplicadas sobre o dado
armazenado. Por exemplo:
Se o dado for numérico podemos fazer operações aritméticas (adição, subtração,
multiplicação, divisão e exponenciação). Caso, o dado seja uma cadeia de caracteres,
poderemos efetuar uma operação de concatenação (juntar dois textos, armazenados em duas
células de memória distintas em uma única célula de memória).
Os tipos de dados são classificados em dois grandes grupos: os tipos simples (ou
primitivos) e os tipos estruturados (capítulo 8).
Os dados do tipo simples (figura 3.2) se subdividem em conjuntos específicos, como
ilustra a árvore a seguir.
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
41
Tipos de dados simples
numérico
inteiro
caractere
lógico
real
Figura 3.2 - Representação dos tipos de dados simples.
3.2.1 - Tipo de dados numéricos
A princípio, podemos admitir a existência de dois grandes conjuntos de natureza
numérica: o conjunto dos números reais e o conjunto dos números inteiros. Com exceção do
conjunto dos números complexos, os outros (naturais, fracionários) são subconjunto dos
conjuntos dos inteiros e reais, respectivamente. Os números complexos não serão abrangidos
no contexto deste trabalho.
3.2.1.1 - Inteiros
Os números inteiros podem ser positivos, negativos ou nulos e não possuem um
componente decimal. Na notação matemática em forma de conjunto, poderíamos ter a
seguinte representação:
Z = {..., -2, -1, 0, 1, 2,...}.
Matematicamente, os números inteiros são compatíveis com os números reais, pois o
conjunto dos reais contém o conjunto dos inteiros. Mas, a recíproca não é verdadeira, pois,
nem todo número real é um inteiro, mas todo inteiro é um real.
Adotaremos aqui, esta definição matemática. Todo identificador definido como real
poderá receber um valor inteiro, mas os identificadores inteiros nunca poderão receber um
valor real, mesmo que a parte fracionária do mesmo seja nula.
Identificadores que forem deste tipo serão declarados como sendo do tipo inteiro.
3.2.1.2 - Reais
Os números podem ser positivos, negativos ou nulos, e possuem, sempre, um
componente decimal.
Exemplificando alguns números reais:
2,34
-3,14
0,0
34,0
-214,123
224x10+1
1000x10-4
Computacionalmente, existem muitas diferenças na forma de armazenamento de
números inteiros e reais. Geralmente, valores inteiros exigem um espaço de memória menor
do que os reais.
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
42
Identificadores que forem deste tipo serão declarados como sendo do tipo real.
3.2.2 - Tipos de dados não numéricos
Os tipos simples não numéricos representam os conjuntos dos caracteres e dos
valores lógicos (ou booleanos).
3.2.2.1 - Caractere
O conjunto dos caracteres são formados por letras (de A a Z), dígitos (de 0 a 9) e
caracteres especiais (~, ., ?, >, <, ...).
As diferenças entre dados numéricos e caracteres estão na forma de armazenamento e
nas operações legais que podem manipular dados. Podemos fazer operações aritméticas com
os dados numéricos, mas estas operações não são permitidas para os caracteres.
Para diferenciar um dado numérico e um identificador de um caractere, utilizaremos
sempre o dado caractere entre apóstrofes (’ ’). Assim poderíamos ter:
8 é numérico
'8' é caractere
A é um identificador
'A' é um caractere
Identificadores que forem deste tipo serão declarados como sendo do tipo caractere.
Identificadores que forem declaradas como sendo do tipo caractere poderão
armazenar um único caractere. Para armazenar uma seqüência de caracteres, criaremos a
estrutura cadeia de caracteres, a qual, consideraremos aqui como sendo um tipo de dado
estruturado, e por ser mais complexa a estudaremos mais adiante. Mas para diferenciar a duas
estruturas, eis um exemplo:
‘Z’ é um caractere
‘ANA’ é uma cadeia de caracteres
3.2.2.2 - Lógicos
O conjunto dos valores lógicos é formado, unicamente por duas possibilidades (falso
e verdadeiro). Isto que dizer que, qualquer identificador que for declarado como sendo deste
tipo, só poderá armazenar um destes valores. Os dados do tipo lógico são muito utilizados
para controle do fluxo lógico do algoritmo. Os únicos operadores que podem manipular
dados deste tipo são os operadores relacionais (<>, <, =, ...) e os operadores lógicos (E,
OU, NÃO), os quais serão inseridos posteriormente.
Identificadores que forem deste tipo serão declarados como sendo do tipo booleano
ou lógico.
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
43
3.3 - DECLARAÇÃO DO TIPO DO IDENTIFICADOR
A declaração do tipo do identificador deve ser feita na seção de declaração dos objetos
que serão utilizadas no algoritmo.
Esta declaração deve ser feita com a seguinte sintaxe:
objetos identificador : tipo;
Caso haja mais de um identificador com o mesmo tipo no mesmo algoritmo,
poderemos declará-los da seguinte forma:
objetos identificador1, identificador2, identificador3: tipo;
Supondo que em um algoritmo, tenhamos os identificadores i1, i2 e i3 do tipo inteiro
e c1, c2 do tipo caractere e b do tipo booleano e r do tipo real, teríamos a seguinte
declaração dos tipos dos objetos:
objetos i1, i2, i3
cl, c2
b
r
: inteiro;
: caractere;
: booleano;
: real;
Uma das dificuldades de definição de tipo de um identificador ocorre quando temos
que declará-lo como sendo de um tipo numérico, pois o mesmo poderá ser do tipo real ou
inteiro.
A priori, não existe um receituário para a escolha do tipo do identificador. O
próprio problema, ou o caminho escolhido para a sua solução é que permitirá a escolha do
tipo do identificador. Mas enxergaremos isto somente se, estivermos devidamente afinados
com a solução do problema, isto é, devemos conhecer profundamente a solução do problema,
suas limitações e restrições.
Exemplo de números inteiros:
número de pessoas convidadas para uma festa;
um número par ou ímpar;
um número primo;
idade de uma pessoa (geralmente é tratada como inteiro);
quantidade de mercadorias em estoque.
Exemplos de números reais:
o peso de uma pessoa (em Kg);
percentual;
nota de uma avaliação;
média aritmética;
preço de um produto.
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
44
Existem situações em que podemos ficar em dúvida quanto ao tipo de resultado
esperado em uma expressão, como por exemplo:
a raiz quadrada de um número inteiro
a divisão entre dois números inteiros
Se quisermos calcular a raiz quadrada de 4, matematicamente, podemos admitir que o
resultado é do tipo inteiro, mas se calcularmos a raiz quadrada de 5, o resultado obtido será
do tipo real. Logo, qual deverá ser a tipo do identificador que receberá o resultado desta
expressão?
Quando houver alguma possibilidade do resultado de uma expressão ser do tipo
real, o identificador que receberá o resultado da mesma deverá ser sempre do tipo real,
pois os inteiros estão contidos nos reais, assim, se atribuirmos um valor inteiro a um
identificador real nenhum erro ocorrerá, mas a recíproca não é verdadeira.
Exemplo: Dados dois números inteiros, diferentes de zero, faça um algoritmo que calcule a
razão entre os mesmos.
ae (n1, n2);
as (razão);
objetos n1, n2 : inteiro;
razão : real;
inicio das ações:
conheça dois valores inteiros diferentes de zero e atribua-os a n1 e a
n2, respectivamente;
calcule a expressão n1/n2 e atribua o resultado ao identificador razão;
informe o valor armazenado no identificador razão;
fim das ações.
3.4 - VALORES DOS DADOS
Os dados são os valores que serão armazenados em células de memória e que poderão
ser acessados por referência aos identificadores, respectivos, associados com estas células.
Assim, se tivermos os identificadores i, r, c e b como sendo inteiro, real, caractere e
booleano, respectivamente, e atribuirmos a estes identificadores os valores de dados 100;
3,14, 'Z' e falso, teríamos a seguinte configuração:
i
r
c
b
100
3,14
‘Z’
falso
Se executarmos a ação informe o valor de r o resultado obtido será 3,14, pois este
valor está associado com o identificador r. Assim, qualquer referência que fizermos a um
identificador, estaremos, implicitamente, nos referenciando ao valor do dado associado ao
mesmo.
Download

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1