TADS:Estrutura de Dados

De Wiki Cursos IFPR Foz
Revisão de 00h39min de 25 de fevereiro de 2016 por Estevan.costa (discussão | contribs) (→‎22/fev)
Ir para navegaçãoIr para pesquisar

Plano de ensino

1. IDENTIFICAÇÃO

Curso: Tecnologia em Análise e Desenvolvimento de Sistemas

Componente Curricular: Estruturas de Dados

Professor: Estevan Braz Brandt Costa

Turma: 01/2015

Período Letivo: Segundo

Ano: 2015

Carga horária: 72

Horário Semanal de Atendimento ao Estudante: Determinar Data

2. EMENTA

Introdução a estruturas de dados. Estruturas estáticas e dinâmicas. Registros. Ponteiros. Listas encadeadas. Pilhas. Filas. Recursividade. Árvores. Balanceamento. Hashes. Métodos de busca e ordenação de vetores.

3. CONTEÚDO PROGRAMÁTICO

4. OBJETIVOS DO COMPONENTE CURRICULAR

Possibilitar ao aluno o entendimento das técnicas de organização de dados heterogêneos, em relação à eficiência de ocupação de espaço de armazenamento, velocidade de armazenamento e de acesso aos dados, bem como complexidade de codificação.

5. PROCEDIMENTOS METODOLÓGICOS

Metodologia de ensino

  • Aulas expositivas em laboratório de informática com projetor.
  • Uso de ambiente de programação para desenvolvimento das atividades
  • Uso do computador para em laboratório para exemplificação dos conteúdos didáticos

Recursos e materiais

  • Aulas expositivas empregando: quadro, multimídia;
  • Seminários para apresentação de trabalhos;
  • Trabalhos individuais e/ou grupo;
  • Exercícios em sala de aula.

6. AVALIAÇÃO

Trabalhos individuais e/ou grupo;

Apresentação de seminários;

Provas bimestrais individuais;

Participação em sala.

REFERÊNCIAS BIBLIOGRÁFICAS

REFERÊNCIAS BÁSICAS

  1. ZIVIANI, Nívio. Projeto de algoritmos com implementações em Pascal e C. 3ª ed., Cengage Learning, 2010.
  2. PEREIRA, Sílvio do Lago. Estruturas de dados fundamentais: conceitos e aplicações. 8ª ed., Erica, 1996.
  3. ESZWARCFITER, Jaime Luis, MARKENZON, Lilian. Estruturas de dados e seus algoritmos. 3ª ed., LTC, 2010.
  4. FEOFILOFF, Paulo. Algoritmos em linguagem C. 23ª ed., Campus, 2009.
  5. AGUILAR, Luis Joyannes. Programação em C++: algoritmos, estruturas de dados e objetos. 2ª ed., Bookmann, 2008.

REFERÊNCIAS COMPLEMENTARES

  1. TENENBAUM, Aaron M.; LANGSAM, Yedidyah; AUGENSTEIN, Moshe. Estruturas de dados usando C. Makron Books, 1995.
  2. EDELWEISS, Nina; GALANTE, Renata. Estruturas de dados. Bookman, 2009.
  3. GOODRICH, Michael T.; TAMASSIA, Roberto. Estruturas de dados e algoritmos em java. 4ª ed., Bookman, 2007.
  4. ASCENCIO, Ana Fernanda Gomes. Estruturas de dados. Pearson, 2011.
  5. LAFORE, Robert. Estruturas de dados e algoritmos em Java. Ciência Moderna, 2005.
  6. GONÇALVES, Edson. Dominando Java Server Faces e Facelets Utilizando Spring 2.5, Hibernate e JPA. Ciência Moderna, 2008.


MATERIAIS DE APOIO

Diários de Aula

29/fev

Trabalho de Estruturas de Dados

- Criar um cadastro de pessoas que tenham as seguintes informações: Nome, idade, peso e altura.

- O sistema deve permitir a pessoa cadastrar, pesquisar, mostrar todos e excluir uma pessoa.

- A estrutura utilizada deve ser uma tabela hash, tamanho 17.

- O cálculo do hash deve levar em conta o nome, idade, peso e altura. A forma como eles se relacionam fica a cargo do aluno, porém é preciso utilizar todos os valores. (exemplo: nome + idade + peso + altura)

- Entregar o trabalho até dia 29/02
- Individual
- Entregar por e-mail para estevan.costa@ifpr.edu.br
- Assunto no e-mail: Trabalho ED 2902
- Arquivos do trabalho compactados em um arquivo com seu nome completo
- Apresentar o trabalho dia 29/02 para o professor, em sala de aula.

27/fev

Fazer trabalho / lista de exercícios do URI.

24/fev

