MAC115 - Introdução à Computação
Física/Bacharelado - 2o. Semestre de 2002 - Turma 24
Sinopse das aulas
- 6/8/2002 Discussão inicial sobre a disciplina. O computador a papel.
- 9/8/2002 Introdução à máquina TOY. Exemplos de programas: exemplo 1, sum2.toy.
- 13/8/2002 A máquina TOY (continuação). Endereçamento indireto.
Exemplo: fibonacci.toy.
- 16/8/2002 A máquina TOY (continuação). Discussão do programa fibonacci.toy. Endereçamento indireto e
vetores; laços. Implementação de funções. Exemplo: function.toy.
- 20/8/2002 Um simulador TOY: toysim.c.
Programa executável para Winbugs: toysim.exe. Exemplo de execução: exemplo.txt. Algoritmos em
pseudocódigo. Cálculo de potências de inteiros, cálculo dos números de
fibonacci. Alguns exercícios iniciais do Caderno de
Exercícios.
- 23/8/2002 Mais alguns exercícios do Caderno de Exercícios.
Observação. Uma vez que começarmos a implementar estes algoritmos
em C, os programas estarão disponíveis nesta página (veja também as soluções
na pagina do Caderno de Exercícios).
- 27/8/2002 Mais exercícios do Caderno de Exercícios: 1.11, 1.12, 1.13,
1.14, 1.17, 1.18 (em parte).
- 30/8/2002 Introdução ao C. Anúncio do EP1. Alguns
programas em C:
hello.c,
soma2a.c,
soma2b.c,
soma_ate0.c,
soma100.c,
soma_n.c,
num_neg.c,
acha_N.c,
prog1.5.c,
prog1.5for.c,
fatorial.c,
fatorial_b.c,
fatorial_for.c.
- 3/9/2002 Semana da Pátria
- 6/9/2002 Semana da Pátria
- 10/9/2002 Ordenação de três números: prog1.20.c, prog1.20b.c, prog1.20c.c. Expressões booleanas; teste
para anos bissextos: bissexto.c, bissexto2.c. Tabela de
precedência do C. Repetições encaixadas. Fatoração de um inteiro:
fatores.c. O problema da tabuada: tabuada5.c.
- 13/9/2002 Mais repetições encaixadas.
- Faça um programa que, dado um inteiro n, imprime uma
saída como esta (note o alinhamento das
colunas). [Uma solução.]
- Faça um programa que, dado um inteiro n, imprime uma
saída como esta (note o alinhamento das
colunas). [Uma solução.]
Variáveis do tipo double. Entrada e saída para o tipo
double (%lf e %g). Séries: estimativa de
e (eee.c).
- 17/9/2002 Mais séries: série para exp
x (exp.c). Uma série um pouco
mais complicada (estude este exemplo!): estimativa de
arctan x (arctan.c). Note
que você pode estimar pi calculando arctan 1.
A biblioteca math. Exemplos de uso: exp2.c, arctan2.c.
- 20/9/2002 Três possíveis critérios de parada para somas de séries: exp2.c (como antes), exp2epsilon.c, exp2indif.c [outras formas de controlar o
laço: exp2indif2.c, exp2indif3.c]. Estimativa de log(1 -
x): log.c.
Dados um número real a>0 e um real positivo epsilon, calcular uma
aproximação da \sqrt{a} através da seqüência de números abaixo. Tome
r0 = a e rn+1 = (1/2) (rn+
a/rn). A aproximação será o primeiro valor rn+1
tal que |rn+1-rn| < epsilon [uma solução em C].
- 24/9/2002 O problema do 3x+1 (Problema de Collatz): collatz.c.
- Exercício. Altere o programa collatz.c para que ele imprima o maior valor
de f^(m)(x) que ele encontra para um dado x. Por
exemplo, para x = 3, o seu programa deve imprimir
16.
A probabilidade de dois números serem coprimos: coprimos.c.
- Exercício. Altere o programa coprimos.c para que ele conte o número de
triplas x, y, z de inteiros em 1,...,n tais que
mdc(x,y,z) = 1. Sabe-se que a razão dentre este número e o
número total de triplas n^3 = n * n * n tende para
1/zeta(3).
- 27/9/2002 Determinação do máximo divisor comum de
uma seqüência de números: m_euclides.c.
A função zeta: zeta.c. Exercícios extras:
- Dizemos que um número inteiro positivo é alternado se os
seus dígitos são alternadamente pares e ímpares. Um inteiro
positivo com um único dígito também é alternado. Exemplos: 543 é
um número alternado; 27052 é alternado, 13478 não é alternado.
Escreva um programa em C que resolva o seguinte problema: Dado um
número inteiro positivo n (com no máximo 9 dígitos),
- imprimir os dígitos de n,
- determinar qual é o total de dígitos pares, e o total de
dígitos ímpares de n,
- verificar se n é um número alternado.
[Uma solucação: dig_alternantes.c]
- Escreva um programa em C que, dado um inteiro n determina se
existe um inteiro k tal que n = k^2. Em caso positivo, seu
programa também deve imprimir o valor de k. [Uma solução: quad_perf.c]
- 1/10/2002 Prova 1! [PDF | PostScript | dvi] Gabarito [PDF | PostScript | dvi]
- 4/10/2002 Funções. Um programa para encontrar uma
aproximação para a raiz quadrada de um número: raiz.c.
- 8/10/2002 Mais funções. O método de Newton (ou Newton-Raphson)
para encontrar uma aproximação de uma raiz de uma equação genérica
f(x) = 0: newton.c. Passagens de
parâmetros, exemplo: ex0.c.
- 11/10/2002 Passagem de variáveis por referência. Dois
exemplos: ex0.c (já visto) e ex1.c. Um exemplo simples em que queremos alterar
o valor de uma variável de main() em uma função, e portanto
precisamos passar a variável "por referência": ordena3.c. Outro exemplo: hm0.c. Construção alternativa: hm1.c (evita passagem por referência). O método
da bisecção para isolar raízes de equações: bisec.c.
- 15/10/2002 Semana da Física
- 18/10/2002 Semana da Física
- 22/10/2002 Discussão sobre o EP2. O tipo char. A tabela ASCII. Aritmética com
caracteres. Entrada e saída: getchar() e putchar().
A biblioteca ctype (veja os protótipos em ctype.txt).
- 25/10/2002 (Tipo char, continuação) Um novo comando de controle
de fluxo: switch. Programa para contar o número de vogais em
um texto: vogais.c. Programa para encontrar
o comprimento maximo de uma palavra em um texto mais_longa.c (foi deixado como exercício).
Variáveis indexadas (vetores). Introdução. Exemplo
inicial com vetores: inverte.c.
- 29/10/2002 Mais exemplos introdutórios com vetores: roleta.c e conta_char.c. Passagem de vetores como
parâmetros em funções; exemplos: leia_imprima_vetor.c. Mais
exemplos: produto_escalar.c.
- 1/11/2002 Recesso escolar
- 5/11/2002 Discussão sobre o EP3. Introdução a matrizes: leia_imprima_matriz.c. Mais
vetores. Busca de um elemento em um vetor: busca.c (com sentinela). Exercício:
implemente uma rotina de busca que não usa uma sentinela (uma solução).
- 8/11/2002 Exercícios com vetores
- 12/11/2002 Semana do break
- 15/11/2002 Feriado
- 19/11/2002 Exercícios com matrizes.
Verifica se uma matriz é simétrica: matriz_simetrica.c; calcula o produto
de uma matriz por um vetor: mz_x_vetor.c
e mz_x_vetor2.c. Este programa
determina se uma matriz é um quadrado latino: latino.c. Exercício. Dizemos que uma
matriz n x n inteira A é uma matriz de permutação se
em cada linha e em cada coluna houver n - 1 elementos nulos e
um único elemento igual a 1. Escreva programa que recebe como
entrada um inteiro n e uma matriz A de inteiros n
x n e verifica se esta matriz é uma matriz de permutação.
Palavras cruzadas. Veja aqui o programa das palavras cruzadas
discutido em sala: p_cruzada.c.
- 22/11/2002 Discussão do EP3.
Outra solução para o problema do quadrado latino: latino_sort.c. Existe um algoritmo mais
eficiente; você consegue descobrir um tal algoritmo?
- 26/11/2002 Exercício 7.16 do caderno de exercícios: uma solução (não verificada). Busca em
vetores ordenados. Busca binária: busca_binaria.c. Alocação dinâmica
de matrizes. Este exemplo está
aqui apenas para tratar do problema de não podermos alocar matrizes
muito grandes estaticamente.
- 29/11/2002 Aula sobre strings. Aula sobre strings. Alguns exemplos que
ilustram o material discutido: str.c, full.c, full1.c, full2.c, my_sort.c.
- 3/12/2002 Discussão de uma prova aplicada no IF em 2000: Prova 2 [HTML | PostScript | pdf] e gabarito [HTML | PostScript]
- 6/12/2002 Prova 2!
- 10/12/2002 Prova Substitutiva.
Calendário
Aug Sep Oct
S M Tu W Th F S S M Tu W Th F S S M Tu W Th F S
1 2 3 1 2 3 4 5 6 7 1 2 3 4 5
4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12
11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19
18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26
25 26 27 28 29 30 31 29 30 27 28 29 30 31
Nov Dec
S M Tu W Th F S S M Tu W Th F S
1 2 1 2 3 4 5 6 7
3 4 5 6 7 8 9 8 9 10 11 12 13 14
10 11 12 13 14 15 16 15 16 17 18 19 20 21
17 18 19 20 21 22 23 22 23 24 25 26 27 28
24 25 26 27 28 29 30 29 30 31
Página principal de MAC115 (IF/Bacharelado - 2o. Semestre de
2002 - Turma 24).
Y. Kohayakawa
<yoshi@ime.usp.br>
Last modified: Tue Dec 3 20:23:08 EDT 2002