Ferramentas do usuário

Ferramentas do site


ofcomp:start

CI067: Oficina de Computação

  • Disciplina: CI067 - Oficina de Computação
  • Carga Horária (horas): teoria 30h, prática 30h, total 60h
  • Pré-requisito: CI055 - Algoritmos 1
  • Professor: Carlos A. Maziero
  • Monitor: Eric Schmidt (atendimento: 3ª e 5ª durante as aulas, 2ª e 4ª de 13:30 a 15:30)

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

  1. Introdução, histórico da linguagem C.
  2. Estrutura de programas C, tipos de dados.
  3. Expressões aritméticas, lógicas e relacionais.
  4. Conversão de tipos, casting.
  5. Estruturas de controle de fluxo.
  6. Estruturas de dados: arrays, enumeração, registros (structs), strings.
  7. Funções: definição, passagem de parâmetros por valor e por referência.
  8. Programação de entrada e saída; manipulação de arquivos.
  9. Ponteiros; Relação entre arrays e ponteiros.
  10. Alocação dinâmica de memória.
  11. Processo de compilação, ligação e montagem.
  12. Programas extensos: modularização, bibliotecas, ferramentas de construção (makefiles).
  13. Ferramentas de depuração de programas.
  14. Projetos de Programação.

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. Serão realizados três ou mais projetos individuais, com peso 1 (mais simples) ou peso 2 (mais complexos)

Exemplos de projetos desenvolvidos nos últimos anos:

Os projetos serão avaliados de acordo com os seguintes critérios:

  • Devem funcionar corretamente m(
  • Devem ser estáveis (funcionar sempre)
  • Não devem gerar warnings de compilação com os flags -Wall
  • 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:

  1. KERNIGHAN, B., Ritchie, D., C: A Linguagem de Programação - Padrão ANSI, Editora Campus, 1989.
  2. MEDINA, M., FERTIG, C., Algoritmos e Programação: teoria e prática. Novatec, 2006.
  3. ZIVIANI, N., Projeto de algoritmos: com implementações em PASCAL e C. 2a. edição. Ed. Pioneira Thomson, 2004.

Complementar:

  1. KNUTH, D. E., The Art of Computer Programming. Addison Wesley, 2005
  2. SCHILDT, H., C Completo e Total. Makron Books, 1997
  3. PRINZ, P., KIRCH-PRINZ, U., C Pocket Reference. Ed. O'Reilly, 2003.

Online (textos abertos):

  1. BANAHAN M., BRADY D., and DORAN M., The C Book, 1991.
  2. Practical Programming in C, MIT OpenCourseWare (slides usados na disciplina).
  3. C Programming, Columbia University (slides)

Apostilas:

  1. DINF UFPR (2008)
  2. PET-CC UFPR (2006)
  3. NCE UFRJ (2016)
  4. EEL UFMG (2001)

Material de apoio

Observações

  • Podem ocorrer mudanças nesta página, com a devida divulgação prévia aos alunos.
ofcomp/start.txt · Última modificação: 2017/06/10 11:21 por maziero

Ferramentas da página