Você está na página 1de 23

ALGORITMOS E

ESTRUTURAS DE DADOS I
PROF. EDSON IFARRAGUIRRE MORENO
INFORMAÇÕES

• Horário: 3CD 6CD


• Créditos: 4
• Carga-horária: 60 horas-aula
• E-mail: edson.moreno@pucrs.br
• Material: http://www.inf.pucrs.br/emoreno
CONTEXTO
CONTEXTO
OBJETIVOS DA DISCIPLINA

• O cumprimento da disciplina busca dar ao aluno, ao final


do semestre, condições de:
• Conhecer as estruturas de dados primitivas e estruturas do tipo
arranjos.
• Indicar as estruturas de dados que melhor se adaptam para a
solução de um determinado problema.
• Construir algoritmos estruturados que sejam soluções de um
dado problema, no paradigma de programação imperativa,
utilizando os conceitos de subprogramação e recursividade.
OBJETIVOS DA DISCIPLINA

• O cumprimento da disciplina busca dar ao aluno, ao final


do semestre, condições de:
• Analisar e verificar a correção de um algoritmo, utilizando a
técnica de execução simbólica.
• Selecionar o algoritmo mais eficiente para a solução de um
determinado problema.
• Familiarizar-se com o emprego da notação assintótica para
análise de algoritmos.
EMENTA

• Análise e construção de algoritmos.


• Programação imperativa: algoritmos e estruturas de
dados convencionais
• Atribuições, seleção e repetição, entrada e saída, matrizes,
registros, ponteiros.

• Subprogramação.
• Recursividade.
PROGRAMA

• Unidade 1: Conceitos Fundamentais de Algoritmos


• 1.1. Conceito e características de um algoritmo
• 1.2. Tipos de dados
• 1.3. Objetos de um algoritmo: variável e constante
• 1.4. Estrutura de um algoritmo
• 1.4.1. Algoritmo principal e subalgoritmos
• 1.4.2. Área de declarações
PROGRAMA

• Unidade 2: Tipos de Algoritmos


• 2.1. Puramente seqüenciais
• 2.1.1. Expressões aritméticas
• 2.1.2. Operadores aritméticos
• 2.1.3. Prioridades
• 2.1.4. Instruções primitivas
• 2.1.4.1. Atribuição
• 2.1.4.2. Saída de dados
• 2.1.4.3. Entrada de dados
PROGRAMA

• Unidade 2: Tipos de Algoritmos


• 2.2. Com seleção
• 2.2.1. Expressões relacionais
• 2.2.2. Operadores relacionais
• 2.2.3. Expressões lógicas
• 2.2.3.1. Operadores lógicos
• 2.2.3.2. Tabela verdade
• 2.2.3.3. Prioridades
• 2.2.4. Tipos de instruções
• 2.2.4.1. Seleção simples
• 2.2.4.2. Seleção composta
• 2.2.4.3. Seleção aninhada
PROGRAMA

• Unidade 2: Tipos de Algoritmos


• 2.3. Com repetição
• 2.3.1. Tipos de instruções
• 2.3.1.1. Estrutura Enquanto
• 2.3.1.2. Estrutura Repita
• 2.3.1.3. Estrutura Para
• 2.3.2. Conceitos relacionados: inicialização, contadores e acumuladores
• 2.3.3. Consistência de dados de entrada
PROGRAMA

• Unidade 3: Subalgoritmos
• 3.1. Conceitos e vantagens da utilização
• 3.2. Escopo de variáveis: globais X locais
• 3.3. Tipos de subalgoritmos
• 3.3.1. Função
• 3.3.2. Procedimento
• 3.4. Parâmetros
• 3.4.1. Passagem por valor
• 3.4.2. Passagem por referência
• 3.5. Formas de desenvolvimento de algoritmos
• 3.5.1. Top Down
• 3.5.2. Botton Up
PROGRAMA

• Unidade 4: Estruturas Homogêneas


