TADS:Estrutura de Dados: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
 
(6 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 1: Linha 1:
=Plano de ensino=
'''Semestre''':
==1. IDENTIFICAÇÃO==
=Objetivo=
'''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.
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.
=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.


==5. PROCEDIMENTOS METODOLÓGICOS==
=Planos de ensino=
===Metodologia de ensino===
* [[Media:Plano-ensino-estruturas-2016.2.pdf | 2016/2]] (Prof. Júlio César Royer)
* Aulas expositivas em laboratório de informática com projetor.
* [[TADS:Estruturas de dados (2015-2)|2015/2]] (Prof. Estevan Braz Brandt Costa)
* Uso de ambiente de programação para desenvolvimento das atividades
* [[TADS:Estrutura de Dados: 2014-2|2014/2]] (Prof. [[Usuário:Evandro.cantu | Evandro Cantú]])
* 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==
#[[Mídia:EstruturaDadosC.pdf | 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==
*[http://www.mtm.ufsc.br/~azeredo/cursoC/c.html Curso: '''Linguagem C''']
*[http://homepages.dcc.ufmg.br/~joaoreis/Site%20de%20tutoriais/c_int/index.htm Curso: '''C Intermediário''']
*[[Mídia:LinguagemC.pdf | KERNIGHAN, B.W.; RITCHIE, D.M. The C Programming Language, Prentice Hall, 2<sup>o</sup> ed. 1978.]]
*[http://aurelio.net/curso/material/vim-ref.html '''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.
 
<syntaxhighlight lang="c">
#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;
 
}
 
</syntaxhighlight>
 
===22/fev===
 
Este código demonstra métodos para calcular a chave da tabela hash tanto para valores inteiros, como para valores char.
 
<syntaxhighlight lang="c">
#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;
}
 
 
 
</syntaxhighlight>
 
===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===
*[[Mídia:exemplostruct.zip | Exemplo de Uso do Struct]]
*[[Mídia:bubblequick.zip | Bubble Sort e Quick Sort]]
*[[Mídia:binariaemerge.zip | Busca Binária e Merge Sort]]
 
===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
*[[Mídia:LE0912.zip | Exemplo Lista Encadeada]]
Exercício de Avaliacão para Entregar dia 23/12.
*[[Mídia:segundaprova.zip | Trabalho de Avaliação]]
 
===07/dez===
Reforço de Lista Encadeada. Demonstração da lista circular.
Exercício de Reforço para Entregar dia 21/12
*[[Mídia:RecuperacaoLista.odt | Exercício de Recuperação]]
 
===21/out===
Estrutura de dados Fila.
*[[Mídia:CodigoFila.zip | Exemplo de Fila]]
 
===19/out===
Estrutura de dados Pilha.
*[[Mídia:CodigoPilha.zip | Exemplo de Pilha]]
 
===14/out===
*[http://latinoware.org/ Evento: '''Latinoware''']
 
===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).


----


[[Categoria:TADS]]
[[Categoria:TADS]]

Edição atual tal como às 18h06min de 21 de novembro de 2016

Semestre: 2º

Objetivo

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.

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.

Planos de ensino