MC111 Introdução ao Processamento de Dados


Primeiro Semestre de 1998




    
   Ementa e Programa
   Docentes Responsáveis
   Alunos Matriculados
   Referências Bibliográficas
   Questões Operacionais
   Agenda
   Problemas x Temas Abordados
   Programas Solicitados
   Listas de Exercícios
   Freqüência às Aulas
   Atividades Tutoradas e Monitoria
   Freqüência em Tutorias
   Avaliação
   Informações para Turmas Específicas
    









   EMENTA E PROGRAMA

Ementa
Primeiras noções sobre algoritmos e programas. Introdução à programação em linguagem de alto nível.

Programa
Algoritmos e programas. Constantes, variáveis e tipos primitivos. Entrada e saída de dados via dispositivos padrão. Estruturas básicas de controle. Contadores, somadores e acumuladores. Seqüências. Arquivos baseados em fluxo de caracteres. Refinamento sucessivo de programas. Passagem de parâmetros para subprogramas. Vetores. Matrizes.








   DOCENTES RESPONSÁVEIS

TurmaHorário e Sala Docente Responsável Endereço Eletrônico
A 3:10-12/CB02, 5:10-12/CB02 Jaques Wainer wainer@dcc.unicamp.br
D 3:14-16/CB12, 5:14-16/CB08 Hans Liesenberg hans@dcc.unicamp.br
E 2:19-21/CB07, 4:21-23/CB07 Sindo Vasques Dias sindo@dcc.unicamp.br
F 3:14-16/CB03, 5:14-16/CB02 Paulo César Centoducatte ducatte@dcc.unicamp.br
G 2:19-21/CB06, 2:19-21/CB11 Marcos J.C. Euzébio euzebio@dcc.unicamp.br









   REFERÊNCIAS BIBLIOGRÁFICAS

Arthur M. Keller
A First Course in Computer Programming Using Pascal
McGraw-Hill, 1982

Byron S. Gottfried
Programação em Pascal
McGraw-Hill, 1994








   QUESTÕES OPERACIONAIS

Nas aulas serão abordadas técnicas básicas e práticas de boa programação. Os conceitos abordados serão introduzidos através de problemas e a codificação de possíveis soluções na linguagem de programação denominada Pascal. O foco, portanto, não será direcionado para a linguagem. As construções da linguagem serão introduzidas somente quando necessárias para descrever as soluções dos problemas discutidos em aula.

Além de participar em aula e manter a matéria em dia é preciso que o aluno dedique, pelo menos, duas horas extra-classe por semana para atividades de programação. Atividades práticas são fundamentais para o sucesso na disciplina. Nas atividades extra-classe de programação o aluno pode tanto experimentar com as soluções de problemas apresentadas em classe como implementar os programas sugeridos em lista de exercícios.

Ao longo do semestre, você desenvolverá três programas que serão avaliados e as notas a eles atribuídas entram no cômputo da nota final.









   AGENDA

Observação:
A programação tentativa da apresentação do conteúdo programático pode sofrer pequenos ajustes ao longo do semestre. As datas entre parênteses referem-se aos dias letivos no período noturno.