• 4.1. Unidimensionais: Vetores
• 4.1.1. Formalização e manipulação
• 4.1.2. Operações mais comuns
• 4.1.3. Pesquisas em vetores
• 4.1.4. Métodos simples de ordenação de vetores
• 4.2. Multidimensionais: Matrizes
• 4.2.1. Formalização e manipulação
• 4.2.2. Operações mais comuns
• 4.2.3. Pesquisas em matrizes
• 4.2.4. Matrizes especiais
• 4.2.4.1. Matrizes triangulares
• 4.2.4.2. Matrizes esparsas
PROGRAMA

• Unidade 5: Introdução à Análise de Algoritmos


• 5.1. Importância
• 5.2. Contagem de passos
• 5.3. Ordem de crescimento
• 5.3.1. Notação O(n)
• 5.3.2. Operando com ordens de crescimento
PROGRAMA

• Unidade 6: Estruturas Heterogêneas


• 6.1. Registros
• 6.2. Formalização e manipulação
• 6.3. Combinando com variáveis homogêneas
• 6.3.1. Vetores de registros
• 6.3.2. Registros com vetores
PROGRAMA

• Unidade 7: : Desenvolvimento de Algoritmos Recursivos


• 7.1. Conceito e exemplos de utilização
• 7.2. Algoritmos recursivos X iterativos
• 7.3. Recursividade utilizando estruturas de dados
AVALIAÇÃO
Fórmula:

G1 = ( 2,5*P1 + 3,0*P2 + 3,5*P3 + 1,0*TP )


10
Onde:
P1 – Prova
P2 – Prova
P3 – Prova
TP – Média dos exercícios/trabalhos realizados ao longo da disciplina
DATAS DAS AVALIAÇÕES

• P1 - 12/09/2017
• P2 - 17/10/2017
• P3 - 21/11/2017
• PS - 28/11/2017
• G2 - 05/12/2017
• TPs – Ao longo do semestre
AVALIAÇÃO

• G1 >= 7: Aprovação
• 4 <= G1 < 7: G2
• Conteúdo: TODA a matéria, média = 5,0
• G1 < 4: Reprovação sem direito a G2

• Menos de 75% de presença: reprovação.


AVALIAÇÃO – OBSERVAÇÕES

• Sobre os trabalhos
• Como garantir nota zero
• Trabalhos entregues fora do prazo
• Encaminhamento de material corrompido
• Plágio
• Sobre as provas
• Entrar permitida até o primeiro aluno sair
• Depois disso ninguém mais entra!

• PS: APENAS PARA QUEM FALTOU A P1 ou a P2!


BIBLIOGRAFIA

• BÁSICA:
• 1. FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de
Programação. São Paulo, Makron Books, 2000.
• 2. ORTH, A. I. Algoritmos e Programação. Porto Alegre: AIO,
2001. 175 p.
BIBLIOGRAFIA

• COMPLEMENTAR:
• 1. AHO, A. V.; HOPCROFT, J. E.; ULLMAN, J. D. Data structures and algoritmos.
Massachusetts, Addison-Wesley, 1987.
• 2. CORMEN, T.; LEISERSON, C.; RIVEST, R. Introduction to Algorithms. MIT Press,
2001.
• 3. FARRER, H. et alli. Algoritmos Estruturados. Rio de Janeiro, Guanabara, 1999.
• 4. GUIMARÃES, A. M.; LAGES, N.A.C. Algoritmos e Estruturas de Dados. Rio de
Janeiro , LTC, 1994.
• 5. SALVETTI, D.; et al. Algoritmos. São Paulo : Makron, 1998 .273 p.
• 6. VELOSO, Paulo et alli. Estruturas de Dados. Rio de Janeiro, Editora Campus,
1996.
• 7. VILLAS, Marcos V.; VILLAS BOAS, L. Programação: Conceitos, Técnicas e
Linguagens. Rio de Janeiro, Editora Campus, 1988.
• 8. WIRTH, N. Algoritmos e Estruturas de Dados. Rio de Janeiro, Prentice-Hall, 1999.
BOM SEMESTRE !