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

Relacionados