Up Next
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.

 

Up Next