Buscar

Estruturas de Dados - Introdução (Dibio)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

dibio@unb.br
Por que estamos aqui?
dibio@unb.br
Ensinar/aprender
"Education is the acquisition of the art of the 
utilisation of knowledge" (Alfred North 
Whitehead [1861-1947], The Aims of Education, 
1929: 16)
dibio@unb.br
Dados da disciplina
● Estruturas de Dados, Turma E, 2011/2
● Créditos (04-00-00-04)
● 04 aulas (horas)
● 04 ESTUDOS (horas)
● semanalmente (= 8 horas)
● Linguagem de Programação utilizada: C
dibio@unb.br
Assuntos 
● Computação e resolução de problemas 
algorítmicos. Conjuntos, dados compostos e 
abstração de dados. Estruturas básicas para 
representação de informações: listas, árvores, 
grafos, e suas generalizações. Ordenação e busca: 
Arquivos, Ordenação, Busca e Espalhamento 
(“Hashing”). Algoritmos para construção, 
consulta, e manipulação de tais estruturas. 
Desenvolvimento, implementação e testes de 
programas usando tais estruturas em aplicações 
específicas. (POR QUE?)
dibio@unb.br
Estruturas de Dados
● Formas/métodos conceituais e concretos de 
organizar dados para armazenamento e 
manipulação EFICIENTES
● Empregos dessas estruturas de dados no projeto de 
algoritmos eficientes
dibio@unb.br
Requisitos para um bom 
software/programa
● Projeto claro, objetivo
● Fácil manutenção (comentários, modular)
● Confiável (sem erros)
● Fácil para usar (mnemônicos)
● Algoritmos rápidos
● ESTRUTURAS DE DADOS EFICIENTES
● ALGORITMOS EFICIENTES
dibio@unb.br
O que vocês aprenderão?
● Quais são algumas das estruturas de dados comuns
● Quais são algumas maneiras de implementá-las
● Como avaliar a eficiência das mesmas
● Como usá-las para resolver problemas 
interessantes
dibio@unb.br
Material/método indispensável
● Bons livros para ler e entender (ver referências e ir 
a BCE – UnB, ou web)
● Laboratório de programação em C (LINF, linux, 
gcc), praticar e aplicar em projetos
● Aulas e resolução de tarefas 
dibio@unb.br
Professor: Díbio
● CIC (sala ?, módulo 18 ICC)
● dibio at unb.br (correio eletrônico)
dibio@unb.br
Roteiro
● Apresentações e agenda do curso
● Como estudar?
● Papéis em nossa jornada de aprendizagem
● Horários de laboratório
● Afinal, o que é computação?
● O que seria computável?
● Métodos para resolução de problemas, 
computáveis...
● Dados simples, compostos
dibio@unb.br
Agenda do curso (onde? o quê? 
como? e agora?)
● Encontros: 
 2a. e 4a. Aula Expositiva/Provocações 
 LINF (Definir horário com
 atendimento) 
● Avaliação: Presença => 75% 
 Trabalhos Práticos (Prog.C) = 6 
 Provas Escritas = 3
dibio@unb.br
Agenda do curso (onde? o quê? 
quando? como? e agora?)
● Datas para lembrar: 
 
 Provas escritas (28/09) (16/11) (14/12) 
 
 
Trabalhos práticos (04/09) (25/09) (23/10) 
 (06/11) (27/11) (11/12) 
 obs: domingos 
dibio@unb.br
Algoritmo da nota final
Exames={Emaior, Emeio, Emenor} Trabalhos={T1, T2, T3, T4, T5, T6} 
 
 MEx = (1.25xEmaior + 1.0xEmeio + 0.75xEmenor)/3
 Mtr = (T1+T2+T3+T4+T5+T6)/6 
SE (MEx => 5.0 E Mtr => 5.0)
 ENTÃO 
Mfinal = 0.75xMex + 0.25xMtr
 SENÃO 
