/** * ============================================================================ * PHM Open Source — Curso de Lógica e Programação em C * Módulo 02: Estruturas Condicionais e Tomada de Decisão * Autor: Prof. Paulo Henrique Maciel · PHM Tech * ============================================================================ * * OBJETIVO DIDÁTICO: * Dominar comandos de controle de fluxo condicional (if, else if, else, * operador ternário e switch-case) com validação de dados no intervalo [0, 10] * e cálculo de status acadêmico conforme normas educacionais. * * COMO COMPILAR E EXECUTAR: * gcc 02_decisao_e_validacao.c -o modulo02 && ./modulo02 * ============================================================================ */ #include int main(void) { float nota1, nota2, nota3; float media; printf("====================================================\n"); printf(" PHM TECH — MODULO 02: DECISAO E STATUS ACADEMICO \n"); printf("====================================================\n\n"); printf("Informe as 3 notas do estudante (valores de 0.0 a 10.0):\n"); printf("Nota 1: "); scanf("%f", ¬a1); printf("Nota 2: "); scanf("%f", ¬a2); printf("Nota 3: "); scanf("%f", ¬a3); // 1. VALIDAÇÃO DE ENTRADA (Defensive Programming) if (nota1 < 0.0f || nota1 > 10.0f || nota2 < 0.0f || nota2 > 10.0f || nota3 < 0.0f || nota3 > 10.0f) { printf("\n[ERRO] Uma ou mais notas estao fora do intervalo valido (0 a 10)!\n"); return 1; // Código de erro 1 para o S.O. } // 2. CÁLCULO DA MÉDIA PONDERADA (Pesos: 2, 3 e 5) media = (nota1 * 2.0f + nota2 * 3.0f + nota3 * 5.0f) / 10.0f; printf("\nMedia Ponderada Calculada: %.2f\n", media); // 3. ESTRUTURA CONDICIONAL ENCADEADA (if - else if - else) printf("Resultado Final: "); if (media >= 7.0f) { printf("APROVADO POR MERITO DIRETO! Parabens!\n"); } else if (media >= 4.0f) { printf("EM RECUPERACAO / PROVA FINAL. Necessita de estudos dirigidos.\n"); } else { printf("REPROVADO. Consulte a coordenacao pedagogica.\n"); } // 4. ESTRUTURA MULTI-CASO (switch - case) COM CONCEITO char conceito; if (media >= 9.0f) conceito = 'A'; else if (media >= 7.5f) conceito = 'B'; else if (media >= 6.0f) conceito = 'C'; else if (media >= 4.0f) conceito = 'D'; else conceito = 'F'; printf("\nClassificacao por Conceito: "); switch (conceito) { case 'A': printf("Conceito A — Desempenho Excelente (Rendimento Superior)\n"); break; case 'B': printf("Conceito B — Desempenho Bom (Acima da Media)\n"); break; case 'C': printf("Conceito C — Desempenho Regular (Satisfatorio)\n"); break; case 'D': printf("Conceito D — Desempenho Insuficiente (Necessita Apoio)\n"); break; case 'F': printf("Conceito F — Desempenho Critico\n"); break; default: printf("Conceito Nao Identificado\n"); break; } return 0; }