Sumários
Aula Data Sumário Bib
1 18/09 Objectivos da disciplina e tópicos do programa. Métodos de avaliação. Bibliografia recomendada. Linguagens de Programação e Algoritmos.
2 26/09 Etapas para a construção de um programa em C. Pseudo-código e estrutura básica de um programa em C. Noção de variével e atribuição. Instruções em sequência, condicionais e de ciclo. Funções scanf e printf. Exemplos: tutores simples de aritmética; comparação entre dois inteiros; análise da qualidade do ar durande um período de dias. tutor1.c, tutor2.c
comp.c, comp2.c
ar1.c, ar2.c
3 02/10 Tipos de dados simples em C. Variáveis, constantes e expressões. Expressões: aritméticas, relacionais e lógicas.Expressões de atribuição. Operadores de incremento e decremento. Tipos de instruções duma linguagem imperativa. Estruturas de controlo. Instruções de atribuição. Instruções de controlo. Instruções condicionais (if e if... else). Instruções de ciclo (while). Desenvolvimento de algoritmos e codificacao em linguagem C para os seguinte problemas: Factorial de um número inteiro positivo Determinação do máximo duma sequência de valores (inteiros). fact1.c, max1.c
4 09/10 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. Determinar o n-ésimo termo duma sucessão. Desenvolvimento de algoritmos e codificacao em linguagem C para a primalidade e factorização de inteiros positivos. Noção de algoritmos polinomiais e exponenciais. Tempo de execução e complexidade. Algoritmo de Euclides. contap.c, somamp.c
subncres.c, subigual.c
fib.c, primo.c
factor.c, euclides.c
5 16/10 Instruções de ciclo for e do while. Repetição usando contadores. Uso das instruções break e continue em ciclos.Noção de função.Desenvolvimento de um programa para a 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. Protótipos. Estrutura de um programa em C. Desenvolvimento de um programa para para tabelar primos de Mersenne. Biblioteca de funções matemáticas do C. Funções de entrada e saída formatada printf e scanf. doisultimos.c, fact2.c,
potencias.c, mersenne.c
6 23/10 Representação de números em vírgula flutuante e cálculo não exacto. Tipos de dados do C em vírgula flutuante e inteiros. Conversões. Determinação aproximada do número de Nepar e. Regras de promoção e coersão de argumentos de funções. 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 uma moeda. Uso da função srand(). Programa de simulação de lançamentos de um dado e verificação da distribuição uniforme dos valores possíveis. Instrução de escolha switch(). fi.c, exp1.c,
aleo.c, moeda1.c, alice.c
dado1.c, dados1.c,
7 30/10 Tipo char em linguagem C. Função getchar() Exemplo: contagem de vogais num ficheiro de texto. Função putchar(). Exemplos. Desenvolvimento de um algoritmo e de um programa em linguagem C para contagem de caracteres, linhas e palavras de um ficheiro de texto. Estruturas de dados complexos. Variáveis indexadas unidimensionais. Exemplos. Definição, inicialização e acesso a elementos em variáveis indexadas. Determinação da frequência e média de um conjunto de valores inteiros num dado intervalo. ascii.c, aa.c,
vogais.c, maius.c, contapal.c
taxas.c, freq.c,
8 06/11 Manipulação de variáveis indexadas: contar a ocorrência de múltiplos de um dado m numa variável indexada de inteiros; verficar se uma variável indexada de inteiros está ordenada por ordem não decrescente. Programa para determinar os vencedores num torneio com n partidas e m jogadores. Manipulação de elementos numa variável indexada: deslocamentos e trocas. Inserção de elementos numd dada posição e inversão duma variável indexada. Operações sobre conjuntos. Pesquisa linear de um elemento numa sequência. Pesquisa e ordenação. Pesquisa binária multiplos.c, ordenados.c,
torneio1.c, dados.txt torneio2.c, peslin.c
pes1.c, freq.c,
9 13/11 Teste intermédio
10 20/11 Ordenação: métodos da Bolha, inserção e seleção. Efifiencia do método da seleção. Comparação experimental dos métodos. Â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. Organização de um programa em C. Animação de métodos de ordenação
Seleção,
Bolha
Insercao,
complica.c, complica2.c, maxi.c,
11 27/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 . 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. f_str.c,
encontra.c
relbin.c,
ordlin.c, chove.c,
12 4/12 Recursividade. Comparação entre o paradigma de programação iterativo e o recursivo. Funcionamento duma função recursiva. Exemplos: factorial, representação de inteiros numa base, sequência de Fibonacci e torres de hanoi. Método de ordenação Quicksort. Resolução de problemas de pesquisa usando retrocesso. Exemplo 1: percorrer um tabuleiro nxn com movimentos de uma peça de cavalo de xadrez. fact2.c,
num.c, hanoi.c
qsort.c,
salta.c,
13 11/12 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. Apontadores: atribuição, passagem de argumentos, valoes de retorno, Apontadores e variáveis indexads: aritmética de apontadores. /td> estruturas1.c,
baralha.c, aponta2.c