# Fundamentos da Programação

Algoritmos e programas em Python, desde variáveis e ciclos até recursão, programação funcional, ficheiros e exceções.

Página: https://resumos.rgo.pt/cadeiras/fp/

FP é a cadeira onde aprendes a programar: pegar num problema, decompô-lo em passos precisos e escrever esses passos em Python de forma que o computador os execute e outra pessoa os consiga ler. Não é preciso experiência prévia; é preciso prática regular, com muitos programas pequenos escritos por ti.

## Como está organizado

Começa por [Primeiros programas](https://resumos.rgo.pt/cadeiras/fp/primeiros-programas/), que fixa algoritmos, tipos, variáveis e expressões. Depois, [Condições e ciclos](https://resumos.rgo.pt/cadeiras/fp/condicoes-ciclos/) mostra como o programa escolhe caminhos e repete trabalho, e [Funções](https://resumos.rgo.pt/cadeiras/fp/funcoes/) ensina a organizar o código em blocos reutilizáveis.

A segunda parte trata de dados compostos: [Strings](https://resumos.rgo.pt/cadeiras/fp/strings/) para texto, [Tuplos e listas](https://resumos.rgo.pt/cadeiras/fp/tuplos-listas/) para sequências e [Dicionários e conjuntos](https://resumos.rgo.pt/cadeiras/fp/dicionarios-conjuntos/) para associações e coleções sem repetições. Com estes materiais, [Recursão](https://resumos.rgo.pt/cadeiras/fp/recursao/) resolve problemas decompondo-os em versões mais pequenas de si próprios.

A terceira parte muda o estilo de programar: [Programação funcional](https://resumos.rgo.pt/cadeiras/fp/programacao-funcional/) usa `map`, `filter` e `reduce`, e [Compreensões e geradores](https://resumos.rgo.pt/cadeiras/fp/compreensoes-geradores/) escreve transformações de sequências de forma compacta. [Algoritmos e complexidade](https://resumos.rgo.pt/cadeiras/fp/algoritmos-complexidade/) compara a pesquisa linear com a pesquisa binária e explica a notação Big-O. Por fim, [Ficheiros e exceções](https://resumos.rgo.pt/cadeiras/fp/ficheiros-excecoes/) guarda dados para além do fim do programa e trata os erros sem deixar o programa morrer.

## Como estudar

Lê cada página com o computador ao lado e executa todos os exemplos. Em FP, perceber o exemplo com os olhos não chega: tens de o reescrever, mudar os valores e prever o resultado antes de correres. Quando o resultado for diferente do que esperavas, pára nesse ponto e descobre porquê; é aí que está a aprendizagem. Resolve depois os exercícios de cada ficha temática, primeiro os que seguem o exemplo da página e só depois as variações.

## Avaliação

A forma de avaliação muda de ano para ano. Consulta a ficha da unidade curricular no SIGARRA e a página da disciplina no Moodle para saberes os prazos das fichas, o peso do projeto e as regras dos testes e do exame.

## Fontes e âmbito

Estas páginas seguem o âmbito da unidade curricular de Fundamentos da Programação do 1.º ano, 1.º semestre da LEIC: programação em Python, com algoritmos e decomposição de problemas; tipos simples, variáveis e expressões; execução condicional e iteração; funções e âmbito de variáveis; strings, tuplos, listas, dicionários e conjuntos; recursão; programação funcional com `map`, `filter` e `reduce`, funções de ordem superior e `lambda`; compreensões e geradores; noções de análise de algoritmos com pesquisa linear e binária e ordens de crescimento; módulos, ficheiros, exceções e asserções.

Material oficial da FEUP:

*   Ficha da unidade curricular de Fundamentos da Programação, ocorrência de 2025/26, com objetivos, programa, bibliografia e avaliação (consultada em setembro de 2026): [SIGARRA](https://sigarra.up.pt/feup/pt/ucurr_geral.ficha_uc_view?pv_ocorrencia_id=560087).
*   Fichas de exercícios RE01 a RE13 da cadeira (introdução ao ambiente, dados simples, fluxo de programa, condicionais e iteração, funções, strings, tuplos, listas, dicionários, recursão, programação funcional, ficheiros e exceções), preservadas em repositório público de estudante e consultadas como referência local.

Material histórico da FEUP, usado para confirmar a estrutura dos temas (os enunciados e a avaliação atuais estão na página da disciplina):

*   Repositórios públicos de exercícios da cadeira e da sua antecessora FPRO do Mestrado Integrado em Engenharia Informática e Computação (2018/19 e 2022/23), consultados como referência local: exercícios em Python por tema, do ambiente de trabalho à recursão e aos ficheiros.
*   Sebenta de introdução à programação em Python para cursos da FEUP (_Sebenta LI_, 2012/13), cadeira adjacente e histórica, consultada como referência local.

Notas de estudantes, úteis como apoio mas sem valor oficial:

*   _Caderno FP SofiaViP_, apontamentos de estudante em circulação pública que acompanham as aulas da cadeira, do algoritmo aos ficheiros e exceções (ficheiro PDF descarregado da pasta pública em setembro de 2026).

Os exemplos e exercícios destas páginas são originais, escritos para este site. Não reproduzem os enunciados das fichas.