03/03 (04/03) Apresentação do critério de avaliação e discussão de questões operacionais.
05/03 (09/03) Programas e algoritmos.
10/03 (11/03) Programas e algoritmos.
12/03 (16/03) Aula prática em laboratório (*): apresentação do ciclo edição - compilação - execução.
17/03 (18/03) Constantes, variáveis e tipos primitivos.
19/03 (23/03) Constantes, variáveis e tipos primitivos.
24/03 (25/03) Entrada e saída de dados via dispositivos padrão.
26/03 (30/03) Entrada e saída de dados via dispositivos padrão.
31/03 (01/04) Aula prática em laboratório (*): resolução (parcial) do primeiro programa a ser entregue.
02/04 (06/04) Estruturas básicas de controle.
07/04 (08/04) Estruturas básicas de controle.
14/04 (13/04) Estruturas básicas de controle.
Data limite: entrega do primeiro programa (C1).
16/04 (15/04) Depuração de programas.
23/04 (22/04) Contadores, somadores e acumuladores.
28/04 (27/04) Primeira Prova (P1).
30/04 (29/04) Aula prática em laboratório (*): resolução (parcial) do segundo programa a ser entregue.
05/05 (04/05) Seqüências.
07/05 (06/05) Seqüências.
12/05 (11/05) Seqüências.
14/05 (13/05) Arquivos baseados em fluxo de caracteres.
19/05 (18/05) Refinamento sucessivo de programas (procedimento e funções).
Data limite: entrega do segundo programa (C2).
21/05 (20/05) Refinamento sucessivo de programas (procedimento e funções).
26/05 (25/05) Segunda Prova (P2).
28/05 (27/05) Passagem de parâmetros e escopo de variáveis.
02/06 (01/06) Passagem de parâmetros e escopo de variáveis.
04/06 (03/06) Aula prática em laboratório (*): resolução (parcial) do terceiro programa a ser entregue.
09/06 (08/06) Vetores.
(10/06) Vetores.
16/06 (15/06) Vetores.
18/06 (17/06) Vetores.
23/06 (22/06) Matrizes.
Data limite: entrega do terceiro programa (C3).
25/06 (29/06) Matrizes.
30/06 (29/06) Terceira Prova (P3).
02/07 (01/07) Resolução da terceira prova.
14/07 (13/07) Exame (EX).

(*) A realização de aula prática em laboratório depende da disponibilização de laboratório de microcomputadores pela instituição de origem dos alunos. Se não for possível realizar as aulas práticas, elas serão substituídas por aulas de exercícios realizadas em classe. Traga um disquete para armazenar os trabalhos realizados.









   PROBLEMAS x TEMAS ABORDADOS

Programas e algoritmos

Textos de apoio:
Keller - capítulo 1, seções 2.0 a 2.4
Gottfried - seções 5.0 a 5.2

Relação de problemas:

  1. Calcular a soma de dois valores inteiros (versão "minimalista" e versão mais "amigável").

  2. Dado n, calcular a soma dos n primeiros números naturais (primeira alternativa via progressão aritmética e segunda alternativa baseada em somas sucessivas).

  3. Calcular o máximo divisor comum de dois inteiros a e b (primeira alternativa baseada no algoritmo de Euclides e segunda alternativa baseada em divisões sucessivas).

    Por que funciona a primeira alternativa? Porque o resto da subtração também é múltiplo do máximo divisor comum: seja k o máximo divisor comum, então a=n*k e b=m*k. A subtração de a por b também é múltiplo de k, pois a-b=n*k-m*k=(n-m)*k. Exemplo:

           a         b
          195       150
           45          
                    105
                     60
           15          
                     45
                     30
                     15
    

    Por que funciona a segunda alternativa? Porque o resto da divisão obtido a cada iteração também é múltiplo do máximo divisor comum: seja k o máximo divisor comum de a e b, então a=n*k e b=m*k. O resto da divisão a mod b também é múltiplo de k, pois a mod b = n*k-((n*k)%(m*k))*m*k = n*k-(n%m)*m*k = (n-(n%m)*n)*k, onde o símbolo % representa o operador da divisão inteira. Exemplo:

           a         b
          195       150
          150        45
           45        15
           15         0
    


Constantes, variáveis e tipos primitivos

Textos de apoio:
Keller - seções 3-2 e 3.6, capítulo 5
Gottfried - seções 2.7 a 2.9 e capítulo 3

Relação de problemas:

  1. Ilustração de alteração de valores armazenados em variáveis inteiras. O exemplo ilustra o comando de atribuição e a geração de "tabelas" com comandos de "saída formatada". A saída gerada pelo programa é
       0   1
       1   2         
       2   4
       3   8 
       8   8        
       8   8         
    
  2. Trocar os valores associados a duas variáveis (código).

  3. Ecoar um caractere. Caso o caractere digitado represente uma letra minúscula, então ele deve ser ecoado como letra maiúscula (código).

  4. Requisitar uma opção do usuário e retornar a selecionada (código).

  5. Calcular o perímetro de uma circunferência de raio r (código).

  6. Dadas as coordenadas x e y de um ponto no plano, verificar se tal ponto pertence tanto à região x>=0, y>=0 e x2+y2<=1 quanto à região -0.75<=x<=0.75 e -0.75<=y<=0.75, somente à primeira, somente à segunda ou a nenhuma delas (código).

  7. Dados 3 caracteres, verificar se são todos letras (código).



