CI067 - Oficina de Computação
Ementa: Uso dirigido de ferramentas de desenvolvimento de software. Práticas de projetos de algoritmos.
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.
Enfoque: A ênfase desta disciplina está em projetos de programação não-triviais de média comlexidade, que usem conhecimentos de estruturas de dados ou algoritmos relacionados vistos em outras disciplinas do curso (notadamente Algoritmos I e II). Como exemplos de projetos podem ser considerados a implementação de comandos Unix com os quais os alunos já tenham alguma familiaridade (tr, cat, cut), ou a extensão de programas que já estão funcionais. A seqüência de passos do projeto de um programa será seguida (concepção, especificação, projeto, codificação, testes e documentação) com especial ênfase nos aspectos da programação. Serão mostrados aos alunos exemplos de código de boa qualidade, com estilo legível, e boa documentação interna do código. Os aspectos de testes do programa, sua depuração e documentação (no estilo de página de manual) também serão contemplados e sua importância discutida.
Aulas | Objetivos | Notas de Aula | Exercícios |
---|---|---|---|
1-7 | Linguagem C:
Introdução, estrutura de programas C, tipos de dados,
expressões aritméticas, lógicas e
relacionais, estruturas de controle. Conversão de tipos, cast. Estruturas de dados: Arrays, Enumeração e registros (struct), strings. Funções - definição, passagem de parâmetros por valor; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
1 2 9 |
8 | Avaliação 1 | ||
9-14 | Linguagem C: Entrada e
Saída. Ponteiros. Funções - passagem de
parâmetros por referência. Relação entre arrays e ponteiros. Alocação dinâmica de memória. Manipulação de arquivos; |
26 27 28 29 30 31 32 | 3 4 5 |
15 | Avaliação 2 | ||
16-18 | Processo de compilação,
ligação e montagem. Programas extensos: modularização, bibliotecas, ferramentas de construção (makefiles); |
33 34 | 6 7 8 |
19-20 | Depuração de programas; | 35 | |
21-28 | Exercicios de Programação; | ||
29-30 | Avaliação 3. |
As avaliações (execução de provas ou entrega de trabalhos) são presenciais, isto é, elas ocorrem em sala de aula nas datas definidas no Calendário de Avaliações da respectiva turma.
Nos casos amparados pelo artigo 106, Seção V, Resolução 37/97-CEPE, o aluno terá direito à 2a.-chamada para as avaliações às quais não compareceu. A data e local serão divulgados no Calendário de Avaliações da respectiva turma.
Em quaisquer outros casos, trabalho não entregue implica em nota 0 (zero) para o aluno.
Material de Apoio
Exemplos simples aqui. Exemplos
mais completos aqui.
FAQs:
É EXTREMAMENTE importante que os alunos tomem
conhecimento das Normas e Recomendações para
Utilização dos Sistemas Computacionais do Departamento de
Informática da UFPR. Elas estão disponíveis no
corredor de acesso aos Laboratórios e também
aqui.
Acesse a URL http://webmail.inf.ufpr.br/,
e preencha os campos na página com seu login e senha nos sistemas
do DINF.
Por exemplo, "ssh -X macalan.c3sl.ufpr.br" permite
acesso remoto à servidora "macalan".
scp
prog.p
macalan.c3sl.ufpr.br:prog.p
scp
macalan.c3sl.ufpr.br:prog.p
./prog.p
A program should be light and agile, its subroutines connected like a strings of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little nor too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity.
A program should follow the 'Law of Least Astonishment'. What is this law? It is simply that the program should always respond to the user in the way that astonishes him least.
A program, no matter how complex, should act as a single unit. The program should be directed by the logic within rather than by outward appearances.
If the program fails in these requirements, it will be in a state of disorder and confusion. The only way to correct this is to rewrite the program.Geoffrey James, "The Tao of Programming"
Last modified: Tue Jun 2 10:58:41 BRT 2015