Bem-vindo à página da turma 2019/1 do curso de Programação de Computadores II da Universidade Federal Fluminense, ministrado pelo Prof. Raphael Machado. Aqui você encontrará informações práticas a respeito do curso.
Objetivo: Apresentar/consolidar conceitos de programação utilizando a linguagem de programação C. Os tópicos estudados serão os seguintes:
- Registros e Tipos
- Procedimentos e Funções
- Passagem por Valor e por Referência
- Escopo e Variáveis Globais
- Recursão
- Bibliotecas e String
- Tipo Abstrato de Dados
- Modularização
- Memória e Endereço
- Ponteiro
- Alocação Dinâmica
- Lista Ligada
- Fila e Pilha
- Arquivos
Horário das aulas: segundas-feiras e quartas-feiras de 20:00 a 22:00.
Local das aulas: Instituto de Computação da UFF
Aulas teóricas às quartas feiras na sala 217.
Aulas práticas às segundas-feiras no laboratório 304.
Período de aulas: 17 de março a 22 de julho de 2019.
Datas das provas:
- Primeira Prova (P1): 22/5 -> Nova data
- Segunda Prova (P2): 03/7 -> Nova data
- Verificação de Reposição (VR): 8/7
- Prova Suplementar (VS): 17/7 -> Nova data
Listas de Exercícios. Ao longo do curso, serão disponibilizadas listas de exercícios por meio do sistema URI Online Judge. O aluno deverá enviar um email para machado. work@gmail.com com o Assunto “Cadastro URI 2019/1” solicitando acesso ao sistema. O resultado obtido na execução dos exercícios das listas irá compor a nota L.
Regras:
- A média será dada por M = 0,5*P1 + 0,5*P2 + 0,2*L
- Todo aluno pode escolher por fazer a VR, que irá obrigatoriamente substituir a menor nota entre P1 e P2. A VR funciona como segunda chamada.
- Todo aluno poderá escolher por fazer a VS. Neste caso, M=VS.
- O aluno estará aprovado se M >= 6,0.
Material complementar de estudo.
- The C Programming Language (Second Edition)
- C How to Program 8/E.
- Canal “De aluno para aluno: Linguagem C”.
Importante: o aluno deverá se cadastrar até 22-mar-2019 no grupo https://groups.google.com/d/forum/prog2-uff-2019-1 que será o meio de comunicação oficial do curso. O email cadastrado no grupo será usado para criar conta no URI Online Judge.
Aulas
Aula 1 (18-mar-2019). Apresentação do curso; programação básica; comandos básicos em C.
Aula 2 (20-mar-2019). Exemplos de programas usando comandos aprendidos na primeira aula. Apresentação de problemas “avançados” para implementação de algoritmos em C.
- Programas da Aula 2.
- Problemas Apresentados:
- Material de estudo da semana:
- Slides e Programas da Semana
- Capítulo 1 do livro “The C Programming Language”
- Capítulos 1 a 3 do livro “C How to Program”
Aula 3 (25-mar-2019). Registros e tipos. Exercícios em laboratório.
Aula 4 (27-mar-2019). Funções e procedimentos. Passagem de parâmetros por valor e por referência.
Aula 5 (1-abr-2019). Tempo de execução, aleatoriedade e prática de laboratório.
Aula 6 (3-abr-2019). Escopo e variáveis globais. Recursão.
Aula 7 (8-abr-2019). Laboratório: implementação e análise de tempo do MergeSort.
- Não há material complementar.
NÃO HAVERÁ AULA DIA 10-ABR-2019!
Motivo: chuvas e falta de luz no campus.
NÃO HAVERÁ AULA DIA 15-ABR-2019!
Motivo: viagem a serviço do professor.
Aula 8 (17-abr-2019). Bibliotecas e strings; tipo abstrato de dados.
RECESSO: 22-ABR-2019
Aula 9 (24-abr-2019). Modularização.
Aula 10 (29-abr-2019). Laboratório.
FERIADO: 01-MAI-2019
Aula 11 (06-mai-2019). Laboratório – gerenciamento de memória.
Aula 12 (08-mai-2019). Ponteiros e memória.
- Slides
Aula 13 (13-mai-2019). Laboratório – atividades de revisão.
Aula 14 (15-mai-2019). Revisão de conteúdo.
Aula 15 (20-mai-2019). Laboratório – atividades de revisão.
- Instruções do laboratório.
- Códigos do laboratório
Prova 1: 22-mai-2019
Aula 16 (27-mai-2019). Aula (não haverá lab) – Gerenciamento de memória, alocação dinâmica.
NÃO HAVERÁ AULA NOS DIAS 29-MAI, 3-JUN E 5-JUN – MOTIVO: VIAGEM A SERVIÇO DO PROF. RAPHAEL.
Aula 17 (10-jun-2019). Laboratório – Gerenciamento de memória, alocação dinâmica.
- Exercícios
- Exemplos de Erros:
- variável deve receber endereço antes da operação
- variáveis devem ser alocadas antes
- Valor de *variavel não existe
- Operando sobre o endereço, e não ao conteúdo da variável
- Recebe o endereço da variável, e a soma é feita com lixo
- trocar *a+b por *(a+b)
- Exemplos de Erros:
- Slides
Aula 18 (12-jun-2019). Aula – alocação dinâmica, ligada/encadeada.
Aula 19 (17-jun-2019). Laboratório – Lista ligada/encadeada.
- Programa inicial
- Exercício: em relação ao programa acima, faça as seguintes modificações
- Criar uma função que conte o número de elementos da lista
- Criar uma função que busque um elemento na lista
- caso o elemento exista, deve retornar a posição do primeiro nó que o contém
- caso não exista, retornar -1
- Criar uma função que retorne o dado de um determinado elemento
- a função deve receber como parâmetro a posição/ordem do nó cujo dado deve ser recuperado
- Criar uma função que atualize o dado de um elemento da lista
- a função deve receber como parâmetro a posição/ordem do nó a ser removido e o novo dado
- Criar uma função que insira em determinada posição passada como parâmetro
- a função deve avaliar se o valor passado é possível – ou seja, menor que o número de elementos da lista mais 1
caso a função receba -1, deve inserir no final da lista
- a função deve avaliar se o valor passado é possível – ou seja, menor que o número de elementos da lista mais 1
- Criar uma função que remova um elemento da lista
- a função deve receber como parâmetro a posição/ordem do nó a ser removido
- Criar uma função que inverta a ordem da lista. Ou seja, o ponteiro *inicio passa a apontar para o último elemento da lista, que passa a apontar para o penúltimo, até o primeiro, que passa a apontar para NULL.
- Criar um “menu” que pergunte ao usuário que função ele deseja executar – e execute a função escolhida (naturalmente, recebendo do usuário as entradas necessárias).
Aula 19 (19-jun-2019). Laboratório – Lista ligada/encadeada.
Aula 20 (26-jun-2019). Aula de revisão.
Prova 2: 03-jul-2019
VR: 08-jul-2019
VS: 17-jul-2019