Entrada e saída de dados via dispositivos padrão

Textos de apoio:
Keller - seções 2.1 e 4.1, capítulo 8
Gottfried - capítulo 4
"Entrada e Saída de Dados via Dispositivos Padrão"

Relação de problemas:

  1. Escrever um programa que repete todos os caracteres fornecidos pelo usuário em uma linha de entrada, via teclado.

  2. Escrever um programa que, na primeira linha, a cada 10 posições, escreva um símbolo '+' por cinco vezes e, na segunda linha, escreva os valores de -10 a 30 alinhados à direita com tal símbolo '+'. A saída gerada, portanto, deve ser:
             +         +         +         +         +
           -10         0        10        20        30
    
  3. Escrever um programa que leia todos os inteiros fornecidos em uma linha de entrada e os escreva um por linha com a margem direita deslocada para a direita em duas posições a cada nova linha. Exemplo: Para uma linha de entrada
    2 4 32 5 15 9  
    
    a saída produzida deve ser
         2
           4 
            32
               5
                15
                   9
    
  4. Escrever um programa que escreva 10 vezes o valor da fração 10.0/3.0, um por linha, iniciando a escrita com o comprimento da mantissa igual a 1 e aumentando tal comprimento em uma unidade a cada nova linha. A saída do programa, portanto, deve ser algo como:
      3.3
      3.33
      3.333
      3.3333
      3.33333
      3.333333
      3.3333333 
      3.33333333
      3.333333333
      3.3333333333
    
  5. Escrever um programa que leia todos os valores inteiros fornecidos pelo usuário e escreva cada valor lido em linha separada até que seja lido um valor menor ou igual a zero. Abaixo é apresentada uma possível sessão do usuário com o programa. Os dados escritos pelo programa são apresentados em negrito.
    12 4 5
    12
    4
    5
    2 3
    2
    3
    
    
    3 21 
    3 
    21
      
       4
    4 
    0 
    0
    
  6. Escrever um programa que leia apenas o primeiro valor inteiro em cada linha com valores fornecidos pelo usuário e escreva cada valor assim lido em linha separada até que seja lido um valor menor ou igual a zero. Abaixo é apresentada uma possível sessão do usuário com o programa. Os dados escritos pelo programa são apresentados em negrito.
    12 4 5
    12 
    2 3
    2
    
    
    3 21
    3
       
       4
    4
    0
    0
    



Estruturas básicas de controle

Textos de apoio:
Keller - seções 2.5 a 2.10 e 4.3
Gottfried - capítulo 6

Relação de problemas:

  1. Calcular o valor absoluto de um valor inteiro (código).

  2. Dados três números, apresentá-los em ordem decrescente (código).

  3. Escrever uma seqüência de n asteriscos na tela. Exemplo: Para n=10 a saída do programa deve ser
                      
    **********
    
  4. Escrever m linhas de n asteriscos na tela. Exemplo: Para m=6 e n=10 a saída do programa deve ser
    **********
    **********             
    ********** 
    **********             
    **********
    **********             
    
  5. Escrever m linhas com i asteriscos alinhadas pela esquerda, onde i corresponde ao número da linha corrente. Exemplo: Para m=6 a saída do programa deve ser
                      
    *
    **
    ***
    ****
    *****
    ******
    
  6. Escrever um programa que gere a tabuada de 1 a 10.

  7. Escrever um programa que leia um valor inteiro e consulte o usuário sobre a inversão de sinal de tal valor.

  8. Escrever um programa que faça uma leitura "segura" de uma opção fornecida pelo usuário na forma de um valor inteiro que deve pertencer a um determinado intervalo. Por leitura segura entende-se que a aplicação deve ler qualquer informação provida pelo usuário, verificar se ela satisfaz a sintaxe da representação de um valor inteiro e, em caso afirmativo, verificar se o valor pertence ao intervalo desejado. Se tais condições não são satisfeitas, então programa deve solicitar um novo valor.

  9. Escrever um programa que conte o número de dígitos de um número inteiro.

  10. Escrever um programa que converta um dígito para a sua representação em código Morse. A representação em código Morse dos dígitos é
    1. _ _ _ _
    2. . _ _ _
    3. . . _ _
    4. . . . _
    5. . . . .
      
    6_ . . . .
    7_ _ . . .
    8_ _ _ . .
    9_ _ _ _ .
    0_ _ _ _ _

  11. Escrever um programa que avalia uma expressão com dois operandos reais e um operador binário.