Este código mostra a base de uma tabela hash, com uma funcão que consegue calcular a chave hash a partir de uma palavra.

#include<stdio.h>
int tohash(char nome[50], int tamanho);

typedef struct elemento{
    char nome[50];
    struct elemento *prox;
} elemento;

int main()
{
    elemento inicio[10];
    elemento novo;
    scanf("%s", novo->nome);
    int posicao = tohash(novo->nome, 10);
    inicio[posicao] = novo;

}

int tohash(char nome[50], int tamanho)
{
    int total = 0, i;
    for(i=0; nome[i]!= '\0'; i++)
    {
        total += (nome[i] * 251);
    }
    return total %tamanho;

}

22/fev

#include<stdio.h>

//int hash(int valor, int tamanho);
int hash(char valor, int tamanho);

void main()
{
    char valor;
    int chave;
    scanf("%c", &valor);
    chave = hash(valor, 15);
    printf("A chave eh: %d", chave);
}

int hash(char valor, int tamanho)
{
    int retorno = valor % tamanho;
    return retorno;
}

int hash(int valor, int tamanho)
{
    int retorno = valor % tamanho;
    return retorno;
}

17/fev

Os exercícios deverão ser realizados considerando uma "árvore base", que será passada em sala de aula, e valores sobre características pessoais. Ao entregar as respostas, coloque junto de cada letra o valor utilizado. Trabalho Individual, e para entregar em sala, no dia 17.

Valores Próprios:

A - Idade (em anos): 
B - Dia do Nascimento: 
C - Mês do Nascimento * 2: 
D - Ano do Nascimento / 100 (exemplo: 1985 / 100 => 19,85 => 19):
E - Peso sem casa decimal:
F - Últimos 2 digitos da altura (exemplo 1,84 -> 84):
G - Número do seu calçado:
H - Número de Irmãos que possui:

Caso algum valor próprio se repita, ou o valor já exista na árvore base, adicione 1 até ficar um valor único. Após determinar os números acima, e considerando a árvore base, faça:

1) Inserir os elementos na seguinte ordem: A, B, C, D, E, F, G, H. Depois, excluir os elementos na seguinte ordem: 50, 25, 75.

2) Inserir os elementos na seguinte ordem: B, D, F, H, A, C, E, G. Depois, excluir os elementos na seguinte ordem: 75, 25, 50

3) Inserir os elementos na seguinte ordem: A, B, C, D, H, G, F, E. Depois, escrever o resultado quando realizado o caminhamento In-Ordem, Pós-Ordem e Pré-Ordem.

4) Inverter o sinal de TODOS os valores (tanto da árvore base, quanto da árvore, quanto dos valores pessoais) e reinserir os valores na seguinte ordem: -50, -25, -75, -5, -37, -63, -100, -A, -B, -C, -D, -E, -F, -G, -H.

15/fev

Exercício: De acordo com a legislacão javaiana, um servidor público pode ter até 2 funcionários trabalhando para ele. Cada um destes funcionários pode ter outros 2 funcionários, e assim por diante. Crie um sistema que faca o seguinte:

1- Guarde os seguintes dados dos funcionários:código, nome, salario, custo para o governo. O nome é o nome do funcionário. O código é um número inteiro que ajuda a identificar a pessoa dentro do congresso (este número é único). O salário é quanto ele ganha (em R$), e o custo para o governo é a somatória do salário de todos os funcionários que trabalham para ele, mais seu próprio salário.

2- Será utilizado o campo da código para realizar a ordenacão dos elementos.

3- O sistema deve permitir a pessoa digitar o código e o sistema informar os dados do funcionário, bem como o código e o nome de todos os seus subordinados. Além disso, o sistema deve mostrar quem é o chefe dele.

4- Se a pessoa A é funcionário de B, e B é funcionário de C, então A também é funcionário de C.

Entregar até dia 21/02, via e-mail, com Assunto (Trabalho ED Arvore Binária), e com seu nome no arquivo (pode ser seu nome na pasta).

10/fev

06/fev

03/fev

16/dez

09/dez

Apresentação da Lista Duplamente Encadeada e Lista Duplamente Encadeada Circular Códigos feitos na sala de aula, de uma lista encadeada, todo comentado

Exercício de Avaliacão para Entregar dia 23/12.

07/dez

Reforço de Lista Encadeada. Demonstração da lista circular. Exercício de Reforço para Entregar dia 21/12

21/out

Estrutura de dados Fila.

19/out

Estrutura de dados Pilha.

14/out

07/out

Revisão de desenvolvimento em C (Utilização de structs, formas de se embaralhar elementos em um mesmo vetor).

30/set

Apresentação da disciplina.

Revisão de desenvolvimento em C (Utilização de Vetores e estruturas de repetição).