Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Introdução e Conceitos:Tipos de Dados, Estruturas de Dados
e Tipos Abstratos de Dados
Huei Diana LeeFabiana F.F. PeresAna Paula Martins
Algoritmos e Estruturas de Dados
2007
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Conteúdo
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Referências
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
The discipline of computing is the systematicstudy of algorithmic processes that describe andtransform information: their theory, analysis,design, efficiency, implementation, andapplication. The fundamental question underlyingall the computing is ’What can be (efficiently)automated?’
Relatório da ACM [Comer et al., 1989] (Association forComputing Machinery)
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
COMPUTAÇÃO: estudo de ALGORITMOS
I Conceito de algoritmo: originado como um meio pararepresentar procedimentos para resolver problemasmatemáticos;
I Formalizado em 1936 por meio das Máquinas deTuring1 de Alan Turing e pelo Cálculo Lambda2 deAlonzo Church e Stephen Cole Kleene.
1Modelo abstrato de um computador.2Sistema formal desenvolvido para investigar definição de funções,
aplicação de funções e recursão.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Definição
I ALGORITMO: conjunto finito de instruções bemdefinidas que, se seguidas, realizam umadeterminada tarefa;
I Informalmente... receita:I Instruções para o uso de medicamentos;I Indicações de como montar um aparelho;I Uma receita de culinária.
I Segundo Dijkstra, um algoritmo corresponde a umadescrição de um padrão de comportamento,expresso em termos de um conjunto finito de ações.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Definição
I ALGORITMO: conjunto finito de instruções bemdefinidas que, se seguidas, realizam umadeterminada tarefa;
I Informalmente... receita:I Instruções para o uso de medicamentos;I Indicações de como montar um aparelho;I Uma receita de culinária.
I Segundo Dijkstra, um algoritmo corresponde a umadescrição de um padrão de comportamento,expresso em termos de um conjunto finito de ações.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Definição
I ALGORITMO: conjunto finito de instruções bemdefinidas que, se seguidas, realizam umadeterminada tarefa;
I Informalmente... receita:I Instruções para o uso de medicamentos;I Indicações de como montar um aparelho;I Uma receita de culinária.
I Segundo Dijkstra, um algoritmo corresponde a umadescrição de um padrão de comportamento,expresso em termos de um conjunto finito de ações.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Origem...
Abu Abdullah Muhammadbin Musa al-Khwarizmi
I Algorism (regras paraaritmética usandonúmeroshindu-arábicos);
I Algorithm (século 18latinização);
I 1o algoritmo escritopara um computar:Ada Byron em 1842.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Critérios para “ser” um algoritmo:
1. Entrada: zero ou mais valores de entrada;
2. Saída: pelo menos um valor é produzido;
3. Clareza de definição: toda instrução deve ser clarae não ambígua;
4. Efetividade: toda instrução deve ser factível;
5. O algoritmo deve terminar após um no finito depassos.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Programa: não satisfaz necessariamente o critério (5).Ex: SO.
Porém...
I Algoritmo é MEIO
I Computador é manipulador de DADOS
I FIM: TRANFORMAÇÃO DE DADOS
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
DadosDados
Transformados
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
COMPUTAÇÃO: estudo de DADOS
Dados
ALGORITMOS
Modelagem
Representação
Execução
Transformação
DadosTransformados
Interpretação
RESULTADOS!!RESULTADOS!!
Diferentes representações =⇒ diferentes algoritmos.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Algumas questões a serem analisadas...
I Existem diferentes dados a serem considerados:
1. Cada um envolve um conjunto de operações;2. Cada representação alternativa do dado origina algoritmos
distintos que realizam as operações sobre o dado.
I Os algoritmos devem ser analisados para a avaliaçãoda influência da representação do dado.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
ESTRATÉGIA:
analisar o papel de diferentes estruturas dedados em problemas clássicos de Ciências daComputação através da análise dos algoritmoscorrespondentes.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
DADO:
I s.m. Elemento ou quantidade conhecida, que servede base à resolução de um problema; princípio emque assenta uma discussão; elemento ou base paraa formação de um juízo [de Holanda Ferreira, 1986];
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
DADO:
I Representação formalizada de fatos ou idéias, capazde ser comunicada ou manipulada por algumprocesso;
I Representação em uma linguagem precisa eformalizada de alguns fatos ou conceitos,freqüentemente valores numéricos ou alfabéticos, deuma forma tal que possam ser manipulados por ummétodo computacional [Knuth, 1997].
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
TIPO DE DADO:
I Especificação de como o dado representado porcadeia de bits é interpretado.
I Exemplos de tipos de dados:I Variáveis;I Constantes;I Expressões;I Funções.
I Referem-se ao conjunto de valores que estes podemassumir ou gerar.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Escalares de Dados
I Incluem os números, os valores lógicos e o conjuntode caracteres de impressão.
I Denotam-se por meio de identificadores:I Integer (simples);I Boolean (simples);I Char (simples);I Real (simples);I Enumerado e Subconjuntos.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Escalares de Dados: Integer (inteiro)
I Compreende o conjunto de todos os números inteiros(negativos, zero e positivos);
I Operações permitidas são:I Soma;I Subtração;I Multiplicação;I Divisão inteira (DIV);I Resto da divisão (MOD);I Operações de comparação: =, 6=, ≥, ≤, >, <.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Escalares de Dados: Real
I São os números racionais, isto é, númeroscompostos por uma parte inteira e uma fracionária;
I Operações permitidas são:I Soma;I Subtração;I Multiplicação;I Divisão (/);I Operações de comparação: =, 6=, ≥, ≤, >, <.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Escalares de Dados: Boolean (lógico)
I Composto por apenas dois valores: verdadeiro efalso (TRUE e FALSE)
I Operações:I OU (OR - conjunção);I E (AND - disjunção);I NÃO (NOT - negação).
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Escalares de Dados: Char (caracter)
I São os caracteres alfanuméricos, isto é, dígitosdecimais (0..9), letras (a..z, A..Z) e sinais especiais(sinais de pontuação, espaço em branco entreoutros);
I Operações de comparação: =, 6=.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Escalares de Dados: Enumerated (enumerado)
I Conjunto ordenado de identificador da seguinteforma:TYPE T = (a1, a2, ..., an)onde T é o novo identificador de tipo e os aj são osnovos identificadores de constantes.
I Exemplos:I TYPE cor = (azul, vermelho, amarelo);I TYPE dia-da-semana = (segunda, terça, quarta, quinta,
sexta, sábado, domingo);I TYPE moeda = (real, dólar, peso, franco);
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Escalares de Dados
I Definição de tipos enumerados, possibilita que osidentificadores sejam utilizados ao longo do programacomo constantes, aumentando consideravelmente a suainteligibilidade.
I Vejamos os exemplos abaixo:I VAR c: cor;I VAR d: dia-da-semana;I VAR m: moeda.
I entãoI c := vermelho;I d := segunda;I m := real;
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Escalares de Dados
I onde naturalmente, estes são mais informativos que seuscorrespondentes numéricos:
I c := 2;I d := 1;I m := 1;
I OBS: Também, o compilador poderá verificar aconsistência de operações envolvendo tais tipos. Assim,tomando-se a definição de c, c := c + 1 não teria sentido.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Escalares de Dados: Subrange (subconjunto)
I Composto por um subconjunto de um determinadotipo, limitados a um intervalo específico da forma:TYPE T = [min,..., máx]onde min e máx definem os limites do intervalo.Estes limites devem ser constantes;
I Ex:TYPE ano = [1900..2000]TYPE letra-maiúscula = ["A".."Z"]
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Escalares de Dados: Subrange (subconjunto)
I Então, definindo-se:I VAR y: ano;I VAR l: letra-maiúscula;
I as seguintes atribuições são válidas:I y := 1996;I l := "U";
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Compostos de Dados (Tipos Estruturados)
São tipos construídos a partir de tipos simples:
I ArrayI File ofI RecordI Set
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Estruturados: Array
I Estrutura matricial:I Composta de um número fixo de elementos do mesmo tipo
com índices variando de a1 até an;I A variável usada como índice é do tipo simples (não real).
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Exemplo: considere os elementos aij , onde i = [1...n] e j =[1...m]. O conjunto de m × n variáveis pode serrepresentado por um array bidimensional A, onde m é onúmero de linhas e n o número de colunas.
a11 a12 . . . a1j a1n
a21 a22 . . . a11 a2n
......
. . ....
...ai1 a12 . . . a11 ain
am1 a12 . . . a11 amn
Ex: ARRAY [a1...am, b1...bn] OF Tipo
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Estruturados: Record (registro)
I Estrutura de campos que pode ser utilizada para ligarcomponentes de diferentes tipos. Cada campo temum nome próprio chamado de identificador de campo.
I Número fixo de variáveis:TYPE pessoa1 = RECORDNome: string[30];Altura: real;Idade: integer;Sexo: tiposexo;END;
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Estruturados: Record (registro)
I Campo variante:TYPE pessoa-2 = RECORDNome : string[30];Est-civil: (solt, cas, viú, div);CASE s : tiposexo OFmasculino: (peso: real;barbudo : boolean;)feminino : ARRAY [1..3] OF integer;END;END;
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Estruturados: File (arquivo)
I Estrutura de arquivo, com registro do TIPOespecificado, onde tipo pode ser TEXT por exemplo;
I Exemplo:TYPEcadastro : FILE OF pessoa-1;Nomes : FILE OF TEXT;(arquivo de char organizado em linhas)
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipos Estruturados: Set (conjunto)
I Estrutura de conjunto de valores simples de um sótipo (escalares exceto reais);
I Exemplo:TYPEletra-ma = SET OF ’A’...’Z’;vogal = SET OF (’a’,’e’,’i’,’o’,’u’);
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Program complex;type complexnumber = record
r1: real;im: real;
end;var c1, c2, c3: complexnumber;
beginc1.r1 := 12,3; c1.im := 6,5;
c2.r1 := -2,4; c2.im := 0,0;
c3.r1 := c1.r1 + c2.r1;
writeln(‘Parte real da soma = ’, c3.r1);
c3.im := c1.im + c2.im;
writeln(‘Parte imaginária da soma = ’, c3.im);
c3.r1 := c1.r1 * c2.r1 – c1.im * c2.im;
writeln(‘Parte real do produto = ’, c3.r1);
c3.im := c1.im * c2.r1 – c1.r1 * c2.im;
writeln(‘Parte imaginária do produto = ’, c3.im);end.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Estruturas de Dados — ED
Definição:Conjunto de valores e da maneira como serelacionam.
Exemplo: estrutura de dados Inteiros
Conjunto de valores + Relações|| ||
(0, ±1, ±2, . . .) (+, -, *, /, MOD)
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Estruturas de Dados
Uma implementação de ED d é um mapeamento de dpara um conjunto de outras estruturas de dados e
O que faz × Como faz⇓ ⇓
Definição ED Implementação ED
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Estruturas de Dados e Algoritmos
I Estruturas de dados e algoritmos estão intimamenteligados:
I Não se pode estudar estruturas de dados sem consideraros algoritmos associados a elas;
I Assim como a escolha dos algoritmos em geral dependeda representação e da estrutura dos dados.
I Para resolver um problema é necessário escolheruma abstração da realidade, em geral mediante adefinição de um conjunto de dados que representa asituação real.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Escolha da representação
I A escolha da representação dos dados édeterminada, entre outras, pelas operações a seremrealizadas sobre os dados;
I Exemplo: considere a operação de adição:I Para pequenos números, uma boa representação é por
meio de barras verticais (caso em que a operação deadição é bastante simples);
I Já a representação por dígitos decimais requer regrasrelativamente complicadas, as quais devem ser.memorizadas
I Entretanto, quando consideramos a adição de grandesnúmeros é mais fácil a representação por dígitos decimais(devido ao princípio baseado no peso relativo da posiçãode cada dígito).
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Programas
I Programar é basicamente estruturar dados econstruir algoritmos. Programas são formulaçõesconcretas de algoritmos abstratos, baseados emrepresentações e estruturas específicas de dados;
I Programas representam uma classe especial dealgoritmos capazes de serem seguidos porcomputadores;
I Um computador só é capaz de seguir programas emlinguagem de máquina (seqüência de instruçõesobscuras e desconfortáveis para os humanos!).
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Programas
I É necessário construir linguagens mais adequadas,que facilitem a tarefa de programar um computador;
I Uma linguagem de programação é uma técnica denotação para programar, com a intenção de servir deveículo tanto para a expressão do raciocínioalgorítmico quanto para a execução automática deum algoritmo por um computador.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipo Abstrato de Dados - TAD
Encapsula ED + Operações
Vantagem:A alteração no módulo de implementação nãoaltera o módulo de interface.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Tipo Abstrato de Dados
I São utilizados extensivamente como base para oprojeto de algoritmos;
I A implementação do algoritmo em uma linguagem deprogramação específica exige a representação doTAD em termos dos tipos de dados e dos operadoressuportados;
I A representação do modelo matemático por trás dotipo abstrato de dados é realizada mediante umaestrutura de dados.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Comer, D. E., Gries, D., Mulder, M. C., Tucker, A., Turner, A. J.,and Young, P. R. (1989).Computing as a discipline.Commun. ACM, 32(1):9–23.
de Holanda Ferreira, A. B. (1986).Novo Dicionário da Língua Portuguesa.Nova Fronteira S.A., Rio de Janeiro, RJ.
Diversos (2005).Material Didático das Disciplinas de Estruturas de Dados I e II —Unesp e USP.
Knuth, D. E. (1997).The art of computer programming, volume 1 (3rd ed.):fundamental algorithms.Addison Wesley Longman Publishing Co., Inc., Redwood City,CA.
Introdução Conceitos Tipos de Dados Estruturas de Dados Tipo Abstrato de Dados Referências
Ziviani, N. (2004).Projeto de Algoritmos.Thomson Learning, São Paulo, SP, 2 edition.
Top Related