MAC 115 - Introdução à Computação - IF

Primeiro Semestre de 2001

Prof. Francisco Reverbel

. Informações gerais
. Ementa da disciplina
. Linguagem de programação e compilador
. Exercícios-programa
        
. Bibliografia
. Lista de discussão da disciplina
. Assuntos tratados em aula
. Notas


As médias estão aqui. A última coluna indica quem ficou de recuperação em provas ("Rec(P)"), em EPs ("Rec(E)"), ou em ambos ("Rec(P,E)").
Se você não ficou de recuperação, boas férias!
Se você ficou de recuperação em EPs, leia esta mensagem.
As notas da recuperação estão aqui.

At work icon Esta página estará em permanente construção até o final do semestre...

Informações Gerais

. Local: IFUSP, auditório sul
. Horário: terças das 08:00 às 09:40, sextas das 10:00 às 11:40
. Monitor: Leonardo Varuzza (lvaruzza@socrates.if.usp.br)
. Plantão de monitoria: terças e sextas, das 13:00 às 14:00, na sala pró-aluno do IFUSP
. Avaliação: duas provas e três exercícios-programa
     . Média de provas: MP = (2 * P1 + 3 * P2)/5
     . Prova substitutiva: Está prevista uma terceira prova P3, para alunos que comprovadamente não puderam comparecer à uma das duas provas, P1 ou P2. Quem fizer essa prova terá sua média de provas dada por
MP = max {(2 * P1 + 3 * P3)/5, (P2 + P3)/2}
     . Média de exercícios-programa: ME = (2 * EP1 + 2 * EP2 + 3 * EP3) / 7
     . Média final: se MP >=5 e ME >= 5
então MF = (2 * MP + ME)/3
senão MF = min {MP, ME}
     . Datas das provas: 27 de abril, 22 de junho e 29 de junho (substitutiva)
. Recuperação: Os alunos que ficarem com média final maior ou igual a 3 e menor que 5 terão direito de fazer recuperação desta disciplina.
     . Se sua média de provas MP foi menor que 5, então você deverá fazer a prova de recuperação no dia 18 de julho, às 10:00.
     . Se sua média de exercícios-programa ME foi menor que 5, então você deverá entregar o exercício-programa de recuperação até o dia 18 de julho, às 10:00.
     . Média de recuperação: se você só precisou fazer a prova, MR = nota da prova
se você só precisou fazer o exercício, MR = nota do exercício
se você precisou fazer ambos:
         se prova >= 5 e exercício >= 5
                 então MR = (2 * prova + exercício)/3
                 senão MR = min {prova, exercício}
     . Nota final: (MF + 2 MR)/3, onde MF é a média final do semestre e MR é a média da recuperação

Linguagem de Programação e Compilador

. Usaremos a linguagem de programação C. Dependendo do sistema operacional que você utilizar (Windows 95/98/NT ou Linux), você deverá usar o compilador C lccwin32 (para ambientes Windows) ou o gcc (para Linux). Esses dois compiladores podem ser copiados e distribuídos livremente. Os exercícios-programa deverão ser entregues em versão compatível com um desses compiladores.
. Compilador lccwin32: é para Windows 95/98/NT. O tamanho do arquivo de instalação, chamado lccwin32.exe, é de 2,9Mb, ou seja, cabe em 3 disquetes. Se você puder, instale-o em seu computador. O lccwin32 está disponível nesta página, que contém também respostas para os problemas mais comuns encontrados na sua instalação ou uso, e uma aula dirigida sobre a utilização desse compilador.

Exercícios-Programa

. Primeiro exercício-programa (formato ps, formato pdf). Prazo: 2 de maio de 2001 (Era 20 de abril, foi adiado a pedido da classe.) Entregar na secretaria do Departamento de Computação (sala 256 do bloco A do IME-USP).
. Segundo exercício-programa (formato ps, formato pdf). Prazo: 01 de junho de 2001.
. Terceiro exercício-programa (formato ps, formato pdf). Prazo: 03 de julho de 2001.

Bibliografia

. Material didático disponível na Internet, em http://www.ime.usp.br/~macmulti/, produzido pelo Departamento de Ciência da Computação do IME-USP.
. Caderno de Exercícios de Introdução à Ciência da Computação (Edição revisada: C), Departamento de Ciência da Computação do IME-USP.
Este caderno de exercícios pode ser adquirido na secretaria do Departamento de Ciência da Computação (sala 256 do bloco A do IME-USP). Além disso, o conteúdo do caderno está disponível na Internet, em http://www.ime.usp.br/~macmulti/exercicios/.
. B. W. Kernighan e D. M. Ritchie, C - A Linguagem de Programação, Campus.
. B. S. Gottfried, Programando em C, Makron.
. Eric S. Roberts, The Art and Science of C: An Introduction to Computer Science, Addison-Wesley, 1995.

