1 apresentação da disciplina estruturas de dados i
TRANSCRIPT
1
Apresentação da Disciplina Estruturas de Dados I
22
Sumário
Conceito de Estruturas de DadosTipo de programasProtótiposNecessidade de programação e prototipaçãoConstataçãoConvocaçãoLinguagens de ProgramaçãoLinguagens de “scripting” atuaisLinguagens de programação atuaisO que se espera que os alunos de graduação saibamTipos de aulasCritérios de avaliação
33
Conceito de Estruturas de Dados
Em Ciência da Computação uma estrutura de dados é uma maneira de armazenar dados em computadores de forma a usá-los de maneira eficiente.Uma estrutura de dados bem escolhida pode permitir o emprego de um algoritmo mais eficiente.A escolha de uma estrutura de dados começa com a escolha de uma estrutura de dados abstrata.Uma estrutura de dados bem projetada permite a execução de uma variedade de operações críticas usando tão poucos recursos (tempo de execução e espaço de memória) quanto possível
44
Tipos de programas
Sistemas com longa vida útil sendo desenvolvidos durante largos períodos de tempo Sistemas de Tratamento da Informação Sistemas de Cálculo Outros
Sistemas de apoio à decisão com pequena vida útil, sendo úteis para um momento específico e, portanto, tendo de ser desenvolvidos em curtíssimo período de tempo
55
Protótipos
Protótipos são ferramentas para a criação ou simulação de programas. Estas ferramentas freqüentemente permitem a “colagem” de programas existentes, mesmo que em diversas linguagens de programação.Protótipos de programas são necessários para: Verificar a viabilidade de uma proposta ou de um Sistema pois
conhecimentos recentemente adquiridos são de difícil validação sem testes
Comunicação com os usuários Comunicação com a equipe de desenvolvimento de Sistemas Comunicação empresarial Mostrar desenvoltura, iniciativa e competência
66
Necessidade Programação e Prototipação
O desenvolvimento de Sistemas, para a maioria dos profissionais é atividade para curto prazo em sua vida profissional (5 a 15 anos)A necessidade de programação é atividade para toda a vida profissionalA necessidade programação quase sempre recai na necessidade de geração de protótiposEm geral profissionais constroem de 3 a 20 Sistemas em sua vida profissional mas tem de fazer (ou mandar fazer) um protótipo a cada 20 dias, ou seja, a cada ano da vida profissional se faz (ou se deveria fazer) mais protótipos do que os Sistemas feitos em toda a vida profissional
77
Constatação
O desenvolvimento de Sistemas tem se tornado cada vez mais complexoOs aplicativos são abundantes, flexíveis e poderososOs profissionais programam cada vez menos tornado-se “pilotos de aplicativos”Quem conseguir enfrentar as “feras”, dominando o desenvolvimento de Sistemas, torna-se um profissional de destaqueA maioria dos profissionais procura soluções fáceis
88
Convocação
Evitem as soluções de baixo nível
Enfrentem as “feras”
Sejam melhores do que a concorrência
Destaquem-se da multidão: sejam especiais
O esforço é grande mas de curta duração
O resultado é para toda a vida
99
Linguagens de Programação
Linguagens de Programação são difíceisNão existem mais Linguagens de Programação fáceis desde o advento de Orientação a Objeto, Programação Por Eventos, Linguagens VisuaisLinguagens de Programação permanecem pequeno tempo “em moda”O número de Linguagens de Programação existentes é gigantesco e vai continuar a crescerLinguagens de “scripting” são simples e fáceis mas não servem para Sistemas
1010
Linguagens de “scripting” atuais
JCL
Rexx
WFL
"Shells" Unix (sh, csh, ksh, ...)
Prolog
Perl
Tcl
Python
1111
Linguagens de programação atuais
Para grandes Sistemas Java C++
Para pequenos Sistemas e prototipação VB (Basic) Delphi (Object Pascal) LISP
1212
O que se espera que os alunos de graduação saibam
Necessidades Uma Linguagem de Programação Orientada a Objeto Uma Linguagem Visual Orientada a Eventos
Disponibilidade atual Pascal
Problemas Não há escala para Sistemas desenvolvidos em Pascal Em qual Disciplina (ou disciplinas) serão ensinadas as
linguagens “necessárias”? Será obrigação dos alunos aprender por conta própria?
1313
Linguagens de Programação do Curso de Estruturas de Dados
Os alunos terão a liberdade de escrever os programas exigidos pelo Curso em qualquer linguagem de programação Todavia a facilidade de montagem dos fontes fornecidos por
Bruno Preiss tornará evidente a facilidade e o potencial do reuso de código propiciado pelo paradigma de programação orientado a Objeto.
Para facilitar a aprendizagem serão mostrados os trechos de código que terão de ser incorporados ao programa para obter a funcionalidade desejada, tanto em Java quanto em C++Para os resistentes à Orientação a Objeto serão fornecidos códigos em Programação Estruturada C usados em 1995
1414
Tipos de aulas
Aulas expositivas como “default”Laboratório quando necessárioOs alunos deverão acompanhar a exposição com o material disponível na página do professorOs alunos poderão escolher a linguagem a estudar nas Notas de Aula (Java ou C++)A parte de código deverá ser estudada em sala com o acompanhamento pelo professor cuja tarefa principal será tirar dúvidas
1515
Aprovação por via normal
Provas (peso 2) Primeira e segunda prova alternativas Terceira prova obrigatória
Trabalhos de programação (peso 1) Pilhas e filas Aplicações de pilhas e recursividade Listas e árvores binárias Classificação
1616
Aprovação pela via de pesquisa
Pesquisa de frameworks em outras linguagens Delphi VB
Implementação dos frameworks em outras linguagensAvaliação Apresentações semanais fora do horário de aula cujo
resultado é eliminatório da via de pesquisa (peso 6) Resultado obtido (peso 3) Apresentação para a turma (peso 1)
1717
Programação para o Segundo Período de 2007
18
Material de apoio para as aulasD atas D ia O rdem As s unto Apres entação
28/08/2007 3 1 Apres entação da D is c iplina Apres entaE D 130/08/2007 5 2 Hierarquia de c las s es de B runo P reis s F ramework de B runo P reis s04/09/2007 3 3 Hierarquia de c las s es de B runo P reis s C ontainers T AD06/09/2007 5 4 Hierarquia de c las s es de B runo P reis s E s truturas F undamentais11/09/2007 3 5 P ilhas e F ilas P ilhas e F ilas13/09/2007 5 6 P ilhas e F ilas P ilhas e F ilas18/09/2007 3 7 P ilhas e F ilas P ilhas e F ilas20/09/2007 5 8 Variáveis dinâmicas e C aixa de nós25/09/2007 3 9 L aboratório27/09/2007 5 10 T rans formação e avaliação de expres s ões E xpres s ões Aritméticas02/10/2007 3 11 R ecurs ão R ecurs ividade04/10/2007 5 12 Apres entação do primeiro trabalho09/10/2007 3 13 P rimeira prova11/10/2007 5 14 D eques , L is tas D eques16/10/2007 3 15 L aboratório18/10/2007 5 16 L is tas L is tas O rdenadas e L is tas C las s ificadas23/10/2007 3 17 L is tas L is tas C irculares e L is tas D uplamente E ncadeadas25/10/2007 5 18 Árvores - conceito Árvores30/10/2007 3 19 Árvores - conceito Árvores01/11/2007 5 20 Árvores binárias Árvores de B us ca06/11/2007 3 21 L aboratório08/11/2007 5 22 Apres entação do s egundo trabalho13/11/2007 3 23 S egunda prova15/11/2007 5 P roc lamação da R epública20/11/2007 3 24 L aboratório22/11/2007 5 D ia de Araribóia27/11/2007 3 25 T raves s ia de árvores P ercurs o Não R ecurs ivo em Árvores29/11/2007 5 26 Heaps e F ilas de P rioridade Heaps e F ilas de P rioridade04/12/2007 3 27 Apres entação do terceiro trabalho06/12/2007 5 28 Árvores balanceadas Árvores de B us ca11/12/2007 3 29 C las s ificação C las s ificação13/12/2007 5 30 C las s ificação S hell S ort18/12/2007 3 31 Apres entação do quarto trabalho20/12/2007 5 32 Gerênc ia de memória Gerenc iamento de memória25/12/2007 3 33 R odíz io27/12/2007 5 34 R odíz io01/01/2008 3 35 R odíz io03/01/2008 5 36 T erceira P rova08/01/2008 3 37 T erceira P rova10/01/2008 5 38 VS
19
Influência do Tamanho do Empregador
$86,564*
A Sampling of Average Total Compensation by Company Revenue
Less than $100M
Less than $100M
Less than $100M
Less than $100M
Less than $100M
Less than $100M
Less than $100M
Less than $100M
Less than $100M
$72,257 $43,945 $79,041 $62,252 $69,558 $51,522 $62,585 $73,026 $69,797
$100M to $999.9M
$100M to $999.9M
$100M to $999.9M
$100M to $999.9M
$100M to $999.9M
$100M to $999.9M
$100M to $999.9M
$100M to $999.9M
$100M to $999.9M
$84,137 $49,460 $78,732 $69,422 $70,438 $56,790 $67,994 $74,002 $80,369
$1B to $10B $1B to $10B $1B to $10B $1B to $10B $1B to $10B $1B to $10B $1B to $10B $1B to $10B $1B to $10B
$89,383 $55,509 $86,023 $78,425 $80,451 $67,394 $72,268 $85,011 $83,132
More than $10B
More than $10B
More than $10B
More than $10B
More than $10B
More than $10B
More than $10B
More than $10B
More than $10B
$96,812 $56,590 $89,373 $83,163 $82,565 $70,465 $77,413 $100,185 $89,092
20
Code Project newsletter (13/08/2007)
20
Este sítio é de programação “pesada”. O pessoal que o freqüenta está mais para o desenvolvedor independente do que para o desenvolvedor de grandes Sistemas em equipe.
GNU, GPL, IBM e Sun dão apoio substancial à linguagem Java.
21
Dados da Consultoria TIOBEPosition
Aug 2007 Position
Aug 2006 Delta in Position Programming Language
Ratings Aug 2007
Delta Aug 2006
Status
1 1
J ava 21.768% -0.61% A
2 2
C 15.699% -1.73% A
3 3
(Visual) Basic 10.646% -0.55% A
4 4
C++ 10.111% -0.14% A
5 5
PHP 9.696% +0.06% A
6 6
Perl 5.320% +0.01% A
7 8
C# 3.987% +1.30% A
8 7
Python 2.749% -0.32% A
9 10
J avaScript 2.575% +0.56% A
10 13
Ruby 1.906% +1.10% A
11 12
PL/ SQL 1.833% +0.68% A
12 11
SAS 1.389% -0.60% A
13 19
D 1.251% +0.79% A
14 9
Delphi 1.222% -0.94% A
15 52
Lua 0.645% +0.59% B
16 16
COBOL 0.600% +0.04% B
17 20
ABAP 0.587% +0.18% B
18 15
Lisp/ Scheme 0.585% 0.00% B
19 28
Transact-SQL 0.549% +0.27% B
20 17
Ada 0.537% -0.02% B
22
Dados da Consultoria TIOBE