Mfinal = (Menor valor entre MEx e Mtr)
dibio@unb.br
Referências Bibliográficas
● CORMEN, T. H. et al. Introduction to algorithms. 2nd ed. 
Cambridge: MIT Press, 2001.
● SEDGEWICK, R. Algorithms in C (Parts 1-4, Part 5), 2nd 
ed., Addison Wesley, EUA, 1997.
● RANGEL, J.; CERQUEIRA, R.& CELES, W. Estruturas 
de dados: uma introdução com técnica de programação 
em C, Elsevier Brasil, RJ, 2004.
● TENENBAUM,A.; LANGSAM, Y. & AUGENSTEIN, 
M. Estruturas de dados usando C, Makron Books, SP, 
1995.
● ZIVIANI, N. Projeto de Algoritmos: com implementações 
em Pascal e C, 2a. ed., Thompson, SP, 2007.
dibio@unb.br
Referências Bibliográficas
● DEITEL, Harvey M.; DEITEL, Paul J.. Como programar 
em C. 2. ed. Rio de Janeiro: LTC, c1994.
● KERNIGHAM, B. & RITCHIE,D. The C Programming 
Language, Prentice-Hall, EUA, 1988.
● SCHILDT, Herbert. C completo e total. São Paulo: 
Makron, 1991. 
dibio@unb.br
Referências Bibliográficas
● + notas de aula;
● material disponível na internet (obs: “links” 
disponibilizados no ambiente do curso (moodle));
● outros livros sobre o assunto disponíveis na BCE.
dibio@unb.br
Ferramentas para o laboratório
● Ambiente linux (ubuntu, redhat, slackware, ...)
● Editor de programas (gedit, kwrite, emacs, 
codeblocks)
● Compilador (gcc, versão 4.1 ou acima)
● Depurador (xgdb)
● Obs: todos os softwares são de domínio público, 
gratuitos, e cópias podem ser instaladas em 
computadores pessoais. 
 
dibio@unb.br
Inscrição no ambiente “moodle”
● Todos os alunos devem se cadastrar no ambiente 
“moodle” do -aprender- para acesso e entrega dos 
trabalhos, bem como de acompanhamento das 
atividades do curso.
● Como?
– 1) tenha um conta de correio eletrônico pessoal (e.g. 
www.hotmail.com, www.yahoo.com.br, 
www.gmail.com, e outros)
– 2) Acesse http://aprender.unb.br/
dibio@unb.br
Inscrição no ambiente “moodle”
– 3) Após o preenchimento da inscrição, acesse 
http://aprender.unb.br/ e faça as opções:
● Depto. de Ciência da Computação
● 116319 Estruturas de Dados – Turma E
● O sistema pedirá um código de acesso à disciplina, que é: 
ed-20112
●
● Fazer sua inscrição o quanto ANTES 
dibio@unb.br
Como estudar?
● Problemas contextualizados;
● Objetivo é resolvê-los, estabelecendo um processo 
contínuo (com sucessivos refinamentos) de 
aprendizagem;
● Questionamentos e uso de ferramentas (leitura, 
exercícios) reforçam caminhos;
● 1) Problematizar
● 2) Questionar e Praticar
● 3) Refinamentos
dibio@unb.br
Como aprender?
dibio@unb.br
Como aprender?
● Necessário ter: MOTIVAÇÃO
 CURIOSIDADE
● RESOLVER PROBLEMAS (PENSAR 
ATIVAMENTE), transformando informação em 
conhecimento próprio
● FASES: Apreende, Conceitualiza, Aplica
● SEJA PRÓ-ATIVO(A) e CRIATIVO(A)!
dibio@unb.br
Ensinar/aprender
"My intention is not, however, to [simply] impart 
information, but to throw the burden of study upon 
you. If I succeed in teaching you to observe, my 
aim will be attained." Louis Aggasiz [1807-1873], 
Swiss-American Scientist.
dibio@unb.br
Ao estudar...
● O importante é interpretação e análise, pois o 
objetivo é ficar apto a resolver problemas.
● Perguntem-se, estabeleçam conexões, leiam muito 
e tentem resolver exercícios frequentemente.
● Não deixem assuntos, dúvidas se acumularem.
● ORGANIZAÇÃO + CRIATIVIDADE
dibio@unb.br
Um processo de aprendizagem 
proposto
Problematizar (Aulas)
Questionar e Praticar (Leitura e Exercícios)
Refinamentos (Realimentação e Avaliação)
dibio@unb.br
Papéis (funções) no processo de 
aprendizagem
● Professor = Orientador (Propõe problemas, indica 
caminhos, realimenta, avalia)
● Estudante = Ativo participante (não somente 
ouvinte), busca soluções, lê e pratica fora da sala 
de aula, dispõe-se a resolver problemas 
independentemente.
dibio@unb.br
Afinal, o que é computação?
● Máquinas para computar
● O imaginário e o computador
● Esquema e componentes típicos de um 
computadordibio@unb.br
“Yes, I share your concern: how to program well —though a 
teachable topic— is hardly taught. The situation is similar 
to that in mathematics, where the explicit curriculum is 
confined to mathematical results; how to do mathematics 
is something the student must absorb by osmosis, so to 
speak. One reason for preferring symbol-manipulating, 
calculating arguments is that their design is much better 
teachable than the design of verbal/pictorial arguments. 
Large-scale introduction of courses on such calculational 
methodology, however, would encounter unsurmountable 
political problems.” Edsger Dijkstra (2000)
dibio@unb.br
O imaginário e o computador
dibio@unb.br
O imaginário e o computador
dibio@unb.br
Na verdade, sistema típico...
dibio@unb.br
Memória, endereços, instruções
dibio@unb.br
Exemplos
● Estão em toda parte (automóveis, celulares, 
aparelhos de tevê, eletrodomésticos, trânsito, 
telecomunicações, bancos, bolsas de valores, 
hospitais, fábricas, escolas, corpo 
humano(próteses eletrônicas), aviões, espaço, etc)
dibio@unb.br
Processo computacional
Entrada
Saída
Algoritmo (sequência precisa de atividades
a serem executadas, e que transformam o conjunto de entrada 
na saída desejada)
dibio@unb.br
O que seria computável?
● Processos com algoritmos conhecidos, os quais 
param (terminam) em tempo finito.
● Buscamos então descobrir, estudar, analisar 
ALGORITMOS, para resolver problemas, e 
depois transferir as soluções (algoritmos) para que 
o computador faça de maneira diligente e 
repetitiva
dibio@unb.br
Métodos para resolução de 
problemas, computáveis...
● ESTRUTURAR (expressões, instruções, 
procedimentos (funções) independentes)
● “Dividir e conquistar”, refinamentos sucessivos a 
partir do ciclo (entrada, solução, saída) buscando 
com que partes (procedimentos) repetitivas sejam 
identificadas e isoladas;
● O mesmo conjunto de instruções, na mesma 
ordem, deve produzir sempre a mesma saída a 
partir de entradas iguais. 
dibio@unb.br
Dados simples
● Dados numéricos (e.g. inteiro, real)
● Dados simbólicos (e.g. caracteres)
dibio@unb.br
Dados Compostos
● Homogêneos (e.g. vetor, matriz, cadeia de 
caracteres (“string”))
● Não necessariamente homogêneo (e.g. Estrutura)
● Conjuntos, formas de inclusão, acesso, 
organização, algoritmos eficientes para uso em 
conjuntos e organizações diversas. (e.g. 
Sequências, prioridade, hierárquicos, fluxos) 
dibio@unb.br
Problemas a lidar
● Como compactar imagens? Dados heterogêneos
● Como acessar, processar esses dados?
● Como organizar prioridade em acesso, processos, 
fluxos?
● Como comparar grande quantidade de dados?
● Como representar e processar jogos, estratégias, 
processos em automação?
dibio@unb.br
Aprender
"The important thing is not to stop questioning. 
Curiosity has its own reason for existing. One 
cannot help but be in awe when he [or she!] 
contemplates the mysteries of eternity, of life, of 
the marvelous structures of reality. It is enough if 
one tries merely to comprehend a little of this 
mystery every day. Never lose a holy curiosity." 
(Albert Einstein [1879-1955]) 
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40

Outros materiais