 |
20/02: |
Apresentação. O que é um computador: seus componentes e seu
funcionamento básico.
|
|
 |
01/03: |
Primeiros programas em linguagem informal: declarações de
variáveis, comandos de entrada e de saída, comandos de
atribuição. Exercício: calcular a soma (diferença, produto,
quociente) de dois números dados. |
Comando condicional ("se ... então ..."). Exercício: dados dois
números, imprimir o maior deles. |
Comando de repetição ("enquanto"). Exercício: dada uma seqüência
de numeros inteiros diferentes de zero, terminada por zero,
imprimir a sua soma. |
|
 |
06/03: |
Exercícios:
|
Dada uma seqüência de numeros inteiros diferentes de zero,
terminada por zero, imprimir o seu produto. |
|
Dada uma seqüência de numeros inteiros diferentes de zero,
terminada por zero, imprimir o maior número da
seqüência. |
|
Dados três números inteiros, imprimi-los em ordem
crescente. |
|
Uso de variáveis contadoras e de comandos de atribuição como
n <- n+1 e n <- n-1. Exercício: dado n e uma seqüência de n
números inteiros, calcular sua soma. |
|
 |
08/03: |
Introdução à linguagem C: declarações de variáveis, comandos
de entrada e de saída, comandos de atribuição, comandos
"if ... else" e "while". |
Exercícios:
|
Dados x inteiro e n natural, calcular x elevado à n. |
|
Dada uma seqüência de numeros inteiros diferentes de zero,
terminada por zero, contar quantos números positivos e
quantos números negativos aparecem na seqüência. |
|
Fazer em casa: 1.6, 1.7 e 1.9 do caderno de
exercícios. |
|
 |
13/03: |
Resolução dos exercícios 1.6, 1.7 e 1.9 do caderno de
exercícios. |
Uso de "se ... senão" dentro de um "senão". Seqüências de
comandos da forma "se ... senão se ... senão se ... senão
...". Exercício: dadas as notas de n alunos, calcular
quantos foram aprovados (nota maior ou igual a 50), quantos
ficaram de recuperação (nota menor que 50 e maior ou igual a
30) e quantos foram reprovados (nota menor que
30). |
|
 |
15/03: |
Condições compostas e os conectivos lógicos "e" (&&,
em C) e "ou" (||, em C). O operador lógico de comparação para
verificação de igualdade (==, em C). |
Exercícios:
|
Dadas as notas de n alunos, calcular quantos ficaram de
recuperação (nota menor que 50 e maior ou igual a
30). |
|
Dadas as notas de n alunos, calcular quantos não ficaram de
recuperação (nota maior ou igual que 50 ou nota menor que
30). |
|
Dados a uma nota x e as as notas de n alunos, calcular
quantos tiraram nota igual a x. |
|
Dado um inteiro n, verificar se n é primo. |
|
|
 |
20/03: |
Exercícios:
|
Dados três inteiros positivos representando uma data (dia,
mês e ano), calcular a data do dia seguinte. |
|
Dada uma seqüência com n números inteiros, verificar se ela
está em ordem crescente. |
|
Uso de "#define" para definir constantes simbólicas. |
|
 |
22/03: |
O comando "for". |
Exercício: dada uma sequência com n >= 2 números inteiros,
verificar se a seqüência é uma progressão
aritmética. |
Fazer em casa: dado um inteiro n >= 10, verificar se este
número contém dois dígitos iguais consecutivos. |
|
 |
27/03: |
Solução do exercício para casa (dado um inteiro n >= 10,
verificar se este número contém dois dígitos iguais
consecutivos). |
Outros tipos de dados: "short", "long", "float" e "double".
Leitura e impressão de números reais. Conversão de tipos:
automática (implícita) e forçada ("cast"). |
|
 |
29/03: |
Exercícios:
|
Dado um inteiro positivo k, calcule o valor da soma
Sk = 1/k + 2/(k-1) + 3/(k-2) + ... + k/1
(exercício 2.11 do caderno). |
|
Dadas as notas de n provas de MAC-115, calcular a média da
turma. |
|
Dado um numero real x >= 0 e um real
epsilon > 0, calcular uma aproximacão de raiz
quadrada de x através da seqüência dada por
r0 = x e
rn+1 = (rn + x/rn)/2.
A aproximação será o primeiro valor rn+1 tal que
| rn+1 - rn | < epsilon. |
|
Terminar em casa: Uma pessoa aplicou x a juros mensais de z
durante 1 ano. Determine o montante de cada mês durante
este periodo (exercício 2.1 do caderno). |
|
|
 |
