Programação
C++ explicado com programas executáveis, memória, objetos, STL, validação e exercícios próprios.
Os exemplos usam C++17. A contagem de notas acompanha tipos, ciclos, funções e validação; um relógio mostra como uma classe conserva estado válido; um buffer permite seguir cópia, atribuição e movimento. Os programas com ficheiros ou exceções têm instruções para execução local com GCC e CMake.
Percurso
Começa pelos Fundamentos de C++ e por Funções, arrays e texto. Aprende a ler condições, passar argumentos e definir intervalos antes de seguir Apontadores e memória.
Classes e objetos explica como manter estado válido. Cópia, movimento e propriedade acompanha os recursos de cada objeto. Depois, Herança e polimorfismo distingue uma interface base do objeto concreto e mostra o que se perde numa cópia por valor.
Templates e STL junta tipos genéricos, coleções e algoritmos. Ficheiros e validação trata dados externos. Exceções e testes explica falhas, limpeza e verificação. Organizar e depurar programas reúne módulos, CMake, CLion e depuração.
A Cheat sheet serve para rever regras e condições depois de estudar as explicações.
Como praticar
Prevê a saída antes de correr um programa. Se houver apontadores, desenha objetos e setas; se houver ciclos, acompanha índice e acumulador; se houver classes, identifica o invariante. Depois compara a execução com a previsão e muda um caso de fronteira.
Os exercícios no fim das lições usam casos próprios e adaptações atribuídas de enunciados antigos. Pedem leitura de código, decisão sobre contratos e escrita de funções. As respostas em C++ usam autoavaliação, por isso compara o comportamento e o raciocínio com a solução. Resolve primeiro sem abrir as pistas. Num projeto, aplica a mesma sequência a uma operação pequena de cada vez: contrato, implementação, teste e integração.
Confere também a assinatura e as ferramentas permitidas: alguns enunciados arquivados exigem arrays C e proíbem contentores ou funções da biblioteca. Um programa pode dar a saída certa e incumprir essa restrição. O filtro de repetidos e a comparação de letras mostram como resolver os respetivos contratos com ciclos e arrays.
Programa e avaliação
O âmbito segue a ficha preenchida de 2025/26, confirmada em 8 de outubro de 2026. Inclui programação imperativa em C/C++, memória dinâmica, objetos, herança, templates, STL, exceções, bibliotecas padrão, módulos, documentação, testes e runtime sanitizers. As ferramentas indicadas são GCC, CMake e CLion.
Essa edição usa 10% de projeto e 90% de provas, com a componente de provas definida pelo máximo entre a média dos dois mini-testes e o recurso. Esta informação descreve 2025/26. A ocorrência de 2026/27, consultada em 8 de outubro de 2026, ainda não apresenta programa, bibliografia nem regras de avaliação preenchidos. Confirma as condições, datas e materiais permitidos no SIGARRA e no Moodle da tua edição.
Fontes e âmbito
Para esta edição, a referência de escrita é C++17. Vens de Fundamentos de Programação com Python: aqui os tipos decidem a divisão, a memória tem duração explícita e os erros de limites não dão exceção por defeito. A ficha de 2025/26 indica como bibliografia obrigatória C++ How to Program, de Paul e Harvey Deitel, Pearson, 2016, e C How to Program, ISBN 978-0-13-705966-9. Como complemento, indica The C Programming Language, de Kernighan e Ritchie, ISBN 0-13-110362-8; The C++ Programming Language, de Bjarne Stroustrup, ISBN 978-0321563842; e Big C++: Late Objects, de Cay Horstmann, Wiley, 2017.
A página de Stroustrup disponibiliza prefácio, índice e exercícios da quarta edição, orientada a C++11. Usa-a como referência de desenho; as regras de linguagem destas páginas seguem C++17. O arquivo estudantil local FEUP_PROG acrescentou exemplos de tipos de exercícios sobre funções, arrays, strings, memória, classes, herança e STL. Os problemas de relógio e iteradores inspiram a prática, com contratos próprios e atribuição nos conjuntos correspondentes. As resoluções estudantis podem conter erros, por isso os programas destas páginas foram escritos e verificados separadamente.
Os Resumos de Programação de SofiaViP são um suplemento histórico sem ano letivo identificado. Os exemplos destas páginas foram escritos e verificados separadamente; quando um suplemento diverge, vale a ficha e o comportamento confirmado no compilador. A página acessível do Moodle de 2024/25 contém informação e apoio, sem ficheiros de ensino descarregáveis.
O arquivo de Programação no Accio inclui revisões de tentativas das provas práticas de 2023/24, identificadas pelo curso e pelas datas de março, maio e junho de 2024. Foram contribuídas por estudantes; a exportação posterior não muda o ano letivo. Os casos de arrays de saída, conjuntos de letras e síntese de notas adaptam os contratos desses enunciados com dados próprios. O desempate por nome e o comportamento no vazio são explícitos nos nossos exemplos. As provas antigas não confirmam regras ou matéria de avaliação de 2026/27.
As regras de linguagem foram confrontadas com o rascunho público do padrão C++, restringindo os exemplos a C++17, e as decisões de propriedade com as C++ Core Guidelines. Compilação, avisos e sanitizers seguem a documentação de GCC e a organização do build segue a documentação de CMake.