Computação I
Ciências Moleculares - 2o. Semestre de 2001
Aulas
- 31/7/2001 Discussão inicial; questionário.
- 2/8/2001 A noção de algoritmo: o algoritmo de Euclides. Primeira
discussão sobre C.
- 7/8/2001 Exemplos de programas em C: hello.c,
ex1.c,
euclides.c.
- 9/8/2001 Mais exemplos. A função
rand()
da biblioteca
stdlib
; exemplos de uso: randint.c, randreal.c. Com semente: randint2.c. Bits e figuras aleatórias: randfig1.c, randfig2.c (saída: randfig2.out).
- 14/8/2001 A ruína do jogador: gamblers.c, gamblers_many.c; saídas: gamblers.out, gamblers_many.out.
- 16/8/2001 Introdução ao UNIX. Veja o Curso Introdutório ao
Linux.
- 21/8/2001 UNIX (continuação). Entrada e saída padrão. A noção de
filtro, pipes, e redirecionamento. Processos em 1o. e 2o. planos.
- 23/8/2001 A máquina TOY de Sedgewick. Exemplos de programas: sum.toy, sum2.toy. Um
simulador do TOY: toysim.c. Execuções dos
programas exemplo acima: toysim.out.
- 28/8/2001 Mais exemplos de programas TOY: horner.toy, fibonacci.toy (execuções: toysim.out). O fibonacci.toy usa endereçamento
indireto de memória (implementação de "vetores"). Discussão sobre a ruina do
jogador.
- 30/8/2001 Chamada de funções: function.toy; execução: function.out. Exercícios sugeridos (do curso do
Sedgewick): lista 0, lista 1, lista
2. Anúncio do Exercício Programa
1.
- 4/9/2001 Semana da Pátria. Recesso escolar
- 6/9/2001 Semana da Pátria. Recesso escolar
- 11/9/2001 (Yoshi nos EUA; não houve aula)
- 13/9/2001 Aula programada, mas cancelada, devido aos ataques terroristas
nos EUA (vôos cancelados).
- 18/9/2001 (Entrega do EP1) Estruturas de dados, introdução.
Vetores e listas ligadas. Exemplos de uso: eratostenes.c e josephus.c.
- 20/9/2001 Mais sobre listas ligadas.
- 25/9/2001 (Yoshi fora do país; Renato deu a aula) Conceitos básicos de
UNIX, processos.
- 27/9/2001 (Yoshi fora do país; Renato deu a aula) Conceitos básicos de
UNIX, arquivos.
- 2/10/2001 De volta a estruturas de dados. Mais exemplos com listas
ligadas: reverse.c. Exercício: estude list_sort.c.
- 4/10/2001 Pilhas. A interface: STACK.h; implementação com vetores (STACK.c) e com listas ligadas (STACK_LL.c). Exemplo de uso: RPN.c, RPN.out. Anúncio do
segundo EP.
- 9/10/2001 (Yoshi fora do país; não houve aula)
- 11/10/2001 (Formatura da Turma 7; Yoshi fora do país; não houve aula)
Estudem o seguinte exemplo, que pode ser útil para o EP2: uma calculadora RPN simples.
- 16/10/2001 Breve discussão sobre o programa list_sort.c. Uma curiosidade: o programa merge_sort.c é baseado no algoritmo de
ordenação por intercalação, que é muito mais eficiente que o
algoritmo elementar usado no programa list_sort.c. De fato, para ordenar n
inteiros, list_sort.c demora tempo
proporcional a n^2 e merge_sort.c
demora tempo proporcional a n log n (veja uma comparação grosseira
entre esses programas em sort.out). Mais sobre
pilhas. Programa para converter uma expressão em notação in-fixa para a
notação pós-fixa (notação polonesa reversa): convert.c, convert.out.
- 18/10/2001 Discussão sobre o EP2: discussão sobre o programa-exemplo
dado no enunciado (veja esse diretório).
Leitura de linhas de comprimento arbitrário [getline.h, getline.c];
um exemplo de uso: linha.c, linha.out.
- 22/10/2001 (Aula extra) Exemplo de uma calculadora primitiva para
polinômios: veja esse diretório. Leitura de
linhas de comprimento arbitrário (continuação) [getline.h, getline.c];
um exemplo de uso: linha.c, linha.out.
- 23/10/2001 Mais discussão sobre a calculadora de polinômios.
Comentários sobre o gdb (veja documentação,
por exemplo, nesta página).
- 25/10/2001 Veja os programas de ordenação list_sort.c e merge_sort.c com entradas diferentes nestes
diretórios: list_sort2 e merge_sort2.
- 30/10/2001 Recursão. Exemplos iniciais: soma.c, binom.c, bisec.c. Mais exemplos: prog5.1.c (fatorial, nunca use essa implementação),
prog5.2.c (3x+1), prog5.3.c (Euclides), prog5.5.c (manipulação de listas).
- 1/11/2001 (Recesso escolar)
- 6/11/2001 Mais exemplos de recursão. Curva das dobraduras (dragon.c e nogard.c).
Quicksort (veja o diretório Quicksort).
- 8/11/2001 Um pacote gráfico simples (do livro de Eric
Roberts). Veja o material do livro aqui: fontes do Roberts.
Pegue os Makefiles genéricos para compilar programas que usam os pacotes do
Roberts neste diretório. O programa para
gerar o fractal de Koch: koch.c. Exemplos
de curvas de Koch: graphics_k60.ps, graphics_k61.ps, graphics_k62.ps, graphics_k63.ps, graphics_k64.ps, graphics_k65.ps.
- 13/11/2001 Mais exemplos de uso do pacote gráfico. Curvas de Hilbert:
graphics1.ps, graphics2.ps, graphics3.ps, graphics4.ps, graphics5.ps, graphics6.ps, graphics7.ps, graphics8.ps. Exercício fortemente
recomendado. Faça um programa que desenha o logotipo da SBM, a
Sociedade Brasileira de Matemática! O seu programa deve gerar figuras como
as seguintes: graphics_sbm1.ps,
graphics_sbm2.ps, graphics_sbm3.ps, graphics_sbm4.ps.
- 15/11/2001 (Recesso escolar)
- 20/11/2001 Renato deu aula. (Material a ser disponibilizado)
- 22/11/2001 Renato deu aula. (Material a ser disponibilizado)
- 27/11/2001 Recapitulação sobre listas ligadas. Manipulação de listas:
reverse.c. Ordenação das células de uma lista
(insertion sort): list_sort.c.
Exemplo de uso de lista circular: josephus.c.
Uma biblioteca para manipulação de listas ligadas: veja este diretório.
- 29/11/2001 (Aula extra) Continuação.
- 30/11/2001 Continuação.
- 4/12/2001 Ordenação de listas usando a biblioteca de manipulação de
listas: list_sortBib.c (veja o
diretório todo: Listas). Tipo mais complexo: Item.h e Item.c. Veja o diretório todo: Lista2. Exercício: escreva um módulo
Item.c/Item.h
para ordenar inteiros. (Uma solução: veja este
diretório. Não deixe de compilar sua solução para
adquirir experiência com programas escritos em vários módulos).
- 5/12/2001 (Aula extra) O enunciado (formal) do EP3
está finalmente disponível. Note que você tem duas opções para este EP.
Recursão: torres de Hanói, o
problema da mochila.
- 6/12/2001 Continuação: programação dinâmica, knap2.c. Um programa para gerar instâncias do
problema da mochila: knap_gera.c. Exemplo de
execução: knap2.out.
- 11/12/2001 Veja esta página.
- 12/12/2001 (Continuação)
- 13/12/2001 (Continuação)
August 2001 September 2001 October 2001
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1 2 3 4 5 6
5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31
30
November 2001 December 2001 January 2002
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 1 1 2 3 4 5
4 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 12
11 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 19
18 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 26
25 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 30 31
30 31
Página principal de Computação I (CCM - 2o. Semestre de 2001).
Y. Kohayakawa
<yoshi@ime.usp.br>
Last modified: Wed Dec 12 12:48:57 BRST 2001