🧩 Exercícios: Estruturas de Seleção switch-case
Spec Sistemas Com C • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 05.1 — Menu de Opções com switch-case e Cláusula default
Contexto: Menu de Opções com switch-case e Cláusula default no contexto de Estruturas de Seleção switch-case.
Requisitos de Execução:
- Criar menu interativo com opções (1: Cadastrar, 2: Consultar, 3: Sair).
Resultado Esperado
Opção selecionada executada com tratamento de opção inválida no default.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_1_SeuNome - Envie na tarefa:
Atividade Cap 05 - Estruturas de Seleção switch-case
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>
int main(void) {
int opcao = 2;
switch (opcao) {
case 1: puts("Executando: Cadastrar"); break;
case 2: puts("Executando: Consultar"); break;
case 3: puts("Executando: Sair"); break;
default: puts("Opcao Invalida"); break;
}
return 0;
}
🔍 Nível 2: Prática
Problema 05.2 — Fallthrough Intencional no switch-case
Contexto: Fallthrough Intencional no switch-case no contexto de Estruturas de Seleção switch-case.
Requisitos de Execução:
- Implementar verificação de dias úteis vs final de semana agrupando múltiplos cases sem break intencionalmente.
Resultado Esperado
Agrupamento de casos no switch validando dias úteis.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_2_SeuNome - Envie na tarefa:
Atividade Cap 05 - Estruturas de Seleção switch-case
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>
int main(void) {
int dia = 6; // 1=Dom, 7=Sab
switch (dia) {
case 1:
case 7:
puts("Tipo: Final de Semana");
break;
case 2: case 3: case 4: case 5: case 6:
puts("Tipo: Dia Util");
break;
default:
puts("Dia invalido.");
break;
}
return 0;
}
⚡ Nível 3: Integração
Problema 05.3 — Calculadora com Operadores Caracteres (+, -, *, /)
Contexto: Calculadora com Operadores Caracteres (+, -, *, /) no contexto de Estruturas de Seleção switch-case.
Requisitos de Execução:
- Executar operações aritméticas básicas baseando-se no caractere operador digitado.
Resultado Esperado
Operação aritmética avaliada e calculada pelo switch.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_3_SeuNome - Envie na tarefa:
Atividade Cap 05 - Estruturas de Seleção switch-case
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>
double calcular(double a, double b, char op) {
switch (op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return (b != 0) ? (a / b) : 0.0;
default: return 0.0;
}
}
int main(void) {
printf("Resultado: %.2f\n", calcular(10.0, 2.5, '*'));
return 0;
}
🏆 Nível 4: Desafio Corporativo
Problema 05.4 — Máquina de Estados Finita (FSM) de Protocolo de Rede com switch-case
Contexto: Máquina de Estados Finita (FSM) de Protocolo de Rede com switch-case no contexto de Estruturas de Seleção switch-case.
Requisitos de Execução:
- Modelar transições de estados de conexão TCP (CLOSED, SYN_SENT, ESTABLISHED, FIN_WAIT).
Resultado Esperado
Máquina de estados de conexão processada com sucesso.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_4_SeuNome - Envie na tarefa:
Atividade Cap 05 - Estruturas de Seleção switch-case
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>
typedef enum { ESTADO_INIT, ESTADO_PROCESSANDO, ESTADO_CONCLUIDO, ESTADO_FALHA } Estado;
Estado transicionar(Estado atual, int evento) {
switch (atual) {
case ESTADO_INIT: return (evento == 1) ? ESTADO_PROCESSANDO : ESTADO_FALHA;
case ESTADO_PROCESSANDO: return (evento == 2) ? ESTADO_CONCLUIDO : ESTADO_FALHA;
default: return atual;
}
}
int main(void) {
Estado e = transicionar(ESTADO_INIT, 1);
printf("Novo Estado: %d\n", e);
return 0;
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |