CI-1002: Programação 2
- Disciplina: CI-1002 - Programação 2
- Carga Horária (horas): teoria 30h, prática 30h, total 60h
- Pré-requisito: CI-1001 - Programação 1
- Cronograma 2023/1 - profs. Luiz Oliveira, Vinícius Fülber e Armando Delgado
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
Abordado em Programação 1:
Abordado em Programação 2:
Conteúdo em preparação:
Projetos
Projetos desenvolvidos nos últimos anos:
- … (sugestões são bem-vindas)
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 e provas realizados ao longo da disciplina. Serão realizados dois ou mais projetos individuais, que podem ter pesos distintos.
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.
Online (textos abertos):
- BANAHAN M., BRADY D., and DORAN M., The C Book, 1991.
- Practical Programming in C, MIT OpenCourseWare (slides usados na disciplina).
- C Programming, Columbia University (slides)
Material de apoio
Programação em C:
- Projeto de Algoritmos do prof. Paulo Feofiloff, IME/USP
Apostilas:
- DINF UFPR (2008)
- PET-CC UFPR (2006)
- NCE UFRJ (2016)
- EEL UFMG (2001)
- GACLI UNICAMP (2000)
- CTM Caxias do Sul (1997)
Having Fun with C:
UNIX/Linux:
- Excelente guia de BASH
Editores em UNIX: