Você está na página 1de 23

Introduo

Tipo Abstratos de Dados(TAD)


Implementao

Aula 001 - Algoritmos, Estruturas de Dados


Rafael de Sousa Oliveira Martins
Bruno Csar Cota Conceio
Universidade Federal de Ouro Preto

11 de maro de 2015

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Introduo

Algoritmo
Soluo para determinado tipo de problema

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Introduo

Algoritmo
Soluo para determinado tipo de problema
Programa
Formulaes concretas de algoritmos

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Representao de dados

Definio
Dados podem ser representados(estruturados) de diferentes
maneiras
A representao determinada pelas operaes realizadas
sobre os dados
Exemplo
Representao por palitos: ll + lll = lllll
Representao decimal: 1278 + 321 = 1599

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Representao de dados

Qual a diferena entre um programa e um algoritmo?


Um programa uma realizao concreta de um algoritmo
abstrato, baseado em representaes de dados especficas.
Programas precisam ser implementados numa linguagem que
pode ser entendida e seguida pelo computador.

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Estrutura de Dados

Definio
Conjunto de dados que representa uma situao real
Abstrao da realidade
Estrutura de dados e algoritmos esto intimamente ligadas

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Tipo Abstratos de Dados (TAD)


Definio
Encapsulam a representao dos dados e as operaes que
podem ser realizadas sobre eles

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Tipo Abstratos de Dados (TAD)


Definio
Encapsulam a representao dos dados e as operaes que
podem ser realizadas sobre eles
Usurio vs. Programador
Usurio s "enxerga"a interface, no a implementao
No importa se a representao foi feita com palitos, nmero
decimais, binrio desde que consiga somar, subtrair,
multiplicar, etc.
Usurios de um TAD s tm acesso s operaes
disponibilizadas sobre os dados

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Tipo Abstratos de Dados (TAD) - Motivao

Isolamento
Modificar a implementao do TAD sem modificar o cdigo que
usa o TAD e vice-versa.
Reuso
TAD pode ser reaproveitado em vrios programas ou mdulos.

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Tipos Abstratos de Dados (TAD)

Exemplo: Lista de nmeros inteiros


Operaes do TAD:
Faz Lista Vazia
Insere nmero no comeo da lista
Remove de uma posio i

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Tipos Abstratos de Dados(TAD) - Exemplo

Programa usurio do TAD

Implementao por vetores

i n t main ( ) {
Lista L;
int x ;

void i n s e r e ( i n t x , Lista L) {
for ( i ==0;...) { . . . }
L[ i ] = x ;
}

x = 20;
FazListaVazia (L) ;
I n s e r e (x , L) ;
...
}

Implementao por Listas


void I n s e r e ( i n t x , Lista L){
p = CriaNovaCalula ( x ) ;
L>p r i m e i r o = p ;
...
}

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Implementao

Utilizando C
Vamos utilizar os conceitos para implementao dos TADs em C:
Typedef
Structs

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Estruturas (Structs) em C

Definio
Uma struct uma coleo de uma ou mais variveis, possivelmente
de tipos diferentes, colocadas juntas sob um nico nome para
manipulao conveniente

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Estruturas (Structs) em C

Definio
Uma struct uma coleo de uma ou mais variveis, possivelmente
de tipos diferentes, colocadas juntas sob um nico nome para
manipulao conveniente
Exemplo 1: Aluno
Para representao de um aluno so necessrios as informaes:
Nome
Matrcula
Coeficiente

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Estruturas (Structs) em C

Exemplo 2: Sensor
Para representao de um sensor so necessrios as informaes:
Coordenada X
Coordenada Y
ID

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Estruturas (Structs) em C

Exemplo 2: Sensor
Para representao de um sensor so necessrios as informaes:
Coordenada X
Coordenada Y
ID
Vantagens
Ao invs de criar trs ou mais variveis, possvel criar uma nica
varivel contendo todos os campos

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Estruturas (Structs) em C

Observao
Em C, usa-se a construo struct para representar esse tipo de
dado

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Estruturas (Structs) em C

#i n c l u d e < s t d i o . h>
#i n c l u d e < s t r i n g . h>
s t r u c t Aluno {
c h a r nome [ 5 0 ] ;
int matricula ;
char conceito ;
} ;
i n t main ( ) {
s t r u c t Aluno a l , aux ;
s t r c p y ( a l . nome , " P e d r o " ) ;
a l . m a t r i c u l a = 200712;
al . c o e f i c i e n t e = 5;
aux = a l ;
p r i n t f ( "%s " , a u x . nome ) ;
return

0;

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Estruturas (Structs) em C

nome
mat coefi

#i n c l u d e < s t d i o . h>
#i n c l u d e < s t r i n g . h>
s t r u c t Aluno {
c h a r nome [ 5 0 ] ;
int matricula ;
char conceito ;
} ;
i n t main ( ) {
s t r u c t Aluno a l , aux ;
s t r c p y ( a l . nome , " P e d r o " ) ;
a l . m a t r i c u l a = 200712;
al . c o e f i c i e n t e = 5;
aux = a l ;
p r i n t f ( "%s " , a u x . nome ) ;
return

0;

al :

aux :

Pedro
200712

Pedro
200712

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

coefi

coefi

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Declarao de Tipos

Uso da construo typedef


Para simplificar, uma estrutura ou mesmo outros tipos de dados
podem ser definidos como um novo tipo
t y p e d e f s t r c u t Aluno {
c h a r nome [ 5 0 ] ;
int matricula ;
char conceito ;
} TipoAluno ;

i n t main ( ) {
Tipo Aluno a l ;
Vetor v ;
...
}

typedef

int [10]

Vetor ;

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

TADs em C

Implementao
Para implementar um Tipo Abstrato de Dados em C, usa-se a
definio de tipos juntamente com a implementao de funes que
agem sobre aquele tipo
Boas Tcnicas
Evita-se acessar o dado diretamente, fazendo o acesso s
atravs das funes
Implementar os TADs em arquivos separados do programa
principal

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

TADs em C

Boas Tcnicas
So geralmente separados em dois arquivos:
NomeDoTAD.h : com a declarao
NomeDoTAD.c : com a implementao
Para o programa ou outros TADs que utilizam o seu TAD devem
dar um #include no arquivo.h

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI

Introduo
Tipo Abstratos de Dados(TAD)
Implementao

Exemplo de TAD: Conta Bancria

Exerccio
Implemente um TAD ContaBancaria, com os campos nmero e
saldo onde os clientes podem fazer as seguintes operaes:
Iniciar uma conta com um nmero e saldo inicial
Depositar um valor
Sacar um valor
Imprimir o saldo
Faa um pequeno programa para testar o seu TAD

Rafael Martins, Bruno Conceio

Tutoria Aeds1 - EC / SI