
Go backward to A Disciplina
Go up to Top
Go forward to References
Programa previsto
O programa que é descrito em baixo não corresponde a uma apresentação sequencial.
- Metodologia da aprendizagem da programação,
- Fases da construção de um programa: compreender o enunciado, análise,
implementação do programa, testes. "Olhar para trás".
- Análise: decomposição, utilização de funções conceitos ou métodos já
conhecidos, estudo e discussão de alternativas.
- Começar por caracterizar a estrutura e a estruturação dos
dados e, para cada função, o seu tipo e o seu objectivo
(informalmente).
- Métodos de construção dos algoritmos.
- Estruturação dos programas: divisão dos programas em partes
("módulos", funções, objectos...).
- Tipos abstractos de dados: partes públicas e privadas, interface.
- Bons princípios de programação em C: tamanho das funções, número de
variáveis globais, comentários...
- Representações de objectos matemáticos em linguagem C (com referência a
outras linguagens de programação)
- (Essencialmente revisão) Valores lógicos, caracteres, inteiros de
precisão limitada, inteiros de precisão arbitrária, valores em vírgula
flutuante.
- Pares e "tuplos".
- Sequências ordenadas: vectores e listas
ligadas. Representação canónica dos "strings" em C.
- Conjuntos: uso de vectores ordenados, vectores não necessariamente
ordedados, vectores de presença ("bit arrays"). Operações de pesquisa,
inserção, eliminação, união (chamada "merge" no caso dos vectores
ordenados) e intersecção.
- Árvores binárias ordenadas utilizadas para a representação de conjuntos:
pesquisa, inserção, eliminação, reunião e intersecão.
- [Pilhas, filas e "deques"].
- [Métodos de "hashing"].
- [Grafos e algoritmos em grafos].
- Breve referência à eficiência relativa das diversas implementações
utilizadas.
- Definições indutivas, recursão e propriedades dos programas, ["Design" de algoritmos].
- Definição matemática (indutiva).
- Implementação recursiva.
- Introdução à verificação de programas.
- Exemplos: máximo entre 2 valores, máximo entre e valores, bijecção
entre N2 e N, bijecção entre N3 e N, factorial,
números de Stirling, número e geração de todas as combinações de n objectos
tomados m a m, geração de todas as permutações dos inteiros entre 1
e n, pesquisa numa árvore binária não ordenada, "quicksort", problema da
celebridade e outros problemas recreativos.
- Complementos de programação em linguagem C.
- O pré-processador e os macros.
- typedef.
- Variáveis globais e locais (âambito)
- Memória estática e automática.
- Obtenção e libertação de espaço dinâmico.
- Recursão, utilização em casos como: cálculo do factorial, pesquisa binária,
"quicksort".
- Notas sobre a implementação da recursão. A pilha de execução. Exercícios
simples sobre o comportamento dos programas recursivos.
- Apontadores e seu uso em casos simples não envolvendo memória dinâmica:
"arrays", parâmetros de funções...
- Estruturas com apontadores e utilização de memória dinâmica:
- Pilhas
- Árvores de pesquisa: pesquisa, inserção e eliminação
- Árvores que representam a estrutura sintática de expressões.
- Uso de ficheiros ("streams")
- Parâmetros da linha de comando Unix.
- Um pouco de C++ permitindo a definição o encapsulamento das
estruturas: classes, objectos, definição da interface
utilizaçao-implementaçao, métodos e variáveis públicas e privadas,
constructores.
- Algumas particularidades normalmente associadas ao C++: comentários na
linha, grandezas const, funções inline, "inputøutput" com
utilização do "cin" e "cout".
- Notas sobre a instalação e portabilidade de "software".
- o utilitário "make".
