💻 Exemplos de Código: Cap 06 - Laços Indeterminados e Sentinelas
Código executável completo demonstrando laços com while, laços pós-teste com do-while, padrões contador/acumulador, sentinelas de parada e validação de dados.
📄 Exemplo 1: Coletor de Dados com Valor Sentinela (coletor_sentinela.c)
#include <stdio.h>
#include <stdint.h>
int main(void) {
int32_t valor = 0;
int32_t soma = 0;
uint32_t contador = 0;
printf("====================================================\n");
printf(" 📊 PROCESSADOR DE DADOS VIA VALOR SENTINELA\n");
printf(" (Digite valores positivos ou digite -1 para sair)\n");
printf("====================================================\n");
printf("Digite o primeiro valor: ");
if (scanf("%d", &valor) != 1) return 1;
// Laço indeterminado: continua até o usuário digitar o sentinela -1
while (valor != -1) {
soma += valor; // Padrão Acumulador
contador++; // Padrão Contador
printf("Digite o proximo valor (-1 para encerrar): ");
if (scanf("%d", &valor) != 1) return 1;
}
printf("----------------------------------------------------\n");
printf(" Itens Lidos: %u\n", contador);
printf(" Soma Total: %d\n", soma);
if (contador > 0) {
double media = (double)soma / contador;
printf(" Media Aritmetica: %.2lf\n", media);
} else {
printf(" Nenhum dado foi inserido.\n");
}
printf("====================================================\n");
return 0;
}
📄 Exemplo 2: Validação de Entrada e Menu Interativo com do-while (menu_validacao.c)
#include <stdio.h>
int main(void) {
int opcao;
double temperatura;
do {
printf("\n=== PAINEL DE CONTROLE AMBIENTAL ===\n");
printf(" 1. Calibrar Temperatura da Camara\n");
printf(" 2. Exibir Status dos Filtros\n");
printf(" 0. Desligar Painel\n");
printf(" Escolha: ");
scanf("%d", &opcao);
switch (opcao) {
case 1:
// Laço de validação de dados
do {
printf(">> Digite a nova temperatura (-50.0 C a +150.0 C): ");
scanf("%lf", &temperatura);
if (temperatura < -50.0 || temperatura > 150.0) {
printf("[AVISO]: Valor fora dos limites seguros! Tente novamente.\n");
}
} while (temperatura < -50.0 || temperatura > 150.0);
printf(">> Temperatura calibrada com sucesso em: %.1lf C\n", temperatura);
break;
case 2:
printf(">> Filtros HEPA: 98%% de Eficiencia (Nominal)\n");
break;
case 0:
printf(">> Desligando painel com seguranca...\n");
break;
default:
printf(">> Opcao invalida!\n");
break;
}
} while (opcao != 0);
return 0;
}
🧭 Navegação Rápida
| 📖 Teoria | 📊 Slides | 🧠 Quiz | 💻 Exemplos | 🧩 Exercícios | | :— | :— | :— | :— | :— | | Ler Teoria | Ver Slides | Fazer Quiz | Ver Exemplos | Praticar Exercícios |