====== 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 2024/1]] - profs. Vinícius Fülber, Luiz Oliveira e David Menotti /* * [[Cronograma 2023/2]] - profs. Vinícius Fülber e David Menotti * [[Cronograma 2023/1]] - profs. Luiz Oliveira, Vinícius Fülber e Armando Delgado * [[Cronograma 2022/2]] - profs. David Menotti e Luiz Oliveira * [[Cronograma 2022/1]] - profs. David Menotti, Luiz Oliveira e Armando Delgado * [[Cronograma 2021/2]] - prof. David Menotti * [[Cronograma 2021/1]] - profs. Lucas Ferrari, Luiz Oliveira * **Monitor**: Fernando Kiotheka (fmk17@inf.ufpr.br), sob demanda (enviar e-mail) * **Auxiliar**: Amanda Viescinski (amanda.b.vieski@gmail.com), sob demanda (enviar e-mail) * **Sala de aula**: [[https://bbb.c3sl.ufpr.br/b/car-vpj-6te|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 ===== * [[c:Strings]] * [[c:Codificação de caracteres]] * [[c:Strings multibyte]] * [[c:Acesso a arquivos]] * [[c:Arquivos binários]] * [[c:Organização de código]] * [[c:O preprocessador C]] * [[c:O sistema Make]] * [[c:Depuração]] * [[c:A função main]] * [[c:Tipos enumerados]] * [[c:Conversão de tipos]] * [[c:Ponteiros para funções]] * [[c:Uniões]] * [[c:Operações com bits]] * [[c:Bibliotecas]] * [[c:Construção de bibliotecas]] ===== Metodologia ===== * **Teoria**: aulas expositivas, com análise e discussão dos temas propostos. * **Prática**: atividades referentes aos temas abordados nas aulas teóricas. * [[teaching:Regras das atividades de laboratório]] ===== 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: * [[c:start|Material de programação em C]] do docente Podem ocorrer mudanças nesta página, com a devida divulgação prévia aos alunos.