Lista de discusão da disciplina

. Temos uma lista eletrônica para a discussão do andamento da disciplina. Todos os alunos são incentivados a participar dessa lista, enviando comentários que poderão ser lidos por todos os interessados.
. Para se inscrever na lista, mande uma mensagem vazia para reverbel-mac115-IF-subscribe@ime.usp.br. Você receberá como resposta uma mensagem pedindo a confirmação de sua inscrição. Para confirmar sua inscrição basta mandar uma mensagem vazia como resposta ao pedido de confirmação. Uma vez inscrito, você passará a receber todas as mensagens que forem mandadas para a lista.
. Para mandar uma mensagem para a lista, use o endereço reverbel-mac115-IF@ime.usp.br. Mensagens enviadas para esse endereço serão entregues a todos os assinantes da lista.
. As mensagens enviadas para a lista ficarão também disponíveis nesta página.

Assuntos Tratados em Aula

. 06/03:
Apresentação. O que é um computador: seus componentes e seu funcionamento básico.
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.
. 09/03:
Comando de repetição ("enquanto"). Exercício: dada uma seqüência de numeros inteiros diferentes de zero, terminada por zero, imprimir a sua soma.
Mais exercícios:
     Dada uma seqüência de numeros inteiros diferentes de zero, terminada por zero, imprimir a soma dos elementos positivos e a soma dos elementos negativos.
Dado n e uma seqüência de n números inteiros, imprimir o maior número da seqüência.
. 13/03:
Exercícios:
     Dados x inteiro e n natural, calcular x elevado a n.
Dada uma seqüência de numeros inteiros diferentes de zero, terminada por zero, imprimir o seu produto.
Dados três números, imprimi-los em ordem crescente.
Fazer em casa: 1.6, 1.7 e 1.9 do caderno de exercícios.
. 16/03:
Exercícios 1.6 (o da loja de discos), 1.9 (dado n natural, determinar o fatorial de n) e 1.11 (dado n natural, verificar se ele é um número triangular) do caderno de exercícios.
Condições compostas e os conectivos lógicos "e" e "ou".
. 20/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", operadores lógicos de comparação (==, !=, <, <=, >, >=).
Exercício 1.12 (dado um número inteiro, verificar se ele é primo).
. 23/03:
Solução em C do exercício 1.12 (dado um número inteiro, verificar se ele é primo).
Uso de "#define" para definir constantes simbólicas.
Exercício: dados três inteiros positivos representando uma data (dia, mês e ano), calcular a data do dia seguinte.
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 ...".
. 27/03:
Solução em C do exercício visto na aula passada (o que pede a data do dia seguinte).
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).
O comando "for".
. 30/03:
Exercícios:
     Dada uma seqüência com n números inteiros, verificar se ela está em ordem crescente.
Dado um inteiro n >= 10, verificar se este número contém dois dígitos iguais consecutivos.
. 03/04:
Outros tipos de dados: "short", "long", "unsigned short", "unsigned", "unsigned long", "float" e "double". Leitura e impressão de números reais. Conversão de tipos: automática (implícita) e forçada ("cast").
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.
Fazer em casa: 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.
. 06/04:
Solução do exercício da raiz quadrada de x.
Exercício: 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.
Exercícios para casa: 2.6 e 2.7 do caderno.
. 17/04:
Discussão sobre o primeiro exercício programa.
Exercícios 2.6 e 2.5 do caderno.
. 20/04:
Questões sobre o primeiro exercício programa.
Laços encaixados (também chamados de laços aninhados ou nested loops).
Exercícios:
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.)
Dadas n seqüências de números inteiros, cada qual terminada por 0, calcular a soma dos números pares de cada seqüência. (Exercício 3.1 do caderno.)
. 24/04:
Exercícios 1.25, 1.22 e 1.23 do caderno.
. 27/04:
Primeira prova.
. 04/05:
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.
. 08/05:
Exercício com três partes: (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.
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.
. 11/05:
Exemplos: (1) função real potência, que recebe um real x e um natural n e retorna x elevado à n, (2) função void imprime_potência, que recebe um real x e um natural n e imprime x elevado à n. Comparação entre essas funções. (Qual é mais útil?)
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.


Valid CSS! Valid XHTML 1.0! Last modified: Wed Jul 25 18:46:51 BRST 2001
Francisco Reverbel
reverbel at ime.usp.br