[xx-xx-2025]
--
Os objetivos gerais de aprendizagem são os seguintes:
- Perceber os fundamentos de programação para resolver problemas de natureza computacional usando computadores
- Perceber como abstrair um problema concreto para a sua devida especificação/modelação e implementação na forma de um programa de computador
- Introduzir os conceitos básicos de programação imperativa
- Desenvolver capacidades de programação com recurso à linguagem C
- Perceber e saber como corretamente integrar uma solução programática com as contingências arquitetónicas de um computador (e.g. aritmética de computador, gestão dinâmica do recurso memória)
Fundamentos de computadores (hardware/software)
Desenho de algoritmos e programação estruturada
Estruturas básicas da linguagem C: tipos de dados básicos, variáveis e operadores (aritméticos, relacionais e lógicos)
Instruções de atribuição e de entrada/saída
Instruções condicionais
Instruções de repetição (ciclos)
Subprogramas (funções)
Tipos de dados compostos: arrays e strings
Apontadores (ponteiros).
Passagem de parâmetros/argumentos em subprogramas
Ficheiros de texto e binários
Tipos de dados definidos pelo utilizador: registos (estruturas)
Gestão dinâmica da memória
Algoritmos recursivos
Aritmética de computador
Técnicas básicas de otimização de código C
"Linguagem C", 25ª Edição Atualizada e Aumentada, 2025
Luís Damas
FCA-Editora de Informática.
ISBN: 978-972-722-945-1
"Introdução à Programação Usando C", 2006
António Manuel Adrego da Rocha
FCA-Editora de Informática.
ISBN: 978-972-722-524-8
"Elementos de programação com C", 3ª Edição Atualizada e Aumentada, 2006
Pedro João Valente Dias Guerreiro
FCA-Editora de Informática.
ISBN: 978-972-722-510-1
"The C Programming Language", Second Edition, 1988
Brian W. Kernighan and Dennis M. Ritchie
Prentice Hall Software Series
ISBN: 978-013-110-362-7
A avaliação no período de Aprendizagem consiste no seguinte :
- 2 Testes escritos (Frequências): 16 valores (8 valores cada)
- 2 Mini-testes práticos a realizar nas aulas práticas (PL): 4 valores (2 valores cada)
Aprendizagem = Mini-testes práticos + Testes escritos (Frequências)
em que,
Situação
Classificação final
Presença nas aulas inferior a 50%
Reprovado e Não Admitido a Exame
Aprendizagem < 5,5 (em 20)
Reprovado e Não Admitido a Exame
Aprendizagem >= 9,5 (em 20)
Aprovado e Dispensado de Exame
Restantes casos
Reprovado e Admitido a Exame
Exame = Mini-testes práticos + Teste escrito
em que,
- Mini-testes práticos (realizados durante o período de Aprendizagem): 4 valores
- Teste escrito: 16 valores
Mini-testes práticos
Data
Hora
Salas
MTP1
-
Aula PL
Aula PL
MTP2
-
Aula PL
Aula PL
Testes escritos (Frequências)
Data
Hora
Salas
Frequência 1 -
18 h
-
Frequência 2 -
18 h
-
Testes do ano letivo de 2024/2025
Frequência 1: Enunciado + Resolução
Frequência 2: Enunciado + Resolução
Exame de Época Normal: Enunciado + Resolução
Exame de Época de Recurso: Enunciado + Resolução
Classificações obtidas nas avaliações (ano letivo 2024/2025)
Mini-testes práticos
Frequência 1 (classificação em percentagem) ## Resolução (sugestão)
Frequência 2 (classificação em percentagem) ## Resolução (sugestão)
Aprendizagem (Mini-testes práticos + Frequências)
Exame - Época Normal (Teste escrito + Mini-testes práticos) ## Resolução (sugestão)
Exame - Época de Recurso (Teste escrito + Mini-testes práticos) ## Resolução (sugestão)
Fundamentos de computadores. Hardware vs. Software
Desenho de algoritmos e programação estruturada
Instruções de atribuição e de entrada/saída
Instruções de repetição (ciclos)
Tipos de dados compostos: arrays
Tipos de dados compostos: strings (cadeia de carateres)
Passagem de parâmetros/argumentos em subprogramas
Tipos de dados definido pelo utilizador: registos/estruturas
Técnicas básicas de otimização de código C
Folha Prática - Edição, compilação e execução de programas em C
Folha Prática - Manipulação de variáveis e de expressões
Folha Prática - Instruções de atribuição e de entrada/saída padrão
Folha Prática - Instruções condicionais
Folha Prática - Instruções de repetição
Folha Prática - Subprogramas (funções)
Folha Prática - Apontadores/ponteiros
Folha Prática - Ficheiros de texto
Folha Prática - Registos/estruturas (struct)
Folha prática - Gestão dinâmica da memória
Folha Prática - Algoritmos recursivos
Folha Prática - Ficheiros binários
Sistema Operativo UNIX
Compiladores de C
DEV-C++ (versão 5.11) - para Windows
TUTORIALSPOINT (online)
CODECHEF (online)
ONLINEGDB (online)
Resolução dos exercícios da folha prática "Arrays"
Biblioteca base
OperacoesBasicas.h ## OperacoesBasicas.c
Arrays de 1 dimensão (inteiros)
Biblioteca: Array1DInteiros.h ## Array1DInteiros.c
Programa principal: A1DInteiros.c
Arrays de 2 dimensões (reais)
Biblioteca: Array2DReais.h ## Array2DReais.c
Programa principal: A2DReais.c
Resolução dos exercícios da folha prática "Apontadores"
Biblioteca base
OperacoesBasicas.h ## OperacoesBasicas.c
Arrays de 1 dimensão (reais)
Biblioteca: Array1DReais.h ## Array1DReais.c
Programa principal: A1DReais.c
Arrays de 2 dimensões (reais)
Biblioteca: Array2DReais.h ## Array2DReais.c
Programa principal: A2DReais.c
Resolução dos exercícios da folha prática "Memória Dinâmica"
Biblioteca base
OperacoesBasicas.h ## OperacoesBasicas.c
Arrays de 1 dimensão (inteiros) - resolução do exercício 3
Biblioteca: Array1DInteirosMD.h ## Array1DInteirosMD.c
Programa principal: array1D_Ex3.c
Arrays de 1 dimensão (reais)
Biblioteca: Array1DReaisMD.h ## Array1DReaisMD.c
Ficheiros de texto fornecidos:
Mini-teste prático
Plataforma de Avaliação
Acesso através dos computadores fixos das salas 6.14 e 6.19
Acesso através de outros computadores
- Segunda-feira, 16h - 18h (Gabinete 4.2)
- Terça-feira, 16h - 18h (Gabinete 4.2)
- Outro horário (sujeito a marcação com o docente)
Horas
Segunda
Sala
Terça
Sala
Quarta
Sala
Quinta
Sala
Sexta
Sala
8
9
PL2
FM
1209
10
11
TE
6.02
PL2
FM
1209
PL4
FM
1209
12
TE
6.02
13
14
PL3
FM
1209
15
16
17
18