Revisão da ETAPA 3 — if, comparações, lógica e switch

Revise as aulas 12 a 15 com uma folha de consulta, seis questões de leitura de código e uma lista de erros frequentes.

① Folha de consulta

Revise os conceitos essenciais da ETAPA 3nas tabelas a seguir.

🌳 Estrutura de if / else if / else

if (score >= 80) {
    printf("Excelente\n");
} else if (score >= 60) {
    printf("Bom\n");
} else {
    printf("Repetir\n");
}
  • As condições são testadas de cima para baixo. Ao encontrar a primeira verdadeira, a cadeia executa essa alternativa e ignora as seguintes.
  • else significa “nenhuma das condições anteriores foi atendida”

⚖️ Operadores de comparação

SímboloSignificadoExemplo
==Iguala == 5
!=Diferentea != 5
<Menor quea < 5
>Maior quea > 5
<=Menor ou iguala <= 5
>=Maior ou iguala >= 5
  • O resultado é verdadeiro (1) ou falso (0)
  • atribuição = com a comparação == são fáceis de confundir

🔗 Operadores lógicos (combinação de condições)

SímboloSignificadoExemploQuando é verdadeiro
&&E (AND)a>0 && a<10Ambas verdadeiras
||OU (OR)a==0 || a==9Pelo menos uma verdadeira
!NÃO (NOT)!(a==0)Inverte falso para verdadeiro
  • “maior ou igual a 0 E menor que 10” 0 <= a && a < 10
  • Para “maior ou igual a zero e menor que dez”, escreva 0 <= a && a < 10. Não use 0 <= a < 10.

🔀 Estrutura de switch

switch (n) {
    case 1:
        printf("one\n");
        break; // Necessário para encerrar o case!
    case 2:
        printf("two\n");
        break;
    default:
        printf("other\n");
}
  • Em cada case, sem break , a execuçãocontinua no case seguinte(fallthrough)
  • Quando nenhum case corresponde, executa default .
  • Para valores inteiros (int, char), permite apenas comparação por igualdade .

🤔 Quando usar if ou switch

  • Intervalos (condições comoscore >= 80 ) → if
  • Várias igualdades(n igual a 1, 2 ou 3) → switch é mais legível
  • switch aceita inteiros e caracteres (não aceita ponto flutuante ou strings)

② Seis questões de leitura de código

Execute mentalmente antes de clicar em uma alternativa. Se errar, leia a explicação.

Q1. Cadeia de else if

int score = 85;
if (score >= 90)      printf("S\n");
else if (score >= 80) printf("A\n");
else if (score >= 70) printf("B\n");
else                  printf("C\n");

Qual é a saída?

S
A
A B C
B
Explicação: As condições são testadas de cima para baixo: 85 >= 90 é falsa; 85 >= 80 é verdadeira. O programa exibe A e encerra a cadeia. As alternativas restantes não são executadas; B também não aparece.

Q2. Confundir = e ==

int a = 3;
if (a = 0) printf("A\n");
else        printf("B\n");
printf("a=%d\n", a);

Qual é a saída?

A
a=3
B
a=3
A
a=0
B
a=0
Explicação: a = 0 é uma atribuição, não uma comparação. Ela atribui zero a a, e o valor da expressão também é zero. Como zero é falso, o programa entra no else e exibe B. Depois, a continua valendo zero, então aparece a=0. Para comparar, use a == 0.

Q3. Combinação lógica de um intervalo

int a = 7;
if (0 <= a && a < 10) printf("in\n");
else                       printf("out\n");

Qual é a saída?

in
out
Nada
Erro de compilação
Explicação: Para a=7, tanto 0 <= a quanto a < 10 são verdadeiras; com &&, o resultado também é verdadeiro, e a saída é in. Não escreva 0 <= a < 10: em C, isso equivale a (0 <= a) < 10.

Q4. Esquecer break no switch

int n = 2;
switch (n) {
    case 1: printf("A ");
    case 2: printf("B ");
    case 3: printf("C ");
    default: printf("D ");
}

Qual é a saída?

B
B C D
A B C D
B D
Explicação: Como n=2, a execução começa em case 2. Sem break, ela continua por case 3 e default: esse comportamento é chamado fallthrough. Por isso, a saída é B C D. Para impedir a continuação, termine o case com break;.

Q5. A qual if pertence o else?

int a = 0, b = 0;
if (a > 0)
    if (b > 0) printf("both+\n");
    else        printf("a+ b nao positivo\n");
else            printf("a not+\n");

Qual é a saída?

both+
a+ b nao positivo
a not+
Nada
Explicação: Como a=0, o primeiro if (a > 0) é falso, e o else externo é executado. A regra é associar cada else ao if mais próximo que ainda não tenha else; neste código, o else final corresponde ao if externo. A saída é a not+. A indentação não muda essa associação. Use { } para deixar a estrutura clara.

Q6. Apenas default corresponde

int n = 5;
switch (n) {
    case 1: printf("one"); break;
    case 2: printf("two"); break;
    default: printf("other");
}

Qual é a saída?

one
two
other
Nada
Explicação: O valor n=5 não corresponde a nenhum case; portanto, o programa executa default e exibe other. A alternativa default trata os valores que não correspondem a nenhum dos cases.

③ Lista de erros e dificuldades frequentes

Se reconhecer um erro que já cometeu, volte à página correspondente para revisar.
  1. 1
    Confundir atribuição = com comparação ==
    if (a = 0) atribui zero a a e testa zero, que é falso. Para comparar, use ==.
  2. 2
    Escrever diretamente 0 <= a < 10
    Em C, escreva 0 <= a && a < 10. A expressão sem && tem outro significado.
  3. 3
    Esquecer no case de switch o break ao final
    A execução continua diretamente no próximo case(fallthrough), podendo gerar saída inesperada. Termine cada case com break;.
  4. 4
    Associar else ao if errado
    Cada else corresponde ao if mais próximo que ainda não tenha else. Use { } para explicitar os blocos e evitar ambiguidades.
  5. 5
    Inverter a precedência de && e ||
    && tem maior precedência que ||. Assim, a==1 || a==2 && b==3 significa a==1 || (a==2 && b==3). Use parênteses na dúvida.
  6. 6
    Confundir os limites < e <=
    “Menor que” e “menor ou igual” são diferentes. Confira o limite pedido pelo enunciado.
  7. 7
    Passar ponto flutuante ou strings a switch
    A expressão de switch aceita somente tipos inteiros (int / char) . Use if para comparar double ou strings (vetores de char).

④ Páginas para revisar — retome os pontos difíceis

Use os links para voltar diretamente à explicação correspondente.
Aula 12: ifPara revisar if, else if e else Operadores de comparação e lógicosPara revisar ==, && e precedência Aula 14: Teste (if)Pratique com questões semelhantes Aula 15: switchPara revisar case e break Folha de consulta rápidaRevise a precedência em uma página