
Go up to AULAS
Go forward to Princípios da boa programação
Matéria dada nas aulas teóricas
(Em construção)
Objectivo da disciplina. Programa. Bibliografia recomendada.
Método de avaliação.
A compilação de um programa em linguagem~C. O pré-processador ``{\tt cpp}''.
``Macros''. ``Macros'' com parâmetros. Comparações com as funções. Cuidados a ter.
Inclusão de ficheiros.
O ``assert''.
Organização dos programas em vários ficheiros.
Ficheiros ``{\tt .h}'': declarações, ``macros'', ``includes'', ``protótipos'',
``typedefs''.
Ficheiros ``{\tt .c}'' ou ``{\tt .cc}'': programas, um deles contendo a função
``main''.
Referência ao comando "assert".
Uso do ``printf'', ``fflush(stdout)'' para efeitos de ``debug''.
\end{aula}
Redirecção dos programas em Unix. ``Pipes''.
Exemplos: contar o número de ficheiros de um directório, utilizando um programa
que obtém o primeiro número de um ficheiro.
Estruturas em linguagem C.
``Typedef''
Inicialização de variáveis (incluindo vectores, estruturas, etc.).
Funções básicas que utilizam a entrada padrão e a saída padrão: ``getchar'' e
``putchar''. Aacesso formatado: ``scanf''e ``printf''.
Apontadores e endereços. Apontadores e vectores. Manipulação de apontadores.
Exemplo: obtenção de memória de um vector fixo, função ``memoria'', semelhante a
``malloc''.
Declarações globais e locais.
Memória em linguagem C: estática, automática e dinâmica.
Exemplos: impressão de endereços.
Listas lineares: pilhas e sua implementação com vectores e com listas ligadas.
Filas e sua implementação com vectores ``circulares''.
Árvores binárias ordenadas utilizadas para a representação de conjuntos:
pesquisa, inserção; listagem das árvores binárias em ``pré-ordem'',
``pós-ordem'' e ``em-ordem''.
Ficheiros (streams): noção de ficheiro, estrutura FILE.
Operações de fopen, fclose, getc, putc, fdcanf, fprintf, ungetc.
Exemplos de utilização.
Uso de números pseudo-aleatórios em simulações; geração de aleatórios. Médis de
um conjunto de ``experiências''.
Definições indutivas e recursividade: a função de Fibonacci, cálculo eficiente
de potências de inteiros, ``quicksort'', geração de todas as permutações de~$n$
objectos, a tore de Hanoi, etc.
Operações ao bit: ``\verb+~+'', ``\verb+&+'', ``\verb+|+'',
``\verb+^+''. Construçãao de funções para o acesso aos bits individuais dos
elementos de um vector de caracteres.
Técnicas da boa programação: simplicidade da função e do texto de cada módulo
(por exemplo, das funções), princípio da mínima visibilidade, etc.