Contadores, somadores e acumuladores

Textos de apoio:
Os textos de referência não tratam explicitamente do assunto.

Relação de problemas:

  1. Escrever um programa que conte os caracteres de uma linha de texto fornecida via teclado.

  2. Escrever um programa que calcule a somatória de i*(i+1) onde 1<=i<=n para um dado n>0.

  3. Escrever um programa que calcule a produtória de i*(i+1), onde i varia de 1 a n.

  4. Escrever um programa que calcule o fatorial de n iterativamente.

  5. Escrever um programa que calcule o valor decimal de um número representado na base oito. Algoritmo: 1538 = 1*82 + 5*81 + 3*80 = ((1*8) + 5)*8 + 3 = 10710.



Seqüências

Textos de apoio:
Os textos de referência não tratam explicitamente do assunto.

Relação de problemas:

  1. Escrever um programa que Some os elementos de uma seqüência terminada por 0 - os termos a serem somados não são calculados, mas são lidos.

  2. Escrever um programa que Some os elementos pares de uma seqüência terminada por 0.

  3. Escrever um programa que, dada uma seqüência de n>0 números inteiros, determine quantos segmentos homogêneos existem na seqüência. Um segmento homogêneo consiste em uma subseqüência de números de mesmo valor tal que o número que precede e o número que sucede o segmento em questão (se existirem) são diferentes dos números contidos em tal segmento. Exemplo: a seqüência de 11

    1 1 5 12 17 17 17 17 2 2 8

    tem 6 segmentos homogêneos.

  4. Escrever um programa que, dada uma seqüência de n>0 inteiros, determine o comprimento de um segmento crescente de comprimento máximo. Exemplo: na seqüência de 18 valores

    5 8 5 3 5 5 15 2 7 9 1 2 4 8 10 14 2 5

    o maior segmento tem comprimento igual a 6.

  5. Escrever um programa que, dado um natural n, determine o número harmônico Hn definido como sendo a somatória de 1/k, onde k varia de 1 a n.

  6. Fazer um programa que calcule a soma

    1 - 1/2 + 1/3 - 1/4 + ... + 1/29999 - 1/30000

    • Versão 1: soma dos termos da esquerda para a direita. Resultado: 0.69313051423.
    • Versão 2: soma dos termos da direita para a esquerda. Resultado: 0.69313051417.

  7. Escrever um programa que, dado x real, calcule uma aproximação para ex da seguinte série:

    ex = 1 + x + x2/2! + ... + xi/i! + ...

    Relação de recorrência:

    tj = tj-1 * x/j, j>0
    t0 = 1

    A série acima converge para qualquer valor de x.

    • Versão 1: cálculo da aproxima,ão através dos n+1 primeiros termos.
    • Versão 2: cálculo da aproximação até que t<epsilon para um dado valor real epsilon.

  8. Escrever um programa que para um dado x real, que representa um valor em radianos, e epsilon, calcule uma aproximação para cos x de acordo com a seguinte série até que ti+ti-1<=epsilon para i>1:

    cos x= 1 - x2/2! + x4/4! - x6/6! + ... + (-1)i*x2*i/(2*i)! + ...

    Relação de recorrência:

    ti = -ti-1 * x2/(ki*(ki-1)), i>1
    ki = ki-1 + 2
    com t1 = 1 e k1 = 0

    A série acima converge para qualquer valor de x.




Arquivos baseados em fluxo de caracteres
Textos de apoio:
Gottfried - seção 11.6

