CI-1001: Programação 1
- Disciplina: CI-1001 - Programação 1 - Turmas BCC5 e IBM5
- Carga Horária (horas): teoria 30h, prática 30h, total 60h
- Pré-requisito: CI-1055 - Algoritmos e Estruturas de Dados 1
- Sala de aula: Laboratório 5 e BBB do DINF/UFPR
Objetivos
Capacitar o estudante a compreender o modelo de programação dos computadores atuais e a desenvolver programas usando técnicas elementares de algoritmos e estruturas de dados sobre este modelo. Capacitar o aluno a desenvolver soluções simples e eficazes para problemas diversos que podem ser resolvidos com as técnicas elementares, sempre considerando a noção de eficiência dos códigos desenvolvidos.
Conteúdo
- 01/08 - Aula 01:
- Apresentação da disciplina
- 03/08 - Aula 02:
- 08/08 - Aula 03:
- Lista de exercícios 1 (para 29/8)
- 10/08 - Aula 04:
- 15/08 - Aula 05:
- Funções (passagem de parâmetros por valor)
- 17/08 - Aula 06:
- TP1 - Números racionais (para 31/8)
- 22/08 e 24/08 - Semana Acadêmica
- 29/08 - Aula 07:
- Funções (passagem de parâmetros por referência)
- Exercícios
- 31/08 - Aula 08:
- TP2 - Números racionais - ponteiros (para 11/9)
- 05/09 - Aula 09:
- exercícios com ponteiros
- Mais exercícios (lista elaborada pela Profª Gilene B. Gomes)
- 12/09 - Aula 10:
- Exercícios
- 14/09 - Aula 11:
- TP3 - Números racionais - malloc (para 26/9)
- 19/09 - Aula 12:
- Implementações do TAD pilha (arquivo de teste: teste-pilha.c)
- com vetor - simples
- com lista encadeada - simples
- 21/09 - Aula 13:
- Implementações do TAD pilha (cont)
- Depuração de código
- 26/09 - Aula 14:
- Implementações do TAD fila (arquivo de teste: teste-fila.c)
- com vetor - simples
- com vetor - melhorado
- com vetor - circular
- 28/09 - Aula 15:
- Implementações do TAD fila
- com lista encadeada - simples
- com lista encadeada - dupla
- TP4 - TAD Lista (para 10/10)
- 03/10 - Aula 16:
- Desenvolvimento do TP4
- 05/10 - Aula 17:
- Desenvolvimento do TP4
em construção
- 10/10 - Aula 18:
- 24/10 - Aula 19:
- 26/10 - Aula 20:
- 31/10 - Aula 21:
- 07/11 - Aula 22:
- 09/11 - Aula 23:
- 14/11 - Aula 24:
- 16/11 - Aula 25:
- 21/11 - Aula 26:
- 23/11 - Aula 27:
- 28/11 - Aula 28:
- 30/11 - Aula 29:
Metodologia
- Teoria: aulas expositivas, com análise e discussão dos temas propostos.
- Prática: atividades referentes aos temas abordados nas aulas teóricas.
Avaliação
A avaliação será feita através dos projetos realizados ao longo da disciplina. Esta é uma disciplina de projeto, portanto não há exame final.
Os projetos serão avaliados de acordo com os seguintes critérios:
- Devem compilar corretamente no ambiente Linux provido pelo DINF/UFPR
- Devem ser estáveis (funcionar sempre)
- Ao compilar com os flags
-Wall
não devem gerar warnings - Devem estar bem documentados (comentários no código)
- Devem estar bem legíveis e endentados
- Devem usar nomes significativos para variáveis, tipos, funções, macros e arquivos.
- O código deve estar bem estruturado (uso de funções, vários arquivos, Makefile, uso de macros, etc)
- Os dados devem estar bem estruturados (poucas variáveis globais, uso adequado de parâmetros, arrays, structs, memória dinâmica, etc.
Bibliografia
Básica:
- KERNIGHAN, B., Ritchie, D., C: A Linguagem de Programação - Padrão ANSI, Editora Campus, 1989.
- MEDINA, M., FERTIG, C., Algoritmos e Programação: teoria e prática. Novatec, 2006.
- ZIVIANI, N., Projeto de algoritmos: com implementações em PASCAL e C. 2a. edição. Ed. Pioneira Thomson, 2004.
Complementar:
- KNUTH, D. E., The Art of Computer Programming. Addison Wesley, 2005
- SCHILDT, H., C Completo e Total. Makron Books, 1997
- PRINZ, P., KIRCH-PRINZ, U., C Pocket Reference. Ed. O'Reilly, 2003.
Apoio:
- Material de programação em C do docente
Material sobre Shell e UNIX/Linux:
- Excelente guia de BASH
Podem ocorrer mudanças nesta página, com a devida divulgação prévia aos alunos.