Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
prog1:start [2024/10/29 15:47] – [Conteúdo 2024/2] mazieroprog1:start [2024/12/16 12:07] (atual) – [Bibliografia] maziero
Linha 1: Linha 1:
 +====== CI-1001: Programação 1 ======
 +
 +  * **Disciplina**: CI-1001 - Programação 1
 +  * **Carga Horária** (horas): teoria 30h, prática 30h, total 60h
 +  * **Pré-requisito**: CI-1055 - Algoritmos e Estruturas de Dados 1
 +
 +[[Cronograma 2024/2]]
 +
 +===== 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.
 +
 +===== 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:
 +
 +  * Compilar corretamente no ambiente Linux provido pelo DINF/UFPR.
 +  * Aderência ao padrão C99.
 +  * Respeito às especificações.
 +  * Estabilidade (deve funcionar sempre).
 +  * Compilar com os flags ''-Wall -Wextra'' sem erros ou avisos.
 +  * Análise pelo programa Valgrind sem erros.
 +  * Comentários adequados e suficientes no código.
 +  * Código legível e corretamente endentado.
 +  * Nomes significativos para variáveis, tipos, funções, macros e arquivos.
 +  * Código bem estruturado (uso de funções, vários arquivos, Makefile, uso de macros, etc).
 +  * Dados bem estruturados (poucas variáveis globais, uso adequado de parâmetros, arrays, structs, memória dinâmica, etc.
 +  * Domínio do aluno sobre o código que desenvolveu.
 +
 +===== 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 sobre programação em C]] do docente.
 +
 +Material sobre Shell e UNIX/Linux:
 +
 +  * Comandos básicos ([[unix:comandos básicos]], [[unix:permissões em arquivos]], [[unix:gestão de processos]]).
 +  * Uso do shell BASH ([[unix:shell básico]], [[unix:shell avançado]], [[unix:shell scripts]]).
 +  * [[unix:Desenvolvimento em Linux]].
 +  * Excelente [[http://wiki.bash-hackers.org|guia de BASH]].
 +  * [[unix:Histórico do Unix e Linux]].
 +  * [[http://www.washington.edu/computing/unix/vi.html|How to use the VI editor]].
 +  * [[http://www.debian.org/doc/manuals/reference/ch-edit.pt-br.html|Diversas informações sobre editores]].
 +
 +<note important>
 +Podem ocorrer mudanças nesta página, com a devida divulgação prévia aos alunos.
 +</note>