Questão de Programação — Programação estruturada — FUNDATEC 2025
Programação›Programação estruturada
Código
qg473696
Banca
FUNDATEC
Órgão
IF Sul - MG
Ano
2025
Nível
Superior
Cargo
PEBTT - Informática
Para responder a questão, considere o programa a seguir, feito em linguagem C.
As linhas estão numeradas apenas para referência.
A função main apresenta alguns erros em seu código. Dois deles não impedem a execução do programa, mas comprometem as respostas dadas por ele relacionadas aos valores da área e do perímetro. As linhas que apresentam esse erro são:
A15 e 26.
B17 e 19.
C18 e 20.
D21 e 22.
E23 e 24.
Revelar gabarito e comentário▾
GabaritoC — 18 e 20.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Resolução
Gabarito: letra C — a conta chega a Linhas 18 e 20 — alternativa C.
A ideia por trás
Em programação, um erro de lógica é aquele que não impede o programa de rodar, mas faz com que ele produza resultados errados. Diferente de erros de sintaxe (que impedem a compilação) ou de execução (que travam o programa), o erro de lógica passa despercebido porque o programa executa normalmente — só que com valores incorretos. Um exemplo clássico é trocar o operador de comparação == pelo de atribuição = dentro de um if.
No comando if, a expressão entre parênteses é avaliada: se for zero, é falsa; se for diferente de zero, é verdadeira. Quando se escreve if (x = 5), o valor 5 é atribuído a x e a expressão retorna 5, que é verdadeiro — então o bloco sempre executa, e ainda por cima x é modificado. Já if (x == 5) compara x com 5 e só executa se forem iguais. Essa troca é um erro de lógica típico: não impede a execução, mas corrompe os dados e os resultados.
A questão pede exatamente os erros de lógica que não impedem a execução, mas comprometem área e perímetro. As linhas 18 e 20 contêm essa troca de operadores, fazendo com que as condições sejam sempre verdadeiras e os cálculos usem valores errados.
O que a questão dá
programa em C que calcula área e perímetro de um retângulo
linhas 18 e 20 usam operador de atribuição = no lugar de comparação ==
erros não impedem execução, mas comprometem resultados
O que queremos: identificar as linhas com erros de lógica que afetam área e perímetro
Passo 1 — Analisar o efeito do operador = no if
Para achar o erro, precisamos entender o que acontece quando se usa = em vez de ==. No comando if, a expressão entre parênteses é avaliada: se for zero, é falsa; se for diferente de zero, é verdadeira. Com =, o valor é atribuído à variável e a expressão retorna esse valor, que é diferente de zero — então a condição sempre é verdadeira, e ainda modifica a variável.
NÃO CAIA NESSA!
Achar que = e == são a mesma coisa; em C, = atribui e == compara.
Passo 2 — Identificar as linhas com o erro
Agora que sabemos o que procurar, olhamos o código. As linhas 18 e 20 são as que verificam se base e altura são maiores que zero antes de calcular área e perímetro. Nelas, o programador usou = em vez de ==, então a condição sempre é verdadeira e os cálculos rodam mesmo com valores inválidos.
NÃO CAIA NESSA!
Procurar erros de sintaxe, como falta de ponto e vírgula, que impediriam a compilação — mas a questão diz que o programa executa.
Passo 3 — Confirmar que são erros de lógica
Para fechar, verificamos se esses erros se encaixam na descrição: não impedem a execução (o programa roda) e comprometem os resultados (área e perímetro saem errados). Isso bate com a definição de erro de lógica, então as linhas 18 e 20 são a resposta.
NÃO CAIA NESSA!
Escolher linhas com erros de sintaxe, que impediriam a execução — mas a questão exclui esses.