Partilhar: WhatsApp
aulify
UC UC02839 · T. Desenv. Software

Ficha 02 · C++ avançado

Exceptions, threads, move, CMake
Versão · Aluno
Tempo · 4 horas
Aluno(a)
Turma
Data

Exercício 1 · Custom exception

Cria classe Validacao com método static void verificarIdade(int) que lança IdadeInvalida (custom, deriva de invalid_argument) se idade < 0 ou > 150. Demonstra com 3 casos.

Resposta:

Exercício 2 · 2 threads simples

Cria dois threads que cada um imprime os números de 1 a 5. Usa join() para esperar por ambos.

Resposta:

Exercício 3 · Mutex + contador

Cria 4 threads que cada um incrementa um contador partilhado 10000 vezes. Sem mutex, mostra que o resultado é errático. Com lock_guard, mostra que dá 40000 garantido.

Resposta:

Exercício 4 · async/future

Cria função int fibonacci(int n) recursiva. No main, calcula fibonacci(40) e fibonacci(38) em paralelo usando async. Imprime ambos.

Resposta:

Exercício 5 · Move semantics

Cria classe BigBuffer com unique_ptr<int[]> interno (1 milhão de ints). Mede o tempo de copy vs move (com chrono).

Resposta:

Exercício 6 · CMake básico

Cria projecto meu_app com 3 ficheiros: main.cpp, utils.cpp, utils.h. Escreve CMakeLists.txt que compila tudo com C++20 e warnings. Demonstra build out-of-source.

Resposta:

Exercício 7 · Testes com Catch2

Adiciona ao projecto do exercício 6 testes para somar() usando Catch2 via FetchContent.

Resposta:

Exercício 8 · Mini-projecto integrado

Cria uma aplicação que: 1. Lê palavras de um ficheiro de texto. 2. Em paralelo (com async), conta frequências em metades do ficheiro. 3. Combina resultados. 4. Imprime top 10 palavras mais frequentes.

Resposta: