aula1

23
Introdução Tipo Abstratos de Dados(TAD) Implementação Aula 001 - Algoritmos, Estruturas de Dados Rafael de Sousa Oliveira Martins Bruno César Cota Conceição Universidade Federal de Ouro Preto 11 de março de 2015 Rafael Martins, Bruno Conceição Tutoria Aeds1 - EC / SI

description

aula 1

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