🧩 Exercícios: Estruturas Condicionais, constexpr if e Switch Statements
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 03.1 — Declaração de Variáveis no Escopo do if (if com inicializador)
Contexto: Declaração de Variáveis no Escopo do if (if com inicializador) no contexto de Estruturas Condicionais, constexpr if e Switch Statements.
Requisitos de Execução:
- Utilizar
if (auto res = calcular(); res > 0)restringindo o escopo da variável ao bloco condicional.
Resultado Esperado
Variável temporária inicializada e testada dentro do escopo do if.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_1_SeuNome - Envie na tarefa:
Atividade Cap 03 - Estruturas Condicionais, constexpr if e Switch Statements
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
int obter_codigo() { return 200; }
int main() {
if (int status = obter_codigo(); status == 200) {
std::cout << "Status OK: " << status << std::endl;
}
return 0;
}
🔍 Nível 2: Prática
Problema 03.2 — Avaliação em Tempo de Compilação com if constexpr
Contexto: Avaliação em Tempo de Compilação com if constexpr no contexto de Estruturas Condicionais, constexpr if e Switch Statements.
Requisitos de Execução:
- Criar template de função que execute caminhos de código diferentes em tempo de compilação conforme o tipo ser integral ou flutuante.
Resultado Esperado
Código não aplicável descartado em tempo de compilação sem gerar instruções de máquina.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_2_SeuNome - Envie na tarefa:
Atividade Cap 03 - Estruturas Condicionais, constexpr if e Switch Statements
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <type_traits>
template <typename T>
void processar(T valor) {
if constexpr (std::is_integral_v<T>) {
std::cout << "Inteiro processado: " << valor << std::endl;
} else {
std::cout << "Ponto flutuante processado: " << valor << std::endl;
}
}
int main() {
processar(42);
processar(3.14);
return 0;
}
⚡ Nível 3: Integração
Problema 03.3 — Switch com Enum Classes Fortemente Tipadas (Scoped Enums)
Contexto: Switch com Enum Classes Fortemente Tipadas (Scoped Enums) no contexto de Estruturas Condicionais, constexpr if e Switch Statements.
Requisitos de Execução:
- Controlar fluxo de estados utilizando
enum class Statusevitando poluição de namespace global.
Resultado Esperado
Enum class avaliado com cobertura exaustiva no switch.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_3_SeuNome - Envie na tarefa:
Atividade Cap 03 - Estruturas Condicionais, constexpr if e Switch Statements
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
enum class NivelLog { INFO, AVISO, ERRO };
void logar(NivelLog nivel) {
switch (nivel) {
case NivelLog::INFO: std::cout << "[INFO] Operacao normal\n"; break;
case NivelLog::AVISO: std::cout << "[AVISO] Atencao requerida\n"; break;
case NivelLog::ERRO: std::cout << "[ERRO] Falha critica\n"; break;
}
}
int main() {
logar(NivelLog::INFO);
return 0;
}
🏆 Nível 4: Desafio Corporativo
Problema 03.4 — Funções constexpr e consteval para Cálculos no Momento da Compilação
Contexto: Funções constexpr e consteval para Cálculos no Momento da Compilação no contexto de Estruturas Condicionais, constexpr if e Switch Statements.
Requisitos de Execução:
- Criar função
consteval int hash_string(const char* str)garantindo que o cálculo ocorra estritamente em tempo de compilação.
Resultado Esperado
Hash calculado pelo compilador com 0 custo de CPU em tempo de execução.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_4_SeuNome - Envie na tarefa:
Atividade Cap 03 - Estruturas Condicionais, constexpr if e Switch Statements
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
consteval unsigned long long const_hash(const char* str) {
unsigned long long hash{5381};
while (*str) hash = ((hash << 5) + hash) + *str++;
return hash;
}
int main() {
constexpr auto h = const_hash("SISTEMA_CRITICO");
std::cout << "Hash pre-computado: " << h << std::endl;
return 0;
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |