270 likes | 370 Views
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.
E N D
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!
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
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 Memória Dispositivo de Entrada Processador Dispositivo de Saída
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.* */
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 (Randomrng = newRandom(); 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.
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.