Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Agenda
Tipos de Dados
Tipo de dados:
Tipos simples
Tipos primitivos
Tipos ordinais
Tipos estruturados
Definio
representao
operaes
Questes de projeto
Exemplos
Avaliao
Implementao
Processamento de Dados
Processar dados consiste basicamente em:
determinar quais so os possveis dados ( ou
entradas);
descrever quais so os possveis resultados ( ou
sadas);
determinar quais so as transformaes ( ou
operaes) que devem ser efetuadas para que um
particular resultado seja uma sada para uma certa
entrada.
Sistema de Tipos
Um sistema de tipos consiste basicamente de:
um mecanismo para definio de tipos de dados
atravs de construes da linguagem de
programao, tais como constantes, variveis e
parmetros;
um conjunto de regras para determinar a
equivalncia de tipos, a compatibilidade de tipos e a
inferncia de tipos, para fins de verificao da
validade do uso de tipos em expresses, atribuies
e parmetros.
Existem linguagens de programao que no usam um sistema
de tipos, sendo conhecidas como linguagens no-tipadas.
Exemplo: LISP e Perl.
Linguagens de Programao:
hierarquia de componentes
Tipos de Dados
representao e operaes
Expresses
obteno de valores
fluxo de controle
Comandos
ambientes: abstraes
de valores e comandos
Unidades
Programas
unidade de execuo
Domnios de Valores
Evoluo
ALGOL68
tipos definidos pelo usurio
ADA (1983)
tipos definidos pelo usurio e tipificao forte
Domnios de Valores
Domnios so usados para indicar conjuntos
de valores
primitivos:
- integer - real
- char
- boolean
enumerao
LISP
Tipos de dados
simples
COBOL
Como
representar?
FORTRAN (1957)
Como
compatibilizar?
restrio
TIPOS
Problemas de representao em
computadores:
registro
estruturados
array
set
union
pointer
Tipos Primitivos em LP
Tipos primitivos
Tipos de dados no definidos em termos de
outros tipos;
Costumam ser definidos na implementao da LP
Sofrem influncia direta do hardware
Tipos primitivos
So tipos atmicos, indivisveis, no definidos
com base em outros tipos de dados;
Associados a um nome, a um domnio simples e a
um conjunto pr-definido de operaes;
Elementos de primeira ordem na maioria das LP:
usados como resultado de operaes, em e/s,
em atribuio, como parmetros, como valor de
retorno
Tipos primitivos
1. Trabalho de casa - Pesquisar no
Google/Bing/Yahoo os tipos de dados:
Integer
Floating-point
Boolean
Character
Tipos primitivos
Subdividem-se em:
Tipo Booleano
Tipo Caractere
Tipos Ordinais Definidos pelos Usurios
Tipo Enumerao
Tipo Intervalo (Subfaixa)
Tipo Inteiro
suportado diretamente pelo hardware;
Corresponde a um intervalo do conjunto dos nmeros inteiros.
So caracterizados como tipos inteiros, os dados numricos
positivos ou negativos;
Excluindo-se destes qualquer nmero fracionrio. Como
exemplo deste tipo de dado, tem-se os valores: 35, 0, -56, 1024
entre outros.
Vrios tipos inteiros numa mesma LP:
Normalmente, intervalos so definidos na implementao do
compilador
Em JAVA, o intervalo de cada tipo inteiro estabelecido na
definio da prpria LP:
Portabilidade
Tipo Inteiro
A representao do tipo inteiro na linguagem
pode diferir da representao na mquina.
Representao nas Linguagens:
Pascal
C
Object Pascal
Java
Integer
int
Integer
int
Tipo Inteiro
As linguagens pode apresentar diferentes
representaes para o tipo de dados inteiro.
Exemplo Pascal:
Byte
1 byte
Tipo Inteiro
Exemplo - Java:
Tipo Tamanho(bits)
Intervalo
-128 a 127
byte
0 a 255
short
16
int
32
long
64
Shortint
1 byte
-128 a 127
Word
2 bytes
0 a 65535
Integer
2 bytes
-32768 a 32767
Longint
4 bytes
-2147483648 a 2147483647
2 bytes
4 bytes
4 bytes
4 bytes
-32.768 a 32.767
-2.147.483.648 a 2.147.483.647
-9223372036854775808 9223372036854775807
Representao: N = f x be
f : frao, onde 0,1 |f| < 1
b : base
e : expoente, inteiro positivo ou negativo.
Vantagem:
Permite representao de nmeros reais
com um grande nmero de casas
decimais.
Desvantagem:
Perda de exatido nas operaes
aritmticas.
Representao:
So armazenados na menor clula de memria
enderevel: 1 byte;
Tipo Caractere
Armazenados como cdigos numricos;
Representaes:
EBCDIC
ASCII (American Standard Code for Information
Interchange)
1 byte, 7 bits, 128 caracteres.
Unicode:
2 bytes, 16 bits, 65536 caracteres.
Internacionalizao
Exemplo: Java
Tipo Caractere
PASCAL e MODULA 2 oferecem o tipo
char;
Em C, o tipo primitivo char classificado
como um tipo inteiro:
char d;
char *p, *q;
d = 'a' + 3;
Tipo Enumerao
Exemplo:
dom = 0; seg = 1; ter = 2; ... ; sex = 5;
Tipo Enumerao
Tipo de dados cujo conjunto de todos os
seus possveis valores so enumerados no
instante de sua definio.
PASCAL, ADA, C e C++
Tipo Enumerao
Como j vimos, define uma faixa de valores, a qual
usualmente associada a um conjunto de inteiros:
Ex (ADA): type DIAS is {Seg, Ter, Qua, Qui, Sex};
Exemplo em Pascal
sab =8;
type
natural = 0 .. maxint;
var
i : integer;
s : shortint;
n : natural;
..... n := i ;
Colees
Algumas possibilidades de implementao:
Esttica: Alocada antes da execuo e com tamanho
bem definido (Fortran 77);
Fixa e Dinmica na Pilha: Alocao feita durante a a
execuo, mas tambm com um tamanho j definido
(Pascal e C);
Dinmica na Pilha: Mesmo que o anterior, mas com o
tamanho sendo definido durante a execuo (Fortran 90);
Dinmica no Heap: Totalmente flexvel, podendo ser
alocada a qualquer momento e tendo seu tamanho
modificado ao longo da execuo (C, C++, ...)
Colees
Permite a manipulao de conjunto de valores;
A linguagem pode permitir o acesso por ndices ou
de forma iterativa, como numa lista encadeada;
Domnios compostos
Os domnios compostos resultam de aplicao de
mtodos para construir novos domnios com base em
domnios j existentes
domnio
simples
mtodo
domnio
composto
Tipos estruturados
So tipos compostos a partir de outros tipos de
dados:
homogneos: todos os componentes pertencem ao
mesmo tipo. Ex.: array
heterogneos: os componentes podem ser de tipos
de dados diferentes. Ex.: struct, union
Exemplo em Pascal
Enumerao, registro variante
{ declarao de tipo }
type Forma = (circulo, retangulo ) ;
FiguraG = record
x,y:real;
case forma_figura: Forma of
circulo:(raio:real);
retangulo:(altura,largura:real);
end;
{ instanciao }
var figura: FiguraG;
{ referncia }
begin
{...}
figura.x:=1;
figura.y:=2;
figuras.forma_figura:=circulo;
Produto cartesiano
O produto cartesiano de n domnios A1, A2,,
An, denotado por A1 x A2 x. x An, fornece
conjuntos de tuplas ordenadas (a1, a2,, an),
onde cada ak, pertence a Ak
inteiro
X
real
Exemplo:
Sendo A: inteiro e B: real
o produto cartesiano AxB fornece uma dupla (a , b),
sendo que a pertence ao domnio A e b pertence ao
domnio B
representvel pela dupla (inteiro, real)
Figure 6.8
Descritor de registro em tempo de compilao
idade
Instanciao: pessoa
referncia: pessoa.idade , pessoa.peso
peso
Mapeamento finito
b = m(a)
Questes de projeto
i. quais os tipos permitidos para ndices?
ii. quando feita a amarrao de valores aos
limites do array?
iii. quando feita a alocao do array?
iv. quantas dimenses so permitidas?
v. pode-se inicializar um array?
vi. so permitidos slices?
Figure 6.4
Figure 6.5
Slices em FORTRAN 90
Figure 6.7
Unio (discriminada)
Unions
Ada - unio discriminada
real
real
real
real
real
real
10
Unions
C e C++ - free unions (sem tags)
Not part of their records
No type checking of references
Questes
i. h verificao de tipos? Quando?
ii. qual a forma do tipo unio (em registro?)?
Conjunto potncia
Um conjunto um tipo cujas variveis podem
armazenar colees no-ordenadas de valores
distintos de algum tipo ordinal
Sendo S um domnio, o conjunto de todos os
subconjuntos dos valores de S denominado
de conjunto potncia de S
Exemplo:
Sendo S = {ch, caf}, o conjunto de todos os
subconjuntos de S seria: { { }, {ch}, {caf}, {ch,
caf} }
...
Questes
i. Quais os tipos base permitidos?
ii. Qual o nmero mximo de elementos do tipo
base?
Seqncia
A seqncia define um domnio cujos objetos
so seqncias de tamanho indeterminado
Uma seqncia consiste de ocorrncias de
elementos em ordem arbitrria, permitindo
repeties.
Exemplo : Verbo = seq < 's', 'e' , 'r' , 'i', 'a' >
Seletor de objeto : primeiro(verbo), ultimo(verbo), ...
11
Avaliao
Strings
C, C++
Not primitive
Use char arrays and a library of functions that
provide operations
Melhora redigibilidade
Tipo String
Implementao
Figure 6.2
Figure 6.3
Compile-time descriptor
for static strings
12