O modo como percepcionamos aquilo que nos rodeia e as alternativas que formulamos para aprender mais conhecimentos são extremamente influenciados pela linguagem, de igual modo, num contexto especifico de um problema temos que analisar a linguagem sobre o qual o mesmo está inserido de modo a adequarmos a resolução do problema mediante o paradigma existente e respeitarmos as convenções.
Em computação temos pois que encontrar a linguagem que mais se adequa ao nosso problema e às nossas necessidade, uma linguagem de programação é uma notação para escrever problemas. Todavia, se procuramos uma resposta fiável para o nosso problema, não temos apenas que escolher por esta ou aquela linguagem, temos também que analisar os dados e estrutura-los da forma mais eficiente possível, com vista alcançarmos o algoritmo ideal. Estruturar dados não é mais do que armazenar e organizar dados para serem usados de uma forma eficiente, manipulados por algoritmos. As estruturas de dados definem a organização, métodos de acesso e opções de processamento para a informação ser manipulada pelo programa.
Em computação temos pois que encontrar a linguagem que mais se adequa ao nosso problema e às nossas necessidade, uma linguagem de programação é uma notação para escrever problemas. Todavia, se procuramos uma resposta fiável para o nosso problema, não temos apenas que escolher por esta ou aquela linguagem, temos também que analisar os dados e estrutura-los da forma mais eficiente possível, com vista alcançarmos o algoritmo ideal. Estruturar dados não é mais do que armazenar e organizar dados para serem usados de uma forma eficiente, manipulados por algoritmos. As estruturas de dados definem a organização, métodos de acesso e opções de processamento para a informação ser manipulada pelo programa.
São várias as estruturas de dados, entre as mais clássicas destaco:
[ vectores (array) ] estruturas de dados estáticas de dimensão fixa e finita que armazenam elementos do mesmo tipo;
[ listas (list) ] sequencia de elementos do mesmo tipo onde a ordem de inserção é relevante;
[ pilhas (stack) ] estrutura de informação linear, a informação é armazenada de modo a aceder ao ultimo elemento inserido (LIFO - last in frist out);
[ filas (queue) ] semelhantes às pilhas contudo a informação é armazenada de forma a aceder somente ao primeiro elemento inserido (FIFO - frist in frist out);
[ conjuntos (set) ] colecção sem repetições de objectos de um determinado universo/tipo. estes objectos são designados por membros ou elementos do conjunto;
[ árvores (tree) ] estruturas de dados não lineares. A arvore pode ser vazia (estrutura vazia) ou ter um nó principal (raiz/root) e um numero finito de subarvores;
[ árvores binárias (binary tree) ] são tipos de árvores com grau 2, ou seja, contém apenas duas sub-árvores; a sub-arvore da esquerda e a sub-arvore da direita;
[ grafos ] Os grafos são uma forma de modelar os problemas. Um grafo G=(V,E) consiste em cum conjunto V de vértices e um conjunto E de pares de vértices ou arestas. Grafos podem ser utilizados para modelar uma variedade de estruturas e relações;
[ tabelas ] são estruturas de dados que armazenam um conjunto finito de registos(records). Cada registo é constituído por um par de valores, a chave(identifica univocamente o elemento) um elemento (de um dado tipo que contém a informação que se quer guardar.
“The art of programming is the art of organizing complexity,of mastering multitude and avoiding its bastard chaos” - E. Dijkstra