Relação de problemas:

  1. Escrever um programa que leia valores inteiros de um arquivo (um valor por linha) e reproduza tais valores na saída padrão.

  2. Escrever um programa que copie o conteúdo de um arquivo para outro e neste processo converta todas as letras minúsculas em letras maiúsculas.

  3. Escrever um programa que conte o número de letras e palavras de um texto em um arquivo. Suponha que um palavra é terminada por um caractere branco ou por um "final de linha" e que letra seja qualquer caractere diferente de tais separadores de palavaras.

  4. Escrever um programa que junte ao final de um primeiro arquivo o conteúdo de um segundo.

  5. Escrever um programa que leia valores inteiros dois arquivos, cada arquivo com dados em ordem crescente e um valor por linha, e gere um terceiro com os valores lidos, mantendo a ordemcrescente no arquivo resultante.



Refinamento sucessivo de programas (procedimentos e funções)
Textos de apoio:
Keller - seções 9.0 a 9.4

Relação de problemas:

  1. Dadas n seqüências de números inteiros, cada qual terminada por um valor menor ou igual a 0, escrever um programa que calcule a média dos números pares de cada seqüência.

  2. Escrever uma função (e um programa que exercite tal função) que determine o valor absoluto de um real.

  3. Dados os limites de um intervalo de inteiros e um seqüência de n valores inteiros, escrever um programa que determine quais destes valores encontram-se no intervalo especificado e quais não.

  4. O n-ésimo número da seqüência de Fibonacci Fn é dado pela seguinte fórmula de recorrência:

    F1 = 1
    F2 = 1
    Fi = Fi-1 + Fi-2, para i>=3

    O coeficiente Fn por Fn-1 converge para o número áureo, isto é, Fn/Fn-1 converge para 1.618.... O número áureo é usado muito em arquitetura e outras áreas, poisas pessoas consideram "esteticamente agradáveis" os objetos (como uma porta) que apresentam uma relação áurea nas suas dimensões.

    Escrever uma função (e um programa que exercite tal função) que calcule Fn para n>=1.

  5. Escrever um predicado (isto é, uma função que retorna um valor booleano e um programa que exercite tal predicado) que verifique se um número é primo ou não.

  6. Escrever um programa que calcule o máximo divisor comum de dois números inteiros positivo através de sua decomposição em fatores primos.

  7. Escrever um programa que leia um real x e um inteiro d maior ou igual a zero e, a seguir, escreva o valor de x com d casas decimais no menor espaço possível.



Passagem de parâmetros e escopo de variáveis
Textos de apoio:
Keller - seções 9.5 a 9.7

Relação de problemas:

  1. Escrever um procedimento (e um programa que exercite tal procedimento) que troque os valores contidos em duas variáveis.

  2. Escrever um procedimento (e um programa que exercite tal procedimento) que determine o valor mínimo e máximo de uma seqüência de n>0 valores fornecidos pelo usuário.

  3. Escrever um procedimento (e um programa que exercite tal procedimento) que recebe três valores inteiros a, b e c e retorna a posição do maior e a posiçãodo menor valor na ordem em que os valores foram fornecidos. Exemplo: se a = 7, b = 1 e c = 5, então o procedimento deve retornar 1 como sendo a posição do maior e 2 como a posição do menor.

  4. Dado uma seqüência de n>0 valores inteiros, escrever um programa que determine o maior valor da seqüência e a posição da primeira ocorrência de tal valor. Exemplo: Para a seqüência de 7 valores
    1   8   3   4   8   -10   5
    
    a resposta deve ser
       8   2
    



Vetores de variáveis
Textos de apoio:
Keller - capítulo 11
Gottfried - seção 9.1

