icc2 aula 5 fábio nakano. dúvidas, perguntas precisamos da atividade prática da aula passada para...

Post on 18-Apr-2015

103 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

ICC2 Aula 5

Fábio Nakano

Dúvidas, perguntas

• Precisamos da atividade prática da aula passada para medir algumas coisas.

• Sobre o resumão até o momento em que vi, 22 pessoas tinham entregue.

• Os resumos são a combinação da vivência da pessoa sobre o assunto e do que achou interessante na aula. Às vezes um assunto é mencionado pq se notou sua consequencia na prática, às vezes, pq chamou atenção na aula.

Estrutura do texto

• Algumas pessoas optaram por resumos textuais intercalando definições, isso resulta num texto bom para ler, mas pode “esconder” conceitos e definições.

• Outros fizeram um glossário: termo, definição, o que é muito bom para o objetivo que temos.

• Algumas pessoas têm dificuldade em escrever e usam termos pouco precisos. Geralmente é consequencia da falta de algum conceito relacionado. Estas pessoas devem procurar esclarecer esses pontos com colegas ou com o professor, mas não podem deixar como está (TCC).

Tipificação

• Programam e têm os conceitos estruturados, estão confortáveis com os conceitos

• Programam e sabem as consequencias práticas dos conceitos, mas têm dificuldade em enunciar o conceito

• Programam em outras linguagens, sabem os conceitos, mas às vezes misturam (virtual ou friend em JAVA)

• Programam e dependem das aulas de ICC2 para firmar conceitos.

• Aprenderam a programar em ICC1, têm pouca vivência em programação, os conceitos ainda não estão arraigados. (Dúvidas, testes, consultas)

• “Aprendizado por exemplo” requer complementação

A parte de programação/JAVA acabou.

• ... Quem tiver dúvidas pode perguntar!• ... De vez em quando vou passar um ou outro

comando e pedir uma ou outra implementação.

O que é um computador?

Descrevam instâncias do objeto

Quais são os recursos de um computador?

Vamos classificar, no sentido OOP da palavra!

Chegamos a um modelo abstrato de computador.

Computador é uma máquina

• Como tal tem um conjunto de recursos• Estes recursos têm limite.• Computador é uma máquina que recebe uma

sequencia de entrada e uma sequencia bem definida de instrucoes, resultando em nova informação (ITC).

Modelo de Computação

• AF (ITC)• Turing (ITC)• RAM (Von Neumann)• PRAM

I o KIKo??

O que queremos dos nossos programas?

• Executar eficientemente• Usar bem os recursos da máquina• Resolver em tempo razoável

RAM - Modelo de Von Neumann

Dispositivo de Entrada Processador

Dispositivo de

Saída

Memória

Considerando o modelo VN, Quais são os recursos da máquina?

Recursos a analisar

• Recursos limitantes sob o modelo de VN– Tempo de processamento– Memória utilizada– Tempo de acesso à memória

• Tempo de desenvolvimento não é limitante da máquina, mas do projeto. OOP ajuda nisso tb!

Tempo de processamento

• Depende do tipo de máquina• Do tempo de execução de cada instrução• Da qualidade do programa• Da específica instância do problema

Tempo de execução pode ser diretamente medido

• starttime=System.nanoTime(); /* java.util.* */

Ordena_lote_coelho

0 10000 20000 30000 40000 50000 600000

5000000000

10000000000

15000000000

20000000000

25000000000

Tempo de execução (ns)

Ordena_lote_coelho

0 10000 20000 30000 40000 50000 600000

200000000

400000000

600000000

800000000

1000000000

1200000000

1400000000

Número de comparações

Dificuldades em se usar tempo de execucão

Experimento coletivo

• Construir uma classe “criador” que “cria” coelhos, e entrega lotes de coelhos para a loja_de_coelhos

• Estes coelhos têm alturas atribuídas aleatoriamente (Random rng = new Random(); rng.nextInt() % 30)

• Na classe compara (ou nas subclasses), incluir código para contar o número de comparações.

• Dentro da classe loja_de_coelhos, implementar um método para ordenar os coelhos.

• Nesse método, armazenar, para cada ordenação feita, o tempo transcorrido, o número de comparações e a quantidade de coelhos por lote. Gravar em um arquivo texto.

Experimento coletivo

• Dividir a turma em grupos. Um grupo fará testes com n pequeno (de 5 a 500 coelhos por lote)

• Outro com n grande (500 a 50000 coelhos por lote)• Outro com n muito grande (50000+ coelhos por lote)• Enviar esses resultados pelo CoL, juntamente com

uma descrição da máquina (Intel Core T5340 2G de RAM, Windows Vista 64-bit) eu me encarrego de concatenar os resultados prá gente ver no que deu.

Resultado esperado:

Conclusão esperada

• Tempo de execução flutua muito e depende de máquina.

• Em algoritmos baseados em comparações, o número de comparações é proporcional ao tempo de execução.

• Numero de comparações é independente de máquina.

Isso nos leva a...

Análise de Algoritmos e Complexidade

Complexidade Assintótica

top related