TADS:Estruturas de dados (2015-2)
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
- ZIVIANI, Nívio. Projeto de algoritmos com implementações em Pascal e C. 3ª ed., Cengage Learning, 2010.
- PEREIRA, Sílvio do Lago. Estruturas de dados fundamentais: conceitos e aplicações. 8ª ed., Erica, 1996.
- ESZWARCFITER, Jaime Luis, MARKENZON, Lilian. Estruturas de dados e seus algoritmos. 3ª ed., LTC, 2010.
- FEOFILOFF, Paulo. Algoritmos em linguagem C. 23ª ed., Campus, 2009.
- AGUILAR, Luis Joyannes. Programação em C++: algoritmos, estruturas de dados e objetos. 2ª ed., Bookmann, 2008.
REFERÊNCIAS COMPLEMENTARES
- TENENBAUM, Aaron M.; LANGSAM, Yedidyah; AUGENSTEIN, Moshe. Estruturas de dados usando C. Makron Books, 1995.
- EDELWEISS, Nina; GALANTE, Renata. Estruturas de dados. Bookman, 2009.
- GOODRICH, Michael T.; TAMASSIA, Roberto. Estruturas de dados e algoritmos em java. 4ª ed., Bookman, 2007.
- ASCENCIO, Ana Fernanda Gomes. Estruturas de dados. Pearson, 2011.
- LAFORE, Robert. Estruturas de dados e algoritmos em Java. Ciência Moderna, 2005.
- GONÇALVES, Edson. Dominando Java Server Faces e Facelets Utilizando Spring 2.5, Hibernate e JPA. Ciência Moderna, 2008.
MATERIAIS DE APOIO
- Curso: Linguagem C
- Curso: C Intermediário
- KERNIGHAN, B.W.; RITCHIE, D.M. The C Programming Language, Prentice Hall, 2o ed. 1978.
- Editor VI - Guia de Referência
HISTÓRICO DE PROFESSORES
- TADS:Estrutura de Dados: 2014-2: Evandro Cantú <evandro.cantu@ifpr.edu.br>
- TADS:Estrutura de Dados: 2015-2: Estevan Costa <estevan.costa@ifpr.edu.br>
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
Este código demonstra métodos para calcular a chave da tabela hash tanto para valores inteiros, como para valores char.
#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
- TADS:Estrutura de Dados: codigos1502: Árvore com Menu!
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
- TADS:Estrutura de Dados: codigos1002: Árvore de Busca Binária com Insercão
06/fev
- TADS:Estrutura de Dados: codigos0602: Códigos Para uso em sala
03/fev
- TADS:Estrutura de Dados: Exercicio0302: Exercícios de fixação>
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).