E N D
Tipos de união Uma união é um tipo que pode armazenar diferentes valores durante a execuação do programa. Perguntas importante que temos que verificar em questão de progetos particullares de tipo de união : Verificação de tipos deve ser exigida ? As uniões devem ser imcorporadas ?
Tipos de união : • União livre: Linguagens não oferece qualquer suporte para verificação dos tipos de dados • (responsabilidade do programador). • Linguagem que oferecem construções de união livre: • Fortran,C e o C++ • Fortram a instrução equivalente é usada para especificar unões ; • C e C++, é a construção union
Tipos União Pascal • Um indicador de tipo é exigido em cada construção de união ,e o indicador é chamado de marca ou discriminate. • O discriminante é uma variavel acessivel ao usuário no registro que armazena o valor de tipo atual da variante. • Linguagem que usam Uniões discriminada :Algol, Ada ,pascal • Nessas linguagens a uniãodiscriminada é chamada registro variante ou parte variante de um registro.
União discriminada União discriminada: Linguagem inclui um identificador dos tipos de dados. A discriminada difere da livre pela implementação de um “tag” no tipo de forma a fornecer informações do mesmo
Existem dois problemas no progeto que tornam a verificação de tipos de impossiveis. • Primeiro é que o programa pode trocar a marca sem fazer a correspondente mudança na variante .
Mesmo que o sistema verifique o tipo da variante em tempo real ao examinar a marca antes de usá-la ele poderia não detetar todos os erros de tipo ; o programa pode ter mudado a marca de modo que que seu valor ,agora é incoerente com tipo da variavel atual .
O segundo problema • o programador pode simplismente omitir a marca da estrutura do registro variante ,transformando – a em uma união livre .
Exemplo. • O sistema de gerenciamento de armazenamento dinámico usa a aritmética de ponteiros para computar o endereço de áreas de memórias a serem alocados , para contornar as restrições a ela um ponteiro pode ser alocado em uma variante com um numero interio , e a forma deste pode ser manipulada quando necessario
Tipos de união Ada • A ada entende a forma pascal dos regitros variantes para torna-los mais seguros , amarca não pode ser mudada sem que a variante tambem seja mudada . • Éla é necessaria em todos os registros variantes • Ada permite que o usuário especifique variaveis de um tipo de registro variante que armazenem somente um dos valores de tipo ser estatica • Esse tipo de variavel é chamada variavel variante restringida.
Avaliação • Uniões são construções potencialmente inseguras; • E por isso é que fortram o pascal c e o c++ não são fortemente tipificadas . • -Não permite verificação de tipos • Obteron Modulo -3 ,Java não suportam uniões • -Reflexo da crescente preocupação com a segurança em linguagens de programação
Implementação de tipos de uniões • As uniões discriminadas são implementadas usando o mesmo endereço para toda variante possivel. • A declaração de uma union é similar à declaração de um registro. • A diferença é que com uma struct (registro) é alocado de uma vez espaço suficiente para todos os objetos, enquanto que com uma union só é alocado • espaço para o maior dos objetos que a compõem
Tipos de união exemplo union Valor{ intivalor; double dvalor; char cvalo;}valor;