UNIVERSIDADE ESTADUAL DE MARINGÁ CENTRO DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA PROGRAMA DE DISCIPLINA Disciplina: Algoritmos e Estruturas de Dados I Código: 1207 Carga Horária: 204 Ano Letivo: 2003 Curso: Bacharelado em Informática 1. EMENTA Estudos das formas de representação do pensamento lógico através de técnicas de desenvolvimento de algoritmos, e de estruturas de dados, para a representação e manipulação de dados em memória primária de computadores. 2. OBJETIVOS desenvolver algoritmos por meio das técnicas: "a arte de resolver problemas", refinamento sucessivo, recursividade e dividir para conquistar; estudar formas de representação e abstração de dados em memória primária de computadores, em estruturas tais como: arranjos, agregados heterogêneos, seqüências e encadeamentos estáticos e dinâmicos e, árvores; estudar os principais métodos de busca e classificação de dados em memória primária de um computador; estudar conceitos e respectivas aplicações em problemas clássicos da Teoria dos Grafos; desenvolver abstrações destinadas a aplicações específicas, buscando formas alternativas na resolução de problemas modelados através da teoria dos grafos; estudar e desenvolver programas numa linguagem procedimental estruturada. 3. PROGRAMA 01. Desenvolvimento de Algoritmos 1.1 – Conceitos preliminares 1.2 – Definição de Algoritmo 1.3 – Formas de representação de algoritmos: pseudolinguagem e gráfica. 1.4 – Planejamento para abordar a solução de problemas na forma algoritmica: Definição de objetos de entrada, saída e auxiliares. 1.5 – Estruturas algoritmicas em nível de comando 1.5.1 – Atribuição. 1.5.2 – Seleção. 1.5.3 – Repetição. 1.5.4 – Entrada e saída 1.5.5 – Avaliação de operadore e expressões 1.6 – Abstrações em nível de módulos 1.6.1 – Blocos. 1.6.2 – Procedimentos e funções. 1.6.3 – Módulo. 1.6.4 – Escopo de objetos. 1.6.5 – Passagem de parâmetros 1.6.6 – Tempo de vida. 02. Técnicas para construção de algoritmos e programação. 2.1 – Refinamento suscessivo. 2.2 – Modularização. 2.3 – Técnicas de depuração de algoritmos. 2.4 – Recursividade 03. Tipos de Dados 3.1 – Tipos básicos (inteiro, real, lógico, caracter) 3.2 – Tipos estruturados 3.2.1 – Agregados homogêneos unidimensionais. 3.2.2 – Agregados homogêneos multidimensionais. 3.2.3 – Agregados heterogêneos. 04. Implementação das estruturas algoritmicas em linguagem procedimental 4.1 - Tipos de dados, simples e estruturados. 4.2 - Comandos de entrada e saída. 4.3 - Atribuição e sequencialidade. 4.4 - Comandos de seleção. 4.5 - Comandos de repetição. 4.6 - Subprogramação. 4.7 - Módulos. 05. Introdução à manipulação de dados em arquivos 5.1 – Arquivos de acesso seqüencial 5.2 – Arquivos de acesso direto 06. Conceitos básicos 6.1 – Tipos Abstrato de Dados 6.2 – Estruturas de dados 6.3 – Formas de alocação 6.4 – Noções de complexidade de algoritmos 07. Listas 7.1 – Listas lineares estáticas e dinâmicas 7.2 – Listas circulares e duplamente ligadas 7.3 – Filas 7.4 – Pilhas e deques 7.5 – Algoritmos básicos de gerenciamento 08. Árvores 8.1 – Árvores binárias 8.2 – Árvores de pesquisa 8.3 – Árvores AVL 8.4 – Algoritmos básicos de travessia e gerenciamento 09. Tabelas 9.1 – Pesquisa seqüencial 9.2 – Pesquisa binária 9.3 – Pesquisa através de cálculo de endereço 9.4 – Algoritmos básicos de gerenciamento 10. Classificação interna 10.1 – Classificação por inserção (direta e método dos incrementos decrescentes) 10.2 – Classificação por troca (método da bolha e método de troca e partição) 10.3 – Classificação por seleção (método de seleção direta e método de seleção em árvore) 10.4 – Classificação por distribuição 10.5 – Classificação por intercalação 11. Introdução à Teoria dos Grafos 11.1. Histórico e apresentação de problemas com solução através da Teoria dos Grafos. 11.2. Definições, elementos básicos e representação gráfica. (nó, arco, rotulação, subgrafos, tipos de grafo, operações sobre grafos) 11.3. Representações computacionais. 11.4. Algoritmos básicos de travessia 4. BIBLIOGRAFIA AHO, A. V., Hopcroft J. E., and Ullman J. D. - “Data Structures and Algorithms”. Editora Addison-Weley, 1987. BASE, S. – “Computer Algorithms: Introduction to Design and Analysis”. Editora Addison Wesley, 1988. CORMEN, T. H. et al – Algoritmos , Trad Segunda Edição Americana. Editora Campus, 2002. HOROWITZ, E. E SAHNI, S. - Fundamentos de Estruturas de Dados. Editara Campus, 1987. KNUTH, D.E. - "The art of computer programming". Vol. 1 e 3. Editora Addison-Wesley, 1996. MANBER, U. - “Algorithms: A Creative Approach”. Editora Academic Press, 1989. PREISS, B. R. – Estruturas de Dados e Algoritmos. Editora Campus, 2001. ROWE, G. W., and Rowe G. – “Introduction to Data Structures and Algorithms With C++”. Editora Prentice Hall 1996. SHEN, A - “Algorithms and Programming: Problems and soluction”. Editora Birkhauser, 1996. TANENBAUM, A. M., Langgsam, Y., Augenstein, M.- Estruturas de Dados Usando C. Editora Makron Books, 1995. TREMBLAY, J. P. E Bunt, R. B. - Ciência dos Computadores uma abordagem algorítmica. Editora McGraw-Hill, 1983. WEISS, M. A. - “Algorithms, Data Structures and Problema Solving with C++”. Editora Addison-Wesley, 1996. WIRTH, N. – Algoritmos e Estruturas de Dados. Editora Prentice-Hall, 1989. ZIVIANI, N.; Projeto de Algoritmos com Implementações em Pascal e C, 3ª Edição, Livraria Pioneira Editora, 1996. Em 04/04/2003 ___________________________________ APROVAÇÃO DO DEPARTAMENTO Assinatura do Chefe _______________________________ APROVAÇÃO DO COLEGIADO Assinatura do Coordenador