Agenda Introdução Tipos de Dados Tipos Primitivos. Estrutura de Dados Vetores (Arrays). Registros. Listas. Pilhas. Filas. Árvores.
Estrutura de Dados - Prof. Mauricio Rocha
Introdução Computadores são máquinas que manipulam dados e informações. Algoritmo: processo sistemático para a resolução de um problema. Computa uma saída a partir de uma entrada. Dessa forma, durante o processo, o algoritmo manipula dados. Para possibilitar essa manipulação as linguagens de programação devem fornecer uma representação para esses dados. Essa representação organizada é uma estrutura de dados, com seus respectivos métodos de manipulação dos dados. A escolha da melhor estrutura depende das características do algoritmo em questão.
Estrutura de Dados - Prof. Mauricio Rocha
Tipo de Dados A especificação de um tipo de dados deve definir: Os objetos constituintes do tipo e as operações aplicáveis ao tipo de dados; Além de, possivelmente, estabelecer uma forma de representação para esses objetos. Podem variar conforme o sistema operacional e a linguagem de programação. As linguagens de programação oferecem alguns tipos básicos pré-definidos, chamados de primitivos, bem como certos mecanismos para criar outros tipos, chamados tipos construídos.
Estrutura de Dados - Prof. Mauricio Rocha
Tipo de Dados Tipos Primitivos Inteiro Os valores possíveis para um objeto do tipo inteiro são os número inteiros (negativos, zero ou positivos). Exemplos: -3, 0, 7, -326, 7084. As operações sobre tipos inteiros são: Soma (+); Subtração (-); Multiplicação (*); Divisão Inteira (/); Resto da Divisão (%). Pode-se comparar dois inteiros para testar se são iguais (==), diferentes (!=), menor ou igual (<=), maior ou igual (>=), menor (<) e maior (>).
Estrutura de Dados - Prof. Mauricio Rocha
Tipo de Dados Tipos Primitivos Real Os objetos do tipo real são os números racionais. Normalmente representados por uma parte inteira e outra parte fracionária. Exemplos: -3,5, 0,0001, 1.0, 2,37. As operações do tipo real são: Soma (+); Subtração (-); Multiplicação (*); Divisão (/). Pode-se comparar dois inteiros para testar se são iguais (==), diferentes (!=), menor ou igual (<=), maior ou igual (>=), menor (<) e maior (>).
Estrutura de Dados - Prof. Mauricio Rocha
Tipo de Dados Tipos Primitivos Lógico Este tipo consiste de exatamente dois tipos: verdadeiro e falso, sendo as constantes correspondentes V (1) e F (0). As operações sobre valores lógicos são: E - && (recebe um par de argumentos lógicos e o resultado é um novo tipo lógico. O resultado é sempre F (0) a não se que ambos os argumentos tenham valor V (1)); OU - || (recebe um par de argumentos lógicos e o resultado é um novo tipo lógico. O resultado é sempre V (1) a não se que ambos os argumentos tenham valor F (0)); NÃO - ! (recebe um valor lógico e fornece o valor lógico “contrário”).
Estrutura de Dados - Prof. Mauricio Rocha
Tipo de Dados Tipos Primitivos Caractere Os objetos deste tipo são os chamados “caracteres alfanuméricos”. Os dígitos decimais (0-9); As letras (A-Z); Alguns sinais especiais (espaço em branco, sinais de pontuação, etc). Exemplos:’0’, ‘o’, ‘A’, ‘a’, ‘ ‘, ‘*’ e outros. Permite apenas comparações através dos símbolos == e !=. Cadeias de Caracteres São tipos de dados formados por um caractere ou por uma cadeia de caracteres (letras minúsculas, letras maiúsculas, números e caracteres especiais). Estrutura de Dados - Prof. Mauricio Rocha Estruturas de Dados Busca descrever modelos de estruturas de dados e procedimentos. Exemplos: Vetor, Matriz, Estruturas, Listas, Pilhas, Filas e Árvores, etc. Os tipos de dados e operações determinam as estruturas de dados. Exemplo: Em uma pilha ou fila você possui operações push e pop para colocar e retirar elementos dela. A forma como os dados são inseridos ou removidos e que difere uma estrutura da outra.
Estrutura de Dados - Prof. Mauricio Rocha
Estruturas de Dados Vetores e Matrizes São estruturas de dados lineares e estáticas, isto é, são compostas por um número fixo (finito) de elementos de um determinado tipo de dados. O tempo de acesso aos elementos de um vetor ou matriz é muito rápido, sendo considerado constante: os elementos são acessados pelo(s) seu(s) índice(s). Porém, a remoção de elementos pode ser custosa se não for desejável que haja espaços "vazios" no meio do vetor, pois nesse caso é necessário "arrastar" de uma posição todos os elementos depois do elemento removido. Essa é uma estrutura muito recomendada para casos em que os dados armazenados não mudarão, ou pouco mudarão, através do tempo. Estrutura de Dados - Prof. Mauricio Rocha Estruturas de Dados Estruturas Às vezes tem-se a necessidade de trabalhar com dados heterogêneos, cujos componentes não são do mesmo tipo. Para construções desse tipo, temos o mecanismo de estruturas. Exemplo: struct record { int c1; float c2; };
Estrutura de Dados - Prof. Mauricio Rocha
Estruturas de Dados Listas Uma Lista é uma estrutura de dados linear, uma lista ligada é linear e dinâmica, composta por células que apontam para o próximo elemento da lista. Para "ter" uma lista ligada, basta guardar seu primeiro elemento, e seu último elemento apontando para uma célula nula. Pilhas As pilhas são estruturas LIFO (last in, first out), ou seja, os dados que foram inseridos por último na pilha serão os primeiros a serem retirados. Existem duas funções clássicas para pilhas que são a PUSH e a POP, que inserem e retiram dados da pilha, respectivamente.
Estrutura de Dados - Prof. Mauricio Rocha
Estruturas de Dados Filas As filas são estruturas FIFO (first in, first out) ou LILO (last in, last out), em que os elementos que foram inseridos no início são os primeiros a sair. Árvores Uma árvore é uma estrutura de dados em que cada elemento tem zero ou mais elementos associados, podendo definir-se uma árvore recursivamente como: (1) uma estrutura vazia (uma árvore vazia); (2) um nó (designado por raiz), que contém a informação a armazenar e um conjunto finito de árvores (as sub-árvores). Cada árvore tem apenas uma raiz. Além disso, os elementos associados a cada nó são comumente chamados de filhos desses nós. Os nós sem filhos de uma árvore são chamados de folhas.
Estrutura de Dados - Prof. Mauricio Rocha
Elementos Fundamentais As Estruturas de dados fazem uso de: Tipos abstratos de dados São usados para representar os elementos das estruturas de dados que podem ser compostos por atributos de tipos primitivos ou por atributos de outros tipos abstratos de dados. Alocação dinâmica de memória Usada para permitir a criação de novos elementos da estrutura de dados em tempo de execução. Ponteiros São usados para referenciar os elementos da estrutura de dados e permitir o encadeamento dos elementos, a ligação entre os elementos que compõem uma estrutura de dados.
Estrutura de Dados - Prof. Mauricio Rocha
Exercício Escrever um programa que lê do teclado uma sequência de números inteiros positivos (testar se o número lido é positivo) e calcular um conjunto de estatísticas acerca da mesma, tais como: o máximo, o mínimo e média da sequência: O programa deve escrever um menu de operações (Máximo, Mínimo e Média) após a leitura dos números. A leitura da sequência termina quando aparecer o número zero como indicador de paragem ou quando tiverem sido lidos 50 números.