Como escrever instruções if em C, com fluxogramas para entendimento visual.
if (cond) { ... } forma básicaelse trata o caso falsoelse if para três ou mais ramificações — a mais restrita primeiroelse if para três ou mais casoselse se vincula em ifs aninhadosif faz.if (condicao) { // executa quando a condição for verdadeira }
int score = 75; if (score > 59) { printf("Aprovado\n"); }
score > 59 é verdadeiro, o corpo dentro de { } é executado. Se score for 50, a condição é falsa e o corpo é totalmente ignorado.< e > para entender o fluxo básico "verdadeiro → entra, falso → pula". Operadores como ==, <=, >=, && e || são tratados na próxima aula, "Operadores de Comparação e Lógicos".bool dedicado (o C99 adicionou stdbool.h), então valores de verdade são apenas inteiros.1, -1, 100, 3.14 ...if (1) // sempre verdadeiro - o corpo sempre roda if (0) // sempre falso - o corpo nunca roda if (score) // verdadeiro quando score é diferente de zero
{ } importam{ } agrupam várias instruções no corpo do if. Para um corpo de uma única instrução, as chaves são tecnicamente opcionais — mas iniciantes devem sempre escrevê-las.if (x > 0) { printf("positivo\n"); count++; }
if (x > 0) printf("positivo\n"); count++; // NÃO está dentro do if - sempre roda
count++; pareça estar dentro do if, sem chaves somente a próxima instrução conta como corpo.else é a cláusula "caso contrário". Quando a condição do if é falsa, o corpo do else é executado no lugar.int score = 45; if (score > 59) { printf("Aprovado\n"); } else { printf("Reprovado\n"); }
if quando verdadeiro, o corpo do else quando falso. Nunca os dois, nunca nenhum.else é opcionalelse não é obrigatório. Se você só se importa com o caso "verdadeiro," basta deixá-lo de fora.if (age > 17) { printf("adulto\n"); } else { printf("menor\n"); }
if (errors > 0) { printf("aviso\n"); } // não faz nada no sucesso
if + else cobre dois resultados. Para três ou mais casos, encadeie else if. Isso é só uma forma abreviada de "coloque outro if dentro do else."int score = 75; if (score > 89) { printf("A\n"); } else if (score > 69) { printf("B\n"); } else if (score > 49) { printf("C\n"); } else { printf("D\n"); }
score > 49 primeiro, notas de 90 e 70 também entram ali, então todas param no C. Sempre coloque a condição mais restrita primeiro.else final captura "nenhum dos anteriores." Omita-o e nada acontece, sem aviso, quando nenhum caso bate. Escrevê-lo explicitamente é mais seguro.; logo após a condiçãoif (score > 59); { printf("Aprovado\n"); }
; logo após a condição encerra o if. O { ... } que vem depois é apenas um bloco comum, então sempre executa, independentemente do score.if o else se vinculaif (a > 0) if (b > 0) printf("ambos positivos\n"); else printf("b não é positivo\n");
else se vincula ao if mais próximo. Para evitar confusão, sempre use { } ao aninhar.if (score > 49) { printf("C\n"); } else if (score > 89) { printf("A\n"); }
score > 49 é verdadeira, então nunca chega em A. Lembre-se: cadeias else if são avaliadas de cima para baixo.int x = 100; if (2 < x < 5) { printf("dentro do intervalo\n"); }
2 < x primeiro, obtém 0 ou 1, e então compara isso com < 5 — assim, mesmo x = 100 sai como "verdadeiro". A forma correta de escrever uma condição de intervalo é vista na próxima aula, "Operadores de Comparação e Lógicos".| Nome | Tipo | Valor |
|---|
else if para classificar: A/B/C/Dage para 16 ou 20 e compare a saídax > 0 e x < 0if dentro de ifTeste o que você aprendeu nesta aula. Para combinar com o conteúdo, todos os problemas usam apenas < e >.
Em C, 0 é falso e qualquer coisa diferente de zero é verdadeiro. Quando a condição é 0, o bloco if é pulado.
int x = 5; if (x > 0) { printf("A\n"); } else { printf("B\n"); }
5 > 0 é verdadeiro, então a ramificação if imprime A.
int x = -2; if (x > 0) { printf("positivo\n"); } else { printf("não é positivo\n"); }
-2 > 0 é falso, então a ramificação else é executada.
int score = 75; if (score > 89) { printf("A\n"); } else if (score > 69) { printf("B\n"); } else { printf("C\n"); }
75 não é maior que 89, mas é maior que 69, então B é impresso.
int score = 95; if (score > 49) { printf("C\n"); } else if (score > 89) { printf("A\n"); }
95 já satisfaz a primeira condição score > 49, então C é impresso e o else if nunca é avaliado. Lição: escreva a condição mais estrita primeiro.
int score = 40; if (score > 59); { printf("Aprovado\n"); }
O ; extra após if (score > 59) encerra o if ali mesmo. O bloco que segue não tem nada a ver com o if, então sempre executa.
if (a > 0) if (b > 0) printf("ambos positivos\n"); else printf("b não é positivo\n");
else se vincula ao if mais próximo. O a > 0 externo é verdadeiro e o b > 0 interno é falso, então o else é executado.
{ }Em C, blocos são determinados por { }, não pela indentação. Para colocar várias linhas dentro de um if, sempre use { }.