03/04: |
Solução do exercício para casa (2.11 do caderno). |
Laços encaixados (também chamados de laços aninhados ou
nested loops). |
Exercícios:
|
Dados x e epsilon > 0, números reais, calcular
uma aproximação de ex através da série
ex = 1 + x + (x2)/2 + (x3)/3! + ... + (xk)/k! + ...,
isto é, somar os termos da série até aparecer um termo cujo
valor seja menor que epsilon. |
|
Dado um inteiro m, imprimir a decomposição de m em fatores
primos, com multiplicidade. Exemplo: para m = 120
a saída desejada é 2(3), 3(1), 5(1). (Exercício 3.6 do
caderno.) |
|
Fazer em casa: 2.6 e 2.7 do caderno. |
|
|
 |
05/04: |
Funções em C: definição e chamada. Passagem de parâmetros
para funções. Valor retornado por uma função. |
Exercício (motivação para funções): escrever um programa que
lê três números e imprime o fatorial de cada um deles.
Soluções: (1) sem usar função nenhuma, (2) com uma função
inteira que retorna o fatorial de um número passado como
parâmetro, (3) com uma função void (não retorna valor) que
imprime o fatorial de um número passado como
parâmetro. |
Exercício com três partes (ficou para terminar em casa): (1)
escreva uma função real que recebe como parâmetro um real x
e retorna a raiz quadrada de x, (2) escreva uma função real
que recebe dois pontos no plano através de suas coordenadas
cartesianas e retorna a distância entre esses pontos, e (3)
escreva um programa que leia um ponto origem
(x0, y0) e uma seqüência de n
pontos e determina o mais próximo da origem. |
|
 |
17/04: |
Resolução das partes (2) e (3) do exercício que ficou para
terminar em casa. |
Exercício: (1) escreva uma função booleana que recebe im
inteiro n e verifica se n é primo, e (2) escreva um programa
que leia um inteiro m e verifica se ele pode ser escrito
como m = p + q, onde p e q são
primos. |
|
 |
19/04: |
Discussão sobre o primeiro exercício-programa. |
Exercícios 1.25, 1.22 e 1.23 do caderno. |
|
 |
24/04: | |
 |
26/04: |
Variáveis tipo ponteiro (ou apontador). Motivação: função
que recebe dois parâmetros e troca os valores desses
parâmetros. |
Declarações de ponteiros. Uso do operador unário *
("dado apontado por") para dereferenciar um
ponteiro. |
O operador unário & ("endereço de") e seu uso para
inicializar variáveis tipo ponteiro. |
|
 |
03/05: |
Ponteiros: revisão do material da aula anterior. |
Exercício: função que incrementa uma data. Essa função
recebe ponteiros para três inteiros, representando um
dia, um mês e um ano, e modifica esses inteiros para que
eles passem a representar a próxima data. |
Mais coisas da linguagem C:
|
Operadores para incrementar e decrementar variável (++ e
--). |
|
Outros operadores de atribuição (+=, -+, *=, /*, %=). |
|
Expressões: o valor e o efeito de uma expressão.
Além de ter efeito, as atribuições tem valor e sua
associatividade é da direita para a esquerda. Conseqûencia:
múltiplas atribuições num só comando
(i = j = k = 0;). |
|
Comandos simples e comandos compostos (ou blocos). |
|
|
 |
10/05: |
Exercício:
(1) |
Escreva uma função com protótipo |
|
int divide(int *pm, int *pn, int d); |
|
que recebe três inteiros positivos como parâmetros (os dois
primeiros através de ponteiros) e retorna 1 se d
divide pelo menos um de *pm e *pm , ou
0 caso contrário. Caso d divida *pm , a
função faz a divisão e põe o quociente em *pm . Caso
d divida *pn , a função faz a divisão e
põe o quociente em *pn . |
(2) |
Escreva um programa que lê dois inteiros positivos m e n e usa a
função acima para calcular o mínimo múltiplo comum de m e
n. |
|
Exercício:
(1) |
Escreva uma função com protótipo |
|
void somabit(int b1, int b2, int *vaium, int *soma); |
|
que recebe três bits (inteiros valendo 0 ou 1) b1 ,
b2 e *vaium e retorna um bit
*soma representando a soma dos três e o novo bit
"vai-um" em *vaium . |
(2) |
Escreva um programa que lê dois números em binário e utiliza a
função acima para calcular um número em binário que é a soma dos
dois números dados. (Esta parte ficou para casa.) |
|
Mais um comando da linguagem C: switch, para seleção de
alternativas. |
|