|
Programação II |
Os principais objetivos desta Unidade Curricular são:
- aprofundar os conhecimentos de programação em linguagem C, através do estudo de alguns tópicos avançados como ficheiros binários e memória dinâmica;
- adquirir conhecimentos sobre algoritmia, em particular algoritmos recursivos, de ordenação e de pesquisa, e análise de complexidade dos algoritmos.
No final da Unidade Curricular o estudante deve ser capaz de
- resolver problemas utilizando a linguagem de programação em C e os conceitos avançados estudados, assim como desenvolver competências de algoritmia, em particular em problemas que envolvam recursividade, ordenação e pesquisa;
- analisar a eficiência dos algoritmos, através da respetiva análise de complexidade, de forma a usar os algoritmos mais eficientes na resolução de problemas.
|
Programação II |
PARTE A - Tópicos avançados da linguagem C
1 - Introdução: estruturas, ponteiros e ficheiros de texto
2 - Gestão de memória dinâmica
3 - Ficheiros binários
4 - O pré-processador do C. Passagem de parâmetros a main. Construção de bibliotecas de funções
5 - Introdução a "Makefiles"
PARTE B - Algoritmos
6 - Algoritmos recursivos
7 - Análise de complexidade dos algoritmos
8 - Estruturas de dados sequencial (Listas) com armazenamento sequencial
8.1 - Implementação de Listas usando memória dinâmica
8.1.1 - Criar uma Lista
8.1.2 - Inserir um elemento numa Lista
8.1.3 - Remover um elemento numa Lista
8.2 - Algoritmos de ordenação (os elementos de uma Lista)
8.2.1 - Iterativos: Selecção e Borbulhagem/Bubblesort
8.2.2 - Recursivos: Separação/Quicksort e Fusão
8.3 - Algoritmos de pesquisa (um elemento numa Lista)
8.3.1 - Iterativos: exaustiva, sequencial e binária
8.3.2 - Recursivos: binária
8.4 - Tabelas de dispersão (Hash)
|
Programação II |
"Estruturas de Dados e Algoritmos em C", 2008
António Manuel Adrego da Rocha
FCA - Editora Informática. Coleção: Tecnologias de Informação
ISBN: 9789727222957
"Algorithms in C, Parts 1-5 (Bundle): Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms", 3rd Edition, 2001
By Robert Sedgewick
Addison-Wesley Professional
ISBN: 0201756080
"Elementos de Programação com C", 3ª Edição Actualizada e Aumentada, 2006
Pedro João Valente Dias Guerreiro
FCA - Editora Informática. Coleção: Tecnologias de Informação
ISBN: 9789727225101
"Introdução à Programação Usando C", 2006
António Manuel Adrego da Rocha
FCA - Editora Informática. Coleção: Tecnologias de Informação
ISBN: 9789727225248
|
Programação II |
A avaliação no período de Aprendizagem consiste no seguinte:
- 2 Fichas de Trabalho: 4 valores (a realizar ao longo do semestre nas aulas práticas e valendo 2 valores cada)
- 2 Testes Escritos: 16 valores (8 valores + 8 valores)
- Assiduidade: 75%
Aprendizagem = Fichas de Trabalho + Testes Escritos
em que,
- Assiduidade < 75% ==> Reprovado e Não Admitido a Exame
- Fichas de Trabalho < 1 (em 4) ==> Reprovado e Não Admitido a Exame
- Aprendizagem < 5,5 ==> Reprovado e Não Admitido a Exame
- Aprendizagem >= 9,5 ==> Aprovado e Dispensado de Exame
- Outros casos ==> Reprovado e Admitido a Exame
Exame = Fichas de Trabalho + Teste Escrito (Exame)
em que,
- Fichas de Trabalho (realizadas ao longo do semestre): 4 valores
- Teste Escrito (Exame): 16 valores
|
Programação II |
Tipo
Data
Salas
Frequência 1 10/04/2019 - 18h - Frequência 2 29/05/2019 - 18h - Ficha Trabalho 1 01/04 - 05/04 Aulas práticas Ficha Trabalho 2 03/06 - 07/06 Aulas práticas
Testes do ano lectivo 2017-2018:
Frequência 1 [26-04-2018] ==> Enunciado + Resolução
Frequência 2 [30-05-2018] ==> Enunciado + Resolução
Exame Época Normal [22-06-2018] ==> Enunciado
Testes do ano lectivo 2018-2019 (1º Semestre):
Frequência 1 [30-10-2018] ==> Enunciado + Resolução
Frequência 2 [07-01-2019] Enunciado + Resolução
Exame Época Normal [21-01-2019] Enunciado
|
Programação II |
Ano letivo 2018/2019, 1º Semestre (necessita de senha de acesso)
Fichas de Trabalho
Frequência 1
Frequência 2
Aprendizagem (Fichas de Trabalho + Frequência 1 + Frequência 2)
Exame Época Normal
Exame Época Recurso
|
Programação II |
PARTE A - Tópicos avançados da linguagem C
3. Ficheiros binários Mais sobre ficheiros binários
4. O pré-processador do C. Passagem de parâmetros a main
PARTE B - Algoritmos
7. Análise de complexidade dos algoritmos
8. Estruturas de dados sequencial (Listas) com armazenamento sequencial
8.1. Implementação de Listas usando memória dinâmica
8.2. Algoritmos de ordenação
8.2.1. Iterativos: por selecção e por troca/borbulhagem (Bubble Sort)
8.2.2. Recursivos: por separação (Quick Sort) e por fusão (Merge Sort) Exemplos
8.3. Algoritmos de pesquisa:
8.3.1. Iterativos: Exaustiva, Sequencial e Pesquisa Binária
8.3.2. Recursivos: Pesquisa Binária
8.4. Tabelas de Dispersão (Hash) Mais sobre Tabelas de Hash
Sebenta
Capítulo 1 - Introdução
Capítulo 2 - Estrutura de Dados sequencial com armazenamento sequencial
Outros apontamentos
Exemplos
Exemplo 1: Memória dinâmica + Ordenação
Exemplo 2: Memória dinâmica + Ordenação + Pesquisa
Exemplo 3: Inserção e remoção de um elemento de um vetor ordenado
Exemplo 4: Remover todos os elementos de um vetor ordenado entre E1 e E2
|
Programação II |
Folha 1.1 - Estruturas (struct)
Folha 1.2 - Ponteiros
Folha 1.3 - Ficheiros de texto
Folha 2 - Gestão de memória dinâmica
Folha 3 - Ficheiros binários
Folha 4 - O pré-processador do C
Folha 5 - Introdução a makefiles
Folha 6 - Algoritmos recursivos
Folha 7 - Análise de complexidade dos algoritmos
Folha 8.1 - Implementação de Listas usando memória dinâmica
Folha 8.2 - Algoritmos de ordenação
Folha 8.3 - Algoritmos de pesquisa
Folha 8.4 - Tabelas de dispersão (Hash)
Outras folhas práticas
Bibliotecas
FuncoesAuxiliaresVetoresInteiros
Funções implementadas fornecidas:
LerVector (lê de um ficheiro de inteiros - um valor em cada linha)
LerVectorALUNO (lê de um ficheiro com elementos do tipo ALUNO)
Exemplos implementados:
Ficheiros de texto fornecidos:
Entrada no sistema
|
Programação II |
Acesso a partir dos computadores das salas 6.14 e 6.19 (usar Firefox ou Internet Explorer)
Acesso a partir de outros computadores (usar Firefox ou Internet Explorer)
|
Programação II |
Horas
Segunda
Sala
Terça
Sala
Quarta
Sala
Quinta
Sala
Sexta
Sala
8
9
TE
6.03
10
TE
6.03
11
PL3
4.18
PL2
6.13
12
PL3
4.18
PL2
6.13
13
14
PL4
6.13
PL5
6.14
PL1
6.14
15
PL4
6.13
PL5
6.14
PL1
6.14
16
ATEND
ATEND
G4.2
17
ATEND
ATEND
G4.2
18
ATEND
ATEND
G4.2