Spec Sistemas Com Cpp • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 04.1 — Range-Based for Loop com Referências Constantes (const auto&)

Contexto: Range-Based for Loop com Referências Constantes (const auto&) no contexto de Estruturas de Repetição (while, for, range-based for).

Requisitos de Execução:

  1. Iterar sobre coleção de objetos pesados sem realizar cópias desnecessárias com for (const auto& item : colecao).

Resultado Esperado

Coleção percorrida com cópia zero e máxima eficiência.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_1_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Estruturas de Repetição (while, for, range-based for)
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <vector>
#include <string>

int main() {
    std::vector<std::string> servidores{"srv-app01", "srv-db01", "srv-redis01"};
    for (const auto& srv : servidores) {
        std::cout << "Servidor ativo: " << srv << std::endl;
    }
    return 0;
}

🔍 Nível 2: Prática

Problema 04.2 — Range-based for com Inicializador (C++20)

Contexto: Range-based for com Inicializador (C++20) no contexto de Estruturas de Repetição (while, for, range-based for).

Requisitos de Execução:

  1. Declarar coleção temporária diretamente no cabeçalho do range-for for (auto lista = get(); const auto& x : lista).

Resultado Esperado

Ciclo de vida da coleção encapsulado estritamente no laço for.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_2_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Estruturas de Repetição (while, for, range-based for)
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <vector>

std::vector<int> obter_dados() { return {10, 20, 30}; }

int main() {
    for (auto dados = obter_dados(); const auto& v : dados) {
        std::cout << "Item: " << v << std::endl;
    }
    return 0;
}

⚡ Nível 3: Integração

Problema 04.3 — Filtragem e Transformação Fluente com std::views (C++20 Ranges)

Contexto: Filtragem e Transformação Fluente com std::views (C++20 Ranges) no contexto de Estruturas de Repetição (while, for, range-based for).

Requisitos de Execução:

  1. Compor pipeline de dados com std::views::filter e std::views::transform avaliados de forma lazy.

Resultado Esperado

Pipeline de ranges processado com avaliação preguiçosa (Lazy Evaluation).

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_3_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Estruturas de Repetição (while, for, range-based for)
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <vector>
#include <ranges>

int main() {
    std::vector<int> nums{1, 2, 3, 4, 5, 6, 7, 8};
    auto resultado = nums 
        | std::views::filter([](int n) { return n % 2 == 0; })
        | std::views::transform([](int n) { return n * 10; });

    for (int n : resultado) std::cout << n << " ";
    std::cout << std::endl;
    return 0;
}

🏆 Nível 4: Desafio Corporativo

Problema 04.4 — Geração Infinita de Sequências com std::views::iota e take

Contexto: Geração Infinita de Sequências com std::views::iota e take no contexto de Estruturas de Repetição (while, for, range-based for).

Requisitos de Execução:

  1. Gerar fluxo de IDs crescentes sob demanda limitando com std::views::take(5).

Resultado Esperado

Sequência gerada sob demanda sem alocar memória para itens intermediários.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_4_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Estruturas de Repetição (while, for, range-based for)
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <ranges>

int main() {
    for (int id : std::views::iota(1000) | std::views::take(5)) {
        std::cout << "ID Gerado: " << id << std::endl;
    }
    return 0;
}

⬅️ Voltar ao Índice de Exercícios 📚 Sumário de Tópicos