Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FUNDATEC 2025

ProgramaçãoLinguagens de programação
Código
qg473697
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.


Imagem da questão

De acordo com o programa feito em C referenciado, as linhas 03 e 07 possuem um erro que impede a execução do programa, a saber:
  1. AAs funções estão retornando float, mas deveriam retornar void.
  2. BO tipo float não é válido, pois o C só aceita o tipo double.
  3. CO parâmetro b não tem nenhum tipo declarado.
  4. DOs parâmetros a e b são do tipo float, mas devem ser do tipo int.
  5. EEstá faltando o caractere sublinhado (_) no início do nome de cada função para informar ao compilador que elas estão retornando um valor.
Revelar gabarito e comentário

GabaritoC — O parâmetro b não tem nenhum tipo declarado.

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”.

Erros de declaração de função em C

Gabarito: letra C. O erro nas linhas 03 e 07 é que o parâmetro b não tem nenhum tipo declarado — em C, todo parâmetro de função deve ter um tipo explícito, e a ausência disso gera erro de compilação que impede a execução do programa. As demais alternativas apontam problemas que não existem no código: float é um tipo válido, funções podem retornar float normalmente, e não há exigência de sublinhado no nome de funções.

Em linguagem C, a declaração de uma função segue a forma tipo_de_retorno nome_da_funcao(tipo1 param1, tipo2 param2, ...). Cada parâmetro deve ser declarado com seu tipo individualmente. Quando um parâmetro aparece sem tipo, como b nas linhas 03 e 07, o compilador não consegue determinar o tipo do dado que será recebido, gerando erro de sintaxe. Isso é diferente de linguagens como Python, onde os tipos são dinâmicos e não precisam ser declarados — em C, a tipagem é estática e obrigatória.

O tipo float é perfeitamente válido em C para representar números de ponto flutuante (com casas decimais). Funções podem retornar float sem problema algum — o retorno é definido pelo tipo declarado antes do nome da função. A alternativa A sugere que deveriam retornar void, mas isso só seria necessário se as funções não devolvessem valor, o que não é o caso aqui. A alternativa B afirma que float não é válido, o que é falso — float e double são tipos distintos e ambos aceitos. A alternativa D propõe trocar float por int, mas não há erro no uso de float; o erro está na falta de tipo do parâmetro b. A alternativa E inventa uma regra inexistente sobre sublinhado em nomes de função.

Na prática, um exemplo de declaração correta seria float soma(float a, float b), onde ambos os parâmetros têm tipo. Se escrevêssemos float soma(float a, b), o compilador acusaria erro porque b não tem tipo. Esse é exatamente o problema das linhas 03 e 07 do programa. A banca explora a confusão entre a necessidade de declarar tipos em C e a flexibilidade de outras linguagens, além de testar o conhecimento sobre os tipos de ponto flutuante.

A pegadinha central é que o candidato pode se distrair com os tipos float e pensar que o erro está relacionado a eles, quando na verdade o problema é estrutural: a falta de declaração de tipo de um parâmetro. Guarde a regra: em C, todo parâmetro de função exige tipo explícito — é isso que separa a alternativa correta das demais.

  1. 1Tipo de retorno
  2. 2Nome da função
  3. 3Parâmetros com tipo explícito
  4. 4Corpo da função
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Afirma que as funções deveriam retornar void. Isso é falso: funções podem retornar float legitimamente, e o retorno é definido pelo tipo antes do nome. Não há erro no tipo de retorno; o erro está na declaração dos parâmetros.

Alternativa B — ❌ Incorreta

Diz que float não é válido em C, o que é incorreto. float é um tipo primitivo válido para números de ponto flutuante, assim como double. A linguagem aceita ambos; a afirmação é uma invenção sem fundamento.

Alternativa C — ✅ Correta ⟵ GABARITO

O parâmetro b nas linhas 03 e 07 não tem tipo declarado. Em C, todo parâmetro de função deve ter um tipo explícito; a ausência disso gera erro de compilação. Esta é a causa do problema que impede a execução.

Alternativa D — ❌ Incorreta

Propõe que a e b deveriam ser int em vez de float. Não há erro no uso de float; o erro é a falta de tipo em b. Trocar o tipo não resolveria o problema e introduziria uma mudança desnecessária.

Alternativa E — ❌ Incorreta

Afirma que falta sublinhado no início dos nomes das funções. Não existe tal exigência em C; nomes de funções podem começar com letra ou sublinhado, mas isso não tem relação com retorno de valor. A afirmação é completamente infundada.

Gabarito: letra C

Link permanente: /questoes/qg473697