Relação de problemas:

  1. Escrever um programa que, dada uma seqüência de n números inteiros, reproduzi-la em ordem inversa à da leitura.

  2. Escrever um programa que, dada uma seqüência de n valores inteiros que representam o resultado de n lançamentos de um particular dado, determine o número de ocorrências de cada face na seqüência analisada.

  3. Dada uma seqüência de n números reais, fazer um programa que determine os números que compõem a seqüência e a freqüência de tais números na seqüência dada.
    Exemplo: n = 10
    Seqüência:   3.2   8.1   2.5   3.2   7.4   8.1   3.2   6.3   7.4   3.2
    Saída:
       Num  Freq
       3.2     4
       8.1     2
       2.5     1
       7.4     2
       6.3     1
    

  4. Dado um polinômio  p(x) = a0 + a1x +a2x2 + ... + nxn, faça um programa que calcule p(x)em k pontos distintos. São dados o grau do polinômio n, os coeficientes do polinômio a0, a1, a2, ..., an, o número de pontos k e os pontos tt>x1, x2, ..., xk.
  5. Dado um polinômio  p(x) = a0 + a1x + a2x2 + ... + anxn, faça um programa que calcule a primeira derivada de p(x), dado o grau do polinômio e os seus coeficientes. Lembrete: (a)' = 0 e (xn)' = nxn-1.

  6. Dados dois polinômios  p(x) = a0 + 1x + a2x2 + ... + anxn  e  q(x) = b0 + b1x + b2x2 + ... + bmxn , fazer um programa que determine o produto destes polinômios.

  7. Dadas duas seqüências, uma de n e a outra de m números entre 0 e 9, interpretadas como número inteiros, fazer um programa que calcule a seqüência de números inteiros entre 0 e 9 representante da soma dos dois inteiros. Exemplo:
    primeira seqüência:        3  4  5  1  8  0  5
    segunda seqüência:               7  3  1  1  8
    resultado:                 3  5  2  4  9  2  3
    

  8. Dadas duas seqüências de n e m valores inteiros, onde n <= m, fazer um programa que verifique quantas vezes a primeira seqüência ocorre na segunda. Exemplo:
     
    primeira seqüência:  1 0 1
    segunda seqüência:   1 1 0 1 0 1 0 0 1 1 0 1 0
                           -----           -----
                               ----- 
    resultado: 3
    

  9. Dadas duas seqüências ordenadas em ordem crescente de n em números inteiros, escrever um programa que obtenha uma única seqüência ordenada a partir das seqüências originais.

    Sugestão: Resolva o problema de tal forma que não ocorram repetições na seqüência resultante.

  10. Ponha em ordem crescente uma seqüência desordenada de n números inteiros:

  11. Escrever um programa que verifique se um dado valor x se encontra em uma seqüência em ordem crescente de n valores inteiros.



Matrizes caracteres
Textos de apoio:
Gottfried - seção 9.2

Relação de problemas:

  1. Faça um programa que calcule a soma de duas matrizes com valores inteiros de m linhas e n colunas.

  2. Faça um programa que calcule o produto de uma matriz com valores inteiros de m linhas e ncolunas por outra matriz com valores inteiros de n linhas e p colunas.

  3. Escrever um procedimento que calcule a transposta de uma dada matriz (programa). Se At representa a transposta da matriz A, então A[i,j]=At[j,i] para 1<=i<=m e 1<=j<=n, onde m representa o número de linhas e n o número de colunas da matriz A.

  4. Escrever uma função que verifica se uma matriz é simétrica (programa). Uma matriz A é simétrica se A[i,j] = A[j,i] para todo 1<=i,j<=n.

  5. Uma matriz quadrada inteira é chamada de "quadrado mágico" se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e asoma dos elementos das diagonais principal e secundária são todos iguais. Exemplo: A matriz abaixo representa um quadrado mágico:
       /           \
       |  8  0  7  |
       |  4  5  6  |
       |  3 10  2  | 
       \           /
    
    Escrever uma função que verifica se uma matriz de n linhas e colunas representa um quadrado mágico (programa).








   PROGRAMAS SOLICITADOS

Serão solicitados e avaliados três programas a serem desenvolvidos individualmente de acordo com o documento "Diretrizes para a Documentação de Programas e a Confecção de Relatórios". A entrega de programa e relatório deve ser feita em disquete. Os programas solicitados são:








   LISTAS DE EXERCÍCIOS

Ao longo do semestre serão disponibilizadas diversas listas de exercícios. Cópias de tais listas podem ser obtidas junto aos tutores. As listas disponíveis são:








   FREQÜÊNCIA ÀS AULAS

