Introdução e Conceitos: Tipos de Dados, Estruturas - Unioeste

Propaganda
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Introdução e Conceitos:
Tipos de Dados, Estruturas de Dados
e Tipos Abstratos de Dados
Huei Diana Lee
Fabiana F.F. Peres
Ana Paula Martins
Algoritmos e Estruturas de Dados
2007
Referências
Introdução
Conceitos
Tipos de Dados
Conteúdo
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Referências
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 systematic
study of algorithmic processes that describe and
transform information: their theory, analysis,
design, efficiency, implementation, and
application. The fundamental question underlying
all the computing is ’What can be (efficiently)
automated?’
Relatório da ACM [Comer et al., 1989] (Association for
Computing 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 para
representar procedimentos para resolver problemas
matemáticos;
I
Formalizado em 1936 por meio das Máquinas de
Turing1 de Alan Turing e pelo Cálculo Lambda2 de
Alonzo Church e Stephen Cole Kleene.
1
Modelo abstrato de um computador.
Sistema formal desenvolvido para investigar definição de funções,
aplicação de funções e recursão.
2
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Definição
I
ALGORITMO: conjunto finito de instruções bem
definidas que, se seguidas, realizam uma
determinada tarefa;
Referências
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Definição
I
ALGORITMO: conjunto finito de instruções bem
definidas que, se seguidas, realizam uma
determinada tarefa;
I
Informalmente... receita:
I
I
I
Instruções para o uso de medicamentos;
Indicações de como montar um aparelho;
Uma receita de culinária.
Referências
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Referências
Definição
I
ALGORITMO: conjunto finito de instruções bem
definidas que, se seguidas, realizam uma
determinada tarefa;
I
Informalmente... receita:
I
I
I
I
Instruções para o uso de medicamentos;
Indicações de como montar um aparelho;
Uma receita de culinária.
Segundo Dijkstra, um algoritmo corresponde a uma
descriçã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 Muhammad
bin Musa al-Khwarizmi
I
I
I
Algorism (regras para
aritmética usando
números
hindu-arábicos);
Algorithm (século 18
latinização);
1o algoritmo escrito
para 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 clara
e não ambígua;
4. Efetividade: toda instrução deve ser factível;
5. O algoritmo deve terminar após um no finito de
passos.
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
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
Referências
Introdução
Conceitos
Dados
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Referências
Dados
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
COMPUTAÇÃO: estudo de DADOS
Modelagem
Dados
RESULTADOS!!
Interpretação
Dados
Transformados
Representação
Execução
ALGORITMOS
Transformação
Diferentes representações =⇒ diferentes algoritmos.
Referências
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ção
da influência da representação do dado.
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
ESTRATÉGIA:
analisar o papel de diferentes estruturas de
dados em problemas clássicos de Ciências da
Computação através da análise dos algoritmos
correspondentes.
Referências
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Referências
DADO:
I
s.m. Elemento ou quantidade conhecida, que serve
de base à resolução de um problema; princípio em
que assenta uma discussão; elemento ou base para
a 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, capaz
de ser comunicada ou manipulada por algum
processo;
I
Representação em uma linguagem precisa e
formalizada de alguns fatos ou conceitos,
freqüentemente valores numéricos ou alfabéticos, de
uma forma tal que possam ser manipulados por um
mé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 por
cadeia de bits é interpretado.
I
Exemplos de tipos de dados:
I
I
I
I
I
Variáveis;
Constantes;
Expressões;
Funções.
Referem-se ao conjunto de valores que estes podem
assumir 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 conjunto
de caracteres de impressão.
I
Denotam-se por meio de identificadores:
I
I
I
I
I
Integer (simples);
Boolean (simples);
Char (simples);
Real (simples);
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
I
I
I
I
I
Soma;
Subtração;
Multiplicação;
Divisão inteira (DIV);
Resto da divisão (MOD);
Operações de comparação: =, 6=, ≥, ≤, >, <.
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Tipos Escalares de Dados: Real
I
São os números racionais, isto é, números
compostos por uma parte inteira e uma fracionária;
I
Operações permitidas são:
I
I
I
I
I
Soma;
Subtração;
Multiplicação;
Divisão (/);
Operações de comparação: =, 6=, ≥, ≤, >, <.
Referências
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Tipos Escalares de Dados: Boolean (lógico)
I
Composto por apenas dois valores: verdadeiro e
falso (TRUE e FALSE)
I
Operações:
I
I
I
OU (OR - conjunção);
E (AND - disjunção);
NÃO (NOT - negação).
Referências
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Tipos Escalares de Dados: Char (caracter)
I
São os caracteres alfanuméricos, isto é, dígitos
decimais (0..9), letras (a..z, A..Z) e sinais especiais
(sinais de pontuação, espaço em branco entre
outros);
I
Operações de comparação: =, 6=.
Referências
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 seguinte
forma:
TYPE T = (a1, a2, ..., an)
onde T é o novo identificador de tipo e os aj são os
novos identificadores de constantes.
I
Exemplos:
I
I
I
TYPE cor = (azul, vermelho, amarelo);
TYPE dia-da-semana = (segunda, terça, quarta, quinta,
sexta, sábado, domingo);
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 os
identificadores sejam utilizados ao longo do programa
como constantes, aumentando consideravelmente a sua
inteligibilidade.
I
Vejamos os exemplos abaixo:
I
I
I
I
VAR c:
VAR d:
VAR m:
cor;
dia-da-semana;
moeda.
então
I
I
I
c := vermelho;
d := segunda;
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 seus
correspondentes numéricos:
I
I
I
I
c := 2;
d := 1;
m := 1;
OBS: Também, o compilador poderá verificar a
consistê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 determinado
tipo, 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
I
I
VAR y: ano;
VAR l: letra-maiúscula;
as seguintes atribuições são válidas:
I
I
y := 1996;
l := "U";
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Tipos Compostos de Dados (Tipos Estruturados)
São tipos construídos a partir de tipos simples:
I
I
I
I
Array
File of
Record
Set
Referências
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Referências
Tipos Estruturados: Array
I
Estrutura matricial:
I
I
Composta de um número fixo de elementos do mesmo tipo
com índices variando de a1 até an ;
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 ser
representado por um array bidimensional A, onde m é o
número de linhas e n o número de colunas.
a11
a21
..
.
ai1
am1
a12
a22
..
.
a12
a12
...
...
..
.
...
...
a1j
a11
..
.
a11
a11
a1n
a2n
..
.
ain
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
I
Estrutura de campos que pode ser utilizada para ligar
componentes de diferentes tipos. Cada campo tem
um nome próprio chamado de identificador de campo.
Número fixo de variáveis:
TYPE pessoa1 = RECORD
Nome: string[30];
Altura: real;
Idade: integer;
Sexo: tiposexo;
END;
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Tipos Estruturados: Record (registro)
I
Campo variante:
TYPE pessoa-2 = RECORD
Nome : string[30];
Est-civil: (solt, cas, viú, div);
CASE s : tiposexo OF
masculino: (peso: real;
barbudo : boolean;)
feminino : ARRAY [1..3] OF integer;
END;
END;
Referências
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 TIPO
especificado, onde tipo pode ser TEXT por exemplo;
I
Exemplo:
TYPE
cadastro : 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:
TYPE
letra-ma = SET OF ’A’...’Z’;
vogal = SET OF (’a’,’e’,’i’,’o’,’u’);
Introdução
Conceitos
Tipos de Dados
Program complex;
type complexnumber =
Estruturas de Dados
Tipo Abstrato de Dados
record
r1: real;
im: real;
end;
var c1, c2, c3: complexnumber;
begin
c1.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.
Referências
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Estruturas de Dados — ED
Definição:
Conjunto de valores e da maneira como se
relacionam.
Exemplo: estrutura de dados Inteiros
Conjunto de valores
||
(0, ±1, ±2, . . .)
+
Relações
||
(+, -, *, /, MOD)
Referências
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Estruturas de Dados
Uma implementação de ED d é um mapeamento de d
para um conjunto de outras estruturas de dados e
O que faz
⇓
Definição ED
×
Como faz
⇓
Implementação ED
Referências
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 intimamente
ligados:
I
I
I
Não se pode estudar estruturas de dados sem considerar
os algoritmos associados a elas;
Assim como a escolha dos algoritmos em geral depende
da representação e da estrutura dos dados.
Para resolver um problema é necessário escolher
uma abstração da realidade, em geral mediante a
definição de um conjunto de dados que representa a
situação real.
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Referências
Escolha da representação
I
I
A escolha da representação dos dados é
determinada, entre outras, pelas operações a serem
realizadas sobre os dados;
Exemplo: considere a operação de adição:
I
I
I
Para pequenos números, uma boa representação é por
meio de barras verticais (caso em que a operação de
adição é bastante simples);
Já a representação por dígitos decimais requer regras
relativamente complicadas, as quais devem ser.
memorizadas
Entretanto, quando consideramos a adição de grandes
números é mais fácil a representação por dígitos decimais
(devido ao princípio baseado no peso relativo da posição
de cada dígito).
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Referências
Programas
I
I
I
Programar é basicamente estruturar dados e
construir algoritmos. Programas são formulações
concretas de algoritmos abstratos, baseados em
representações e estruturas específicas de dados;
Programas representam uma classe especial de
algoritmos capazes de serem seguidos por
computadores;
Um computador só é capaz de seguir programas em
linguagem de máquina (seqüência de instruções
obscuras e desconfortáveis para os humanos!).
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Referências
Programas
I
I
É necessário construir linguagens mais adequadas,
que facilitem a tarefa de programar um computador;
Uma linguagem de programação é uma técnica de
notação para programar, com a intenção de servir de
veículo tanto para a expressão do raciocínio
algorítmico quanto para a execução automática de
um algoritmo por um computador.
Introdução
Conceitos
Tipos de Dados
Estruturas de Dados
Tipo Abstrato de Dados
Tipo Abstrato de Dados - TAD
Encapsula ED + Operações
Vantagem:
A alteração no módulo de implementação não
altera o módulo de interface.
Referências
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 o
projeto de algoritmos;
I
A implementação do algoritmo em uma linguagem de
programação específica exige a representação do
TAD em termos dos tipos de dados e dos operadores
suportados;
I
A representação do modelo matemático por trás do
tipo abstrato de dados é realizada mediante uma
estrutura 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
Ziviani, N. (2004).
Projeto de Algoritmos.
Thomson Learning, São Paulo, SP, 2 edition.
Referências
Download