🧩 Exercícios: Estruturas de Repetição (while, for, range-based for)
Spec Sistemas Com Cpp • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 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:
- 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)
- Salve o arquivo como:
Atividade_04_1_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_04_2_SeuNome - 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:
- Compor pipeline de dados com
std::views::filterestd::views::transformavaliados de forma lazy.
Resultado Esperado
Pipeline de ranges processado com avaliação preguiçosa (Lazy Evaluation).
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_04_3_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_04_4_SeuNome - 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 |