Fundamentos da Programação
Resolver problemas em Python, compreender o estado de um programa e escrever funções imperativas e livres de efeitos.
Converter uma duração, contar votos e percorrer listas aninhadas exigem decisões diferentes. O percurso começa com valores e instruções, passa à decomposição em funções e compara soluções que alteram estado com soluções livres de efeitos. Em cada problema, segue uma entrada pequena e verifica o contrato.
Percurso de estudo
- Primeiros programas começa pelo algoritmo, tipos, expressões, entrada e saída. Aprende a distinguir uma falha de sintaxe de um resultado errado.
- Condições e ciclos mostra como escolher um ramo, repetir um cálculo e justificar que o ciclo termina.
- Funções separa subproblemas, retorno, passagem de argumentos e âmbito dos nomes.
- Strings trabalha índices, fatias e transformações de texto.
- Tuplos e listas distingue sequências imutáveis, mutação, alias e cópia.
- Dicionários e conjuntos escolhe entre associação por chave e pertença sem duplicados.
- Recursão liga um caso base à redução do problema e segue as chamadas até ao regresso.
- Compreensões e geradores transforma coleções com compreensões e distingue construir uma sequência de a consumir passo a passo.
- Programação funcional trata funções como valores e compara soluções com
map,filterereduce, usando os iteradores da lição anterior. - Algoritmos e complexidade aplica pesquisa e contagem de operações. É um complemento às estratégias de resolução de problemas, não um tópico autónomo nomeado na ficha de 2026/27.
- Ficheiros, exceções e testes junta persistência, tratamento de entradas inválidas, módulos e verificação.
Cada lição associa exercícios ao tema, com resolução e ajuda quando acrescenta um passo útil. Tenta resolver antes de abrir a solução. Nos exercícios de programação, os testes apresentados verificam casos do contrato; não provam a correção para todas as entradas nem uma restrição de estilo. A cheat sheet serve para consulta depois de estudares.
Como praticar
Antes de escrever código, identifica a entrada, o resultado e os casos limite. Segue uma entrada pequena à mão. Depois implementa uma parte de cada vez e compara o resultado com o que calculaste, incluindo sequências vazias, limites de intervalos e valores repetidos quando fazem sentido.
Nos editores desta cadeira, a linguagem é Python 3. O código corre numa execução descartável. Os ficheiros criados pelo exemplo existem só nessa execução. Para praticar no teu computador, guarda o programa num ficheiro .py e corre python3 nome.py num terminal. Não escrevas o indicador >>> da consola dentro do ficheiro.
Edição e avaliação
A ficha pública de 2026/27, consultada em outubro de 2026, apresenta programa, bibliografia, regras de avaliação e ligação ao Moodle. Estes apontamentos seguem esse programa. Confirma no Moodle o calendário e as condições em vigor.
A avaliação publicada é 0.4 MT1 + 0.4 MT2 + 0.2 MT3, com recurso 1.0 ER e época especial 1.0 EEP. Há um limite de faltas de 25% das aulas TP. A ficha de 2025/26 serve apenas para comparação entre edições.
Fontes e âmbito
A base oficial é o programa de FP de 2026/27: pensamento computacional, dados simples e compostos, condicionais, iteração, funções, passagem de parâmetros, recursão, ficheiros, programação livre de efeitos, funções de ordem superior, compreensões, estratégias de resolução, teste e depuração. Os resultados de aprendizagem também incluem exceções e problemas numéricos.
As fichas RE01 a RE13, internas de 2018/19 e consultadas no repositório público de FPRO, ajudam a escolher tipos de problemas. O Moodle de 2024/25 consultado não disponibilizava materiais de ensino. Estas fontes não confirmam os enunciados nem as regras atuais.
Os slides de Python 3 de André Restivo apoiam a sintaxe e os exemplos. O Caderno FP SofiaViP é um apoio de estudante, sem valor oficial. Nenhum identifica uma edição atual de FP.
Bibliografia da ficha de 2026/27:
- Peter Wentworth, Jeffrey Elkner, Allen B. Downey e Chris Meyers, How to Think Like a Computer Scientist: Learning with Python 3, 3.ª edição, bibliografia obrigatória. Apoia o desenvolvimento passo a passo, funções, coleções e recursão.
- Allen B. Downey, Think Python, 2.ª edição, bibliografia complementar. Apoia contratos, depuração e raciocínio sobre mutabilidade.
- Steven F. Lott, Building Skills in Python, bibliografia complementar. O PDF antigo indicado pelo autor estava indisponível; não foi usado como texto integral.
- David Mertz, Functional Programming in Python, bibliografia complementar. Não foi consultado um texto integral da edição da ficha.
- Documentação oficial do Python, para confirmar operações, exceções e comportamento dos iteradores.
As provas práticas históricas disponíveis no arquivo Accio de FP identificam 2018/19, 2019/20 e 2020/21 nos próprios documentos. Ajudam a escolher prática de construção de programas, combinação de coleções, recursão e geradores. Não confirmam a avaliação atual; não havia provas de 2024/25 ou 2025/26 nesse arquivo.
Os exemplos e resoluções foram escritos para estes apontamentos. Os exercícios de nomes completos, produto interno e árvores de expressões adaptam problemas de RE06, RE08 e RE10, de 2018/19. A conversão de base, a contagem recursiva, os pares de reservas e o gerador de intervalos adaptam objetivos das provas históricas, com domínios, convenções e casos próprios. A atribuição está nos conjuntos de prática. A procura de soma exata e a condição sobre caixas e peças são problemas próprios. Geradores, pesquisa binária e análise de custo são aprofundamentos sinalizados no percurso; os materiais de ensino do Moodle 2026/27 exigem autenticação e continuam por confirmar.