Programação Estruturada

Sumários - Aulas Teórico-Práticas

Ana Paula Tomás
Departamento de Ciência de Computadores
Faculdade de Ciências da Universidade do Porto


Semana 5-9 Março 2007 (1h)
Resolução do problema "Valor dos Nomes": descrição de algoritmo em pseudo-código, informação que é necessário guardar (análise crítica da complexidade espacial).
Manipulação de sequências de caracteres: leitura de strings caracter a caracter; uso de propriedades do código ASCII para obter programas simples.
Determinação dum mínimo numa sequência de valores (formas de inicialização dum valor mínimo por defeito).

Semana 12-16 Março 2007 (1h)
(Subproblema duma resolução de "Estádio de Maracanã")
Escrita formatada dum subconjunto de inteiros dado por um vector de 0's e 1's (que define a relação de pertença): representação como união de intervalos e/ou conjuntos maximais de pontos isolados consecutivos.

Semana 19-23 Março 2007 (1h)
Análise de problema de manipulação de sequências de caracteres: leitura caracter a caracter até um terminador; inteiro representado por uma sequência de algarismos (conversão usando a regra de Horner para cálculo do valor duma função polinomial); identificação de palavras numa sequência (por exemplo, como sendo as sequências maximais de caracteres que não contêm espaços). Uso de propriedades do código ASCII para obter programas simples (relação entre o código do dígito e o valor do dígito).
Identificação das posições de palavras numa sequência.
Indexação indirecta de elementos em vectores.

Semana 26-30 Março 2007 (1h)
Análise crítica de exemplos de manipulação de apontadores. Aritmética de apontadores.

Semana 2-7 Abril 2007 (ou 9-14 Abril) (1h)
Introdução à estruturação de programas.
Directivas para o pré-processador: compilação condicionada, definição de macros.
Ficheiros de cabeçalho ( header files ). Divisão de um programa em vários ficheiros/módulos.
Ilustração dos conceitos por análise crítica do programa Máquina de Calcular.
(para descompactar usar tar xzvf aula24_03.tgz , que criará um directório Aula9a, que terá o programa. )

Semana 16-20 Abril (1h)
Manipulação de listas ligadas simples (contendo inteiros): localização de valores, concatenação de listas, transformação duma lista não circular numa lista circular (e vice-versa).
Implementações baseadas em abordagens iterativas e recursivas.

Semana 23-27 Abril (1h)
Manipulação de listas ligadas simples (contendo inteiros): remoção dum nó dado o seu endereço (versão iterativa); ordenação da lista por quicksort (versão recursiva).
Ánalise da correcção do programa.

Semana 30 Abril-4 Maio (1h)
Manipulação de listas duplamente ligadas circulares: desenvolvimento de programas no contexto duma aplicação particular.

Semana 7 Maio - 11 Maio (1h)
Representação de polígonos por listas duplamente ligadas: construção dum quadrado unitário (com vértices (1,1),(1,2),(2,2),(2,1)); construção da lista que define um polígono conhecidas as coordenadas dos seus vértices (sequência já ordenada); Formatação de output: representação dum polígono ortogonal como uma figura (ambiente "figure") para posterior processamento por LaTeX ).

Semana 14 Maio - 18 Maio (1h)
Implementação de funções para manipulação de árvores ordenadas possivelmente não equilibradas (e contendo inteiros): criação da árvore por inserção de valores; determinação do número de nós; determinação duma sequência de caracteres ordenada contendo os inteiros dados numa árvore.

Semana 21 Maio - 25 Maio (1h)
Resolução de problemas: Não lhes dês troco (TOPAS 2007).

Semana 28 Maio - 1 Junho (1h)
Desenvolvimento duma API para manipulação duma pilha (stack) de valores (caracteres), com encapsulamento da estrutura de dados usada para a sua implementação.
Exercício de aplicação: exame de Julho 2006.