PLP Topico3 TiposCompostos
747 palavras
3 páginas
Paradigmas de Linguagens de Programação-Valores e Tipos Compostos-
1
Tópicos
Tipos Compostos
Operações
Produto Cartesiano
União Disjunta
Mapeamento
Tipos Recursivos
2
Tipos Compostos
Um valor composto é formado por valores mais simples Um tipo composto é aquele cujos valores são compostos Conceitos matemáticos
2.1. Produto Cartesiano (structures, records)
2.2. União Disjunta (records discriminados, objetos)
2.3. Mapeamentos (arrays e funções)
3
Produto Cartesiano
Em um produto Cartesiano, valores de diversos tipos são agrupados em valores
Considere S x T o conjunto de todos os pares
(x, y) tal que x é escolhido do conjunto de S e y de T:
S x T = { (x, y) | x S; y T }
Cardinalidade
#(S x T) = #S * #T
4
Produto Cartesiano
S
T
•a•b
S
•i •j
•x •y
X
T
X •u •v •w
SXT
•(a,x
)•
(b,x
)
•(a,y
)•
(b,y
)
SX
T
•(i,u) •(i,v) •(i,w)
•(j,u) •(j,v) •(j,w)
5
Produto Cartesiano
Records (Pascal), structures (C) podem ser entendidos em termos de produto cartesiano
Por exemplo representar a data em Pascal
Type DataP = record m : MesesP d : DiasP end; Utilização do Tipo
dia: DataP;
…
dia.d := 28; dia.m := fev;
6
Produto Cartesiano
Exemplo em C para representar Data: enum DiasC {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27,
28, 29, 30, 31}; struct DataC {
MesesC m
DiasC d
};
7
Produto Cartesiano
Conjunto de Valores:
DataC = MesesC x DiasC = {jan, fev, …, dez} x {1, …,
31}
(jan, 1)
(jan, 2)
… (jan, 30) (jan, 31)
(fev, 1)
(fev, 2)
… (fev, 30) (fev,31)
…
…
…
…
…
(dez, 1) (dez, 2) … (dez, 30) (dez, 31)
Cardinalidade
#DataC = #MesesC * #DiasC = 12 * 31 = 372
8
União Disjunta
A união disjunta é denotada por S + T
Reúne todos os elementos dos dois conjuntos originais
Definição
S + T = { pri x | x S } { seg y | y T }
9
União Disjunta
Cardinalidade
# (S + T) = #S + #T
No exemplo acima a cardinalidade é igual a:
#(S + T) = #S + #T = 3 + 3 = 6
10
União