O limite de faltas é de 75% do total das aulas previstas. Isto corresponde a 8 aulas durante todo o semestre. Faltas não podem ser abonadas sob hipótese alguma (legislação do MEC). Única Exceção: Caso alguém tenha problemas de saúde que impeçam o comparecimento às aulas por períodos mais longos, então o aluno deve entrar com um requerimento de "regime especial" junto à Diretoria Acadêmica (DAC). Isto pode ser feito por terceiros e, após a entrada de tal pedido, o aluno tem direito a realizar as provas em casa enquanto estiver convalescendo.

A presença deve ser documentada com uma assinatura em uma lista de chamada para posterior contabilização. A assinatura nas listas de chamada deve ser a mesma utilizada em documentos oficiais junto à Diretoria Acadêmica (DAC). Não são aceitáveis iniciais apenas ou rubricas.









   ATIVIDADES TUTORADAS E MONITORIA

A Unicamp, através de seu Programa de Apoio ao Ensino de Graduação (PAEG), põe à disposição dos alunos de todas as turmas de MC111 um total de sete tutores. Os tutores desenvolvem atividades de ensino mais individualizadas e complementares às desenvolvidas durante às aulas regulares. A participação nas atividades tutoradas é facultativa, mas altamente recomendada e essencial para um bom desempenho na disciplina. Os problemas abordados nas atividades tutoradas têm por objetivo reforçar conceitos tratados nas aulas formais bem como sanar eventuais dúvidas. Mantenha-se em dia com a matéria da disciplina. Não deixe as dúvidas se acumularem. Participe ativamente das atividades tutoradas sempre que possível. O empenho em tais atividade vai ter um impacto positivo no seu desempenho na disciplina e ela também é premiada na nota de aproveitamento conforme estabelecido nos critérios de avaliação.

Os tutores de MC111 para o corrente semestre são:

NomeEndereço Eletrônico
Bruno Guedes Faria970319@dcc.unicamp.br
Cristina Keiko Moritani970462@dcc.unicamp.br
Fernanda Moréfmore@dcc.unicamp.br
Fernando Porfirio da Silvafpsilva@dcc.unicamp.br
Jefferson Vasques Rodriguesjvasques@dcc.unicamp.br
Marco Aurélio Spalato Zanchizanchi@dcc.unicamp.br
Rogério Chafran Gerardorchafran@dcc.unicamp.br

As atividades tutoradas vão ocorrer durante todos os dias úteis do semestre, na sala CB09, nos horários das 13 às 14 horas e das 18 às 19 horas. Escolha o horário de melhor conveniência para você. Participe! O seu sucesso na disciplina depende de sua participação efetiva em aula e nas atividades tutoradas.

Além dos tutores, a disciplina também conta com um monitor:

Nome Endereço Eletrônico
Marcio Hideo Arakiaraki@fea.unicamp.br

O monitor dará atendimento no laboratório de microcomputadores da Faculdade de Engenharia de Alimentos nos seguintes horários:

DiaHorário
terça13-14 horas
quarta18-19 horas
quinta13-14 horas

A função do monitor é esclarecer dúvidas em relação ao uso do ambiente Pascal surgidas durante o desenvolvimento de programas.








   AVALIAÇÃO

As provas P1, P2 e P3 têm pesos 2, 3 e 5, respectivamente. Os programas C1, C2 e C3 devem ter seu código em Pascal entregue em disquete (devidamente acompanhado pelo relatório correspondente) têm pessos 3, 3 e 4, respectivamente. Assim a média de provas (MP) é:
e a média de programas
MC = (3*C1 + 3*C2 + 4*C3)/10.
O aproveitamento (A) na disciplina é:

O aluno com A>=5 e freqüência mínima de 75% das aulas previstas está aprovado com nota final (NF) igual a A, o aluno sem tal freqüência está reprovado por falta com NF=A e o aluno com A<5 e com freqüência está de exame. O aluno que ficar de exame terá a sua nota final calculada como

(A + EX)/2,
onde EX representa a nota obtida no exame.








   INFORMAÇÕES PARA TURMAS ESPECÍFICAS

    
   Turma D
   Turma G











http://www.dcc.unicamp.br/~hans/mc111/98s1/