aula1
-
Upload
rafael-martins -
Category
Documents
-
view
218 -
download
2
description
Transcript of aula1
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Aula 001 - Algoritmos, Estruturas de Dados
Rafael de Sousa Oliveira MartinsBruno Csar Cota Conceio
Universidade Federal de Ouro Preto
11 de maro de 2015
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Introduo
AlgoritmoSoluo para determinado tipo de problema
ProgramaFormulaes concretas de algoritmos
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Introduo
AlgoritmoSoluo para determinado tipo de problema
ProgramaFormulaes concretas de algoritmos
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Representao de dados
DefinioDados podem ser representados(estruturados) de diferentesmaneirasA representao determinada pelas operaes realizadassobre os dados
ExemploRepresentao por palitos: ll + lll = lllllRepresentao decimal: 1278 + 321 = 1599
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Representao de dados
Qual a diferena entre um programa e um algoritmo?Um programa uma realizao concreta de um algoritmoabstrato, baseado em representaes de dados especficas.Programas precisam ser implementados numa linguagem quepode ser entendida e seguida pelo computador.
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Estrutura de Dados
DefinioConjunto de dados que representa uma situao realAbstrao da realidadeEstrutura de dados e algoritmos esto intimamente ligadas
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Tipo Abstratos de Dados (TAD)
DefinioEncapsulam a representao dos dados e as operaes quepodem ser realizadas sobre eles
Usurio vs. ProgramadorUsurio s "enxerga"a interface, no a implementaoNo importa se a representao foi feita com palitos, nmerodecimais, binrio desde que consiga somar, subtrair,multiplicar, etc.Usurios de um TAD s tm acesso s operaesdisponibilizadas sobre os dados
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Tipo Abstratos de Dados (TAD)
DefinioEncapsulam a representao dos dados e as operaes quepodem ser realizadas sobre eles
Usurio vs. ProgramadorUsurio s "enxerga"a interface, no a implementaoNo importa se a representao foi feita com palitos, nmerodecimais, binrio desde que consiga somar, subtrair,multiplicar, etc.Usurios de um TAD s tm acesso s operaesdisponibilizadas sobre os dados
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Tipo Abstratos de Dados (TAD) - Motivao
IsolamentoModificar a implementao do TAD sem modificar o cdigo queusa o TAD e vice-versa.
ReusoTAD pode ser reaproveitado em vrios programas ou mdulos.
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Tipos Abstratos de Dados (TAD)
Exemplo: Lista de nmeros inteirosOperaes do TAD:
Faz Lista VaziaInsere nmero no comeo da listaRemove de uma posio i
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Tipos Abstratos de Dados(TAD) - Exemplo
Programa usurio do TAD
i n t main ( ) {L i s t a L ;i n t x ;
x = 20 ;Fa zL i s t aVaz i a (L) ;I n s e r e ( x , L ) ;. . .
}
Implementao por vetores
vo i d i n s e r e ( i n t x , L i s t a L) {f o r ( i ==0 ; . . . ) { . . . }L [ i ] = x ;
}
Implementao por Listas
vo i d I n s e r e ( i n t x , L i s t a L) {p = Cr i aNovaCa lu l a ( x ) ;L>p r im e i r o = p ;. . .
}
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Implementao
Utilizando CVamos utilizar os conceitos para implementao dos TADs em C:
TypedefStructs
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Estruturas (Structs) em C
DefinioUma struct uma coleo de uma ou mais variveis, possivelmentede tipos diferentes, colocadas juntas sob um nico nome paramanipulao conveniente
Exemplo 1: AlunoPara representao de um aluno so necessrios as informaes:
NomeMatrculaCoeficiente
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Estruturas (Structs) em C
DefinioUma struct uma coleo de uma ou mais variveis, possivelmentede tipos diferentes, colocadas juntas sob um nico nome paramanipulao conveniente
Exemplo 1: AlunoPara representao de um aluno so necessrios as informaes:
NomeMatrculaCoeficiente
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Estruturas (Structs) em C
Exemplo 2: SensorPara representao de um sensor so necessrios as informaes:
Coordenada XCoordenada YID
VantagensAo invs de criar trs ou mais variveis, possvel criar uma nicavarivel contendo todos os campos
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Estruturas (Structs) em C
Exemplo 2: SensorPara representao de um sensor so necessrios as informaes:
Coordenada XCoordenada YID
VantagensAo invs de criar trs ou mais variveis, possvel criar uma nicavarivel contendo todos os campos
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Estruturas (Structs) em C
ObservaoEm C, usa-se a construo struct para representar esse tipo dedado
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Estruturas (Structs) em C
#i n c l u d e #i n c l u d e
s t r u c t Aluno{char nome [ 5 0 ] ;i n t ma t r i c u l a ;cha r c o n c e i t o ;
} ;
i n t main ( ) {s t r u c t Aluno a l , aux ;
s t r c p y ( a l . nome , "Pedro" ) ;a l . ma t r i c u l a = 200712;a l . c o e f i c i e n t e = 5 ;aux = a l ;p r i n t f ( "%s " , aux . nome) ;
r e t u r n 0 ;}
nomemat coefi
al :Pedro200712 coefi
aux :Pedro200712 coefi
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Estruturas (Structs) em C
#i n c l u d e #i n c l u d e
s t r u c t Aluno{char nome [ 5 0 ] ;i n t ma t r i c u l a ;cha r c o n c e i t o ;
} ;
i n t main ( ) {s t r u c t Aluno a l , aux ;
s t r c p y ( a l . nome , "Pedro" ) ;a l . ma t r i c u l a = 200712;a l . c o e f i c i e n t e = 5 ;aux = a l ;p r i n t f ( "%s " , aux . nome) ;
r e t u r n 0 ;}
nomemat coefi
al :Pedro200712 coefi
aux :Pedro200712 coefi
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Declarao de Tipos
Uso da construo typedefPara simplificar, uma estrutura ou mesmo outros tipos de dadospodem ser definidos como um novo tipo
t y p ed e f s t r c u t Aluno{char nome [ 5 0 ] ;i n t ma t r i c u l a ;cha r c o n c e i t o ;
} TipoAluno ;
t y p ed e f i n t [ 1 0 ] Vetor ;
i n t main ( ) {Tipo Aluno a l ;Vetor v ;
. . .}
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
TADs em C
ImplementaoPara implementar um Tipo Abstrato de Dados em C, usa-se adefinio de tipos juntamente com a implementao de funes queagem sobre aquele tipo
Boas TcnicasEvita-se acessar o dado diretamente, fazendo o acesso satravs das funesImplementar os TADs em arquivos separados do programaprincipal
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
TADs em C
Boas TcnicasSo geralmente separados em dois arquivos:
NomeDoTAD.h : com a declaraoNomeDoTAD.c : com a implementao
Para o programa ou outros TADs que utilizam o seu TAD devemdar um #include no arquivo.h
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI
-
IntroduoTipo Abstratos de Dados(TAD)
Implementao
Exemplo de TAD: Conta Bancria
ExerccioImplemente um TAD ContaBancaria, com os campos nmero esaldo onde os clientes podem fazer as seguintes operaes:
Iniciar uma conta com um nmero e saldo inicialDepositar um valorSacar um valorImprimir o saldo
Faa um pequeno programa para testar o seu TAD
Rafael Martins, Bruno Conceio Tutoria Aeds1 - EC / SI