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 |