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 |


⬅️ Voltar ao Sumário da Especialização