Plano das aulas teóricas

Semana

T1 (2a feira)

T2 (5a feira) Tema
1-10/10 Objectivos e tópicos do programa Exemplo de um programa em C.
Algoritmos: noção e representação.
Resolução de problemas por computador.
Construção de um algoritmo para a construção de um tutor para a aprendizagem da adição de inteiros. Codificação em linguagem C. Execução de um programa em C Algoritmos

Introdução à linguagem C

2-17/10 Algoritmos e programas em C para a determinação do factorial de um inteiro n. Noção de função. Estrutura de um programa em C. Tipos de dados simples em C. Variáveis, constantes e expressões. Expressões: relacionais, lógicas, de atribuição e condicionais. Operadores incrementais. Instruções de atribuição e condicionais ( if e if... else)
3-24/10 Instruções de ciclo while, for e do...while. Uso das instruções break e continue em ciclos. Repetição controlada por contadores Determinação do máximo duma sequência de valores Desenvolvimento de algoritmos e codificacao em linguagem C para os seguinte problemas:
Primalidade e factorização de inteiros positivos.
Determinação de propriedades duma sequência de inteiros lida: contar ou somar elementos com uma dada propriedade; tamanho e contagem de subsequências com uma dada propriedade.
4-31/10 feriado Tabulação de potências inteiras. Definição de funções. Instruções de chamada e retorno de funções. Variáveis locais e parâmetros. Funções de entrada e saída formatada: printf e scanf. Definição de funções
5-7/11 Tipos de dados em vírgula flutuante e inteiros: operações aritméticas e conversões. Determinação aproximada do número de Nepar. Caracteres e código ASCII. Tipo char em linguagem C. Função getchar() e putchar(). Desenvolvimento de um algoritmo e de um programa em linguagem C para contagem de caracteres, linhas e palavras de um ficheiro de texto. Instrução de escolha switch(). Exemplo: contagem de vogais num ficheiro de texto. Uso da função rand() para a geração de uma sequência de valores num intervalo. Programa de simulação de lançamentos de um dado. Tipo float e caracteres
6-14/11 Estruturas de dados complexos. Variáveis indexadas unidimensionais: declaração e acesso a elementos Exemplos. Inicialização de variáveis indexadas. Determinação da frequência e média de um conjunto de valores inteiros num dado intervalo. Operações sobre conjuntos Pesquisa linear de um elemento numa sequência. Pesquisa e ordenação. Pesquisa binária. Métodos de Ordenação. Ordenação de uma sequência de valores por selecção. Variáveis indexadas
7-21/11 Noção de algoritmos polinomiais e exponenciais. Âmbito e Classe das variáveis em C: globais, locais; permanentes, temporárias. Objectos externos: funções e variáveis. Os qualificadores static e extern. Funções e parâmetros:passagem por valor e referência. Variáveis indexadas como parâmetros de funções. Protótipos de funções.
8-28/11 Definição de variáveis indexadas de caracteres. Sequências de caracteres em C terminadas por 0: strings. Funções que manipulam strings de caracteres: comprimento, cópia, comparação e concatenação. Funções da biblioteca do C: strcpy, strcmp, strcat, gets, puts . Procura de uma subsequência de caracteres numa sequência de linhas lidas. Variáveis indexadas multi-dimensionais. Inicialização e passagem como argumentos de funções. Representação de relações binárias por uma matriz. Algoritmo para a ordenação de uma sequência de strings (linhas de um texto) usando o método da inserção (linear). Classificação, estudo estatístico e pesquisa num conjunto de dados, representado por uma tabela bi-dimensional de inteiros. Strings e Variáveis bi-indexadas
9-5/12 Recursividade. Comparação entre o paradigma de programação iterativo e o recursivo. Funcionamento duma função recursiva. Exemplos: factorial, sequência de Fibonacci e torres de hanoi. Pesquisa binária recursiva. Método de ordenação Quicksort. Estruturas em C. Definição do tipo struct e declaração de variáveis. Acesso a elementos numa estrutura: o operador. Estruturas encaixadas. Cópia de estruturas e passagem de estruturas como argumentos de funções. Variáveis indexadas de estruturas. Simulação de um baralho de cartas. Recursividade
Estruturas
10-12/12 Programa para manipulação de uma lista telefónica simples. Escolha de estruturas de dados para nomes e números de telefone. Programa para consulta de uma lista telefónica simples. Introdução dos dados a partir de ficheiro com e sem usar a função fscanf. Acesso a ficheiros como (``streams'') em C: funções de abertura ( fopen(), leitura getc() e fscanf(), escrita putc() e fprintf() e fecho fclose. Tipo FILE e descritores de ficheiros. Exemplo da cópia de dois ficheiros. Consulta da lista telefónica lendo os dados de um ficheiro Passagem de argumentos na linha de comando e argumentos da função main: int argc e char *argv[]. Criação de um interface para a manipulação duma lista telefónica. Menu de opções: entrada de um novo elemento, pesquisa por nome, remoção de um elemento e listagem de todos os elementos da lista. Uso da instrução do ... while. Rotina para guardar a lista modificada em ficheiro. Solução Ficheiros
(streams)
11-1/2 Resolução de problemas de pesquisa usando retrocesso. Exemplo 1: percorrer um tabuleiro nxn com movimentos de uma peça de cavalo de xadrez. Solução Procura de caminho num labirinto simples. Problemas de
Pesquisa
12-1/9 fim das aulas fim das aulas