Em computação, um dado é apresentado como um estado de um registro e um conjunto de dados podem ser definidos como uma representação de fatos, conceitos ou instruções de maneira formalizada que devem ser adequados para a comunicação, interpretação, ou de transformação pelo homem ou dispositivo eletrônico.
O tipo de um dado é o conjunto de possibilidades que um registro pode assumir. Os tipos de dados (int, float, double etc) tem suas implementações definidas na linguagem C, ou seja, a forma como estes tipos de dados foram implementados na memória do computador são pre-definidas. Contudo, dependendo do sistema operacional que o programa seja executado existem diversas implementações destes tipos de dados.
Nos sistemas operacionais o compilador “traduz” o código escrito em uma linguagem de programação de uma forma de que ele seja entendível pela codificação (big endian, little endian etc) de um processador ou sistema operacional específico. Em muitos casos é de interesse do programador que esta codificação seja abstraída, ou seja, que ele não tenha de se preocupar com qual que é a implementação específica para um determinado tipo de dado em cada processador ou sistema operacional.
Um tipo de dado é dito abstrato quando existe uma visão do tipo de dado que é independente de sua implementação, ficando esta implementação a cargo do compilador ou sistema operacional, cabendo ao programador apenas dar atenção a sua interface.
Em um tipo abstrato de dado (TAD) são definidos:
- as possibilidades de dados (natureza do dado) que podem ser representadas, ou seja, quais dados;
- as operações que podem ser aplicadas sobre elas, ou seja, quais operações.
Não são definidos em um tipo abstrato de dado:
- como que a codificação é implementada;
- quais os algoritmos que implementam estas operações.
Esta construção também pode ser entendida como um modelo matemático (um conjunto ou uma sequência) e trazê-la para o universo da computação onde são aplicadas informações finitas sobre estes dados.
O conceito de tipo abstrato de dado é importante pois ele permite trabalhar com o formalismo matemático no estudo da representação dos dados e da aplicação de algoritmos sobre eles.
Concluindo, um tipo abstrato de dado pode ser encarado como um modelo matemático que não tem compromisso com a implementação em um computador.
Aplicação sobre Conjuntos
Um conjunto pode ser representado por um tipo abstrato de dado dentro da memória de um computador. A natureza do dado desse tipo é um conjunto de elementos de algum outro tipo específico. Sobre este conjunto, podem ser aplicadas as mais diversas operações descritas na matemática (inserir, mover, comparar, interseccionar etc). Em um conjunto, a posição dos elementos não faz nenhuma diferença (Figura 1).
Figura 1 – Conjunto de alguns números pares.
Fonte: Autor.
Aplicação sobre Sequências
Uma sequencia pode ser representada por um tipo abstrato de dado dentro da memória de um computador. Uma sequência é o arranjo dos elementos de um conjunto na memória de um computador. Em uma sequência, são dispostos os elementos de um conjunto em uma posição de um formato linear (uma reta). É possível haver sequências diferentes de um mesmo conjunto de elementos, mas dispostos em uma ordem diferente. Enquanto dois conjuntos de mesmos elementos são iguais (Tabela 01).
Tabela 01 – Sequências de um conjunto de alguns números pares.
Posição | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Seq. 1 | 6 | 4 | 2 | 8 | 10 |
Seq. 2 (ordenada) |
2 | 4 | 6 | 8 | 10 |
Fonte: Autor.
Em uma sequência é possível executar todas as operações de um conjunto. Sendo necessário atentar a posição de execução desta operação e suas consequência sobre as posições dos outros elementos (busca, inserção, exclusão, ordenação etc).
Referências
- PIVA JÚNIOR, Dilermando (et al). Estrutura de dados e técnicas de programação. 1. ed. Rio de Janeiro, RJ: Campus, 2014. 399 p. ISBN: 9788535274370.
- CORMEN, Thomas H et al. Algoritmos: teoria e prática. Rio de Janeiro: Elsevier, 926 p. ISBN: 9788535236996.
- TOSCANI, Laira Vieira; VELOSO, Paulo A. S. Complexidade de algoritmos: análise, projeto e métodos. 3. ed. Porto Alegre: Bookman, 2012. 261 p. (Série livros didáticos informática UFRGS, 13) ISBN: 9788540701380.
- ASCENCIO, Ana Fernanda Gomes. Estruturas de dados: algoritmos, análise da complexidade e implementações em Java e C/C++. São Paulo: Pearson, c2010. 432 p. ISBN: 9788576052216, 978857605816.
- BRASSARD, Gilles; BRATLEY, Paul. Fundamentals of algorithmics. Englewood Cliffs: Prentice Hall, c1996. xx, 524 p. ISBN: 0133350681.