ESTRUTURAS DE DADOS (LEI, LM, LEE) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018
Página da Disciplina http://www.di.ubi.pt/~hugomcp/estruturas Conteúdo: Avaliação. n Consulta das classificações atribuídas a cada item de avaliação. Acetatos teóricos e fichas práticas. Anúncios. n Informação relevante sobre a disciplina. n Datas limite para entrega de trabalhos, novidades, etc... Links. n Tutoriais, manuais, e outros recursos disponíveis on-line e de interesse para a disciplina. Etc...
Critérios de Avaliação Assiduidade (A) Serão registadas as presenças nas aulas teóricas e práticas. n n Frequências n n Cada falta implica uma penalização de 0.025 valores na nota final (frequência e exames). Consideram-se dispensados do critério de assiduidade os trabalhadores/estudantes registados com tal estatuto nos Serviços Académicos da Universidade. Prova (F 1 ) - 2ª feira, 6 de novembro de 2017, 14:00-16:00, Sala 6.26 (8 valores) Prova (F 2 ) - 2ª feira, 8 de Janeiro de 2018, 14:00-16:00, Sala 6.26 (8 valores) Trabalho Prático n Mensagens Codificadas: Sequências Equidistantes de Símbolos (4 valores) Classificação Ensino/Aprendizagem (C) n A classificação relativa ao período de Ensino Aprendizagem é obtida através da seguinte fórmula: C=F 1 *8/20+F 2 *8/20 + T - A Admissão a Exame n Consideram-se admitidos a Exame os alunos que obtiverem classificação mínima de 6 valores na componente de Ensino-Aprendizagem. Horário de Atendimento n 4ª feiras, 16:00-18:00, Gabinete do docente
Pré-Requisitos I Pré-Requisitos: Tópicos que se assumem assimilados préviamente pelos alunos. Apesar de não incluídos no contéudo programático da disciplina, o sucesso nesta exige o conhecimento de cada um dos items apresentados à direita. Sintaxe da Linguagem C Estrutura de um Programa Palavras Reservadas Blocos Condicionais Blocos Iterativos Manuseamento de Ficheiros n Texto n Binários Análise de Complexidade Algoritmos de Pesquisa e Ordenação
Pré-Requisitos II Pré-Requisitos: Tópicos que se assumem assimilados préviamente pelos alunos. Apesar de não incluídos no contéudo programático da disciplina, o sucesso nesta exige o conhecimento de cada um dos items apresentados à direita. Edição, Compilação e Execução de Programas em C Escolha de Editor de Texto Bibliotecas n Bibliotecas mais Comuns n Inclusão de Bibliotecas n Linkagem de Bibliotecas Execução n Redirecção do Input / Output
Objectivos O objectivo principal desta disciplina é a compreensão dos conceitos fundamentais associados aos vários tipos de estruturas de dados dinãmicas e dos algoritmos passíveis de aplicação a cada estrutura. No final do semestre, os alunos deverão ser capazes de idealizar, esquematizar e implementar estruturas de dados e respectivos algoritmos com vista à resolução de problemas. A linguagem C será usada na componente prática da disciplina, apesar dos conceitos nela envolvidos serem independentes da linguagem.
Objectivos: Estruturas Dinâmicas? Em termos gerais, existem três formas de alocar recursos (memória) num computador: Estáticamente n Tempo de compilação. Vectores n Tempo de execução. n Memória adjacente. n Acesso directo. Estruturas ligadas. n Tempo de execução. n Memória descontínua. n Acesso Sequêncial.
Objectivos Parte I Estruturas Dinâmicas de Acesso Sequêncial L 1 2 3 4
Objectivos Parte II Estruturas Dinâmicas de Acesso Binário A 1 2 3 4 5 6 7
Objectivos Parte III Grafos G 1 4 2 6 7 3 5
Objectivos Final Estruturas Compostas L A B C D 1 2 3 4 1 2 A 2 1 3 4
Programa 1. Introdução 1. Alocação Dinâmica de Recursos 2. Apontadores 3. Estruturas de Dados 2. Estruturas Sequênciais 1. Listas 1. Simplesmente Ligadas 2. Duplamente Ligadas 2. Pilhas 3. Filas 4. Listas de Salto
Programa 1. Estruturas Não-Sequênciais 1. Tabelas de Dispersão 2. Árvores 1. Árvores Binárias 2. Árvores Binárias de Pesquisa 3. Árvores Equilibradas (AVL) 4. Árvores N-árias 3. Grafos 1. Tipos De Grafos 1. Dirigidos, Não-Dirigidos 2. Pesados, Não-Pesados 2. Pesquisa 1. Primeiro em Profundidade 2. Primeiro Em Largura 3. Algoritmos 1. Spanning Trees 2. Edmonds 3. Dijkstra
Bibliografia Recomendada Principal "Introduction to Algorithms (2nd edition)", Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, The MIT Press, 2001. "Algorithms in C, Parts 1-5 (Bundle): Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms", R. Sedgewick, Addison-Wesley Professional, 3rd Edition, 2001. Secundária "Data Structures in ANSI C", S. Sengupta, Academic, 1991. "Mastering algorithms in C", Kyle Loudon, O'Reilly, 1999. "Programs and Data Structures in C", 2nd edition, L. Ammeraal, John Wiley & Sons, 1996. "Estruturas de Dados e Algoritmos", Bruno R. Preiss, Elsevier, 2001. "Data Structures and Algorithm Analysis in C++", 2nd ed., Mark Allen Weiss, Addison-Wesley, 1999. "Data Structures and Algorithms: Annotated Reference with Examples", G.Barnett and L. Del Tongo, EBook: http://dotnetslackers.com/projects/data- Structures-And-Algorithms/
Exercício Vector Geneológico Suponha que é guardada informação num vector (dinãmico) sobre um conjunto de sócios de uma colectividade e os respectivos proponentes. Cada sócio tem que ter obrigatoriamente um proponente, excepto o fundador (proponente=-1). typedef struct Socio{ int BI, idade, peso, prop; }; BI= 123456789 Idade = 27 Peso = 76 Prop= 8765432
Exercício: Vector Geneológico Implemente uma função em C que permita verificar se uma determinada pessoa foi proposta (directa ou indirectamente) por outra. Protótipo: int proposta(socio *v, int totv, int BIpessoa, int BIProp) //1=Sim, 0=Não Vector dinãmico + total de elementos V BI= 123456789 Idade = 27 Peso = 76 Prop= 8765432 BI= 8765432 Idade = 15 Peso = 46 Prop= 7654321 BI= 12233445 Idade = 29 Peso = 91 Prop= 8765432 BI= 9876541 Idade = 27 Peso = 76 Prop= 7654321 BI= 7654321 Idade = 24 Peso = 70 Prop= -1