Questão de Programação — Plataforma Java — Quadrix 2025
- Código
- qg603657
- Banca
- Quadrix
- Órgão
- SEDF
- Ano
- 2025
- Nível
- Superior
- Cargo
- Professor de Educação Básica: Informática
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: letra C — CERTO. A afirmativa está correta: calcularValorTotal() é uma função porque declara um tipo de retorno (double) e devolve um valor com return, enquanto aplicarDesconto(double percentual) é um procedimento porque usa void e não retorna valor — distinção clássica da programação estruturada, aplicada aqui ao Java.
Na programação, a distinção entre função e procedimento é um dos conceitos mais fundamentais e, ao mesmo tempo, um dos mais cobrados em provas. A diferença essencial está no retorno de valor: uma função é um bloco de código que executa uma tarefa e retorna um resultado ao ponto de chamada, enquanto um procedimento (também chamado de método void em Java) executa uma tarefa sem devolver nenhum valor. Essa distinção vem da programação estruturada, herdada por linguagens como Pascal, C e Java.
No código apresentado, calcularValorTotal() é declarado com o tipo de retorno double e, em seu corpo, utiliza a instrução return quantidade * preco;. Isso significa que, ao ser chamado, ele calcula o produto e devolve esse valor para quem o invocou — exatamente o comportamento de uma função. Já aplicarDesconto(double percentual) é declarado com void, que em Java é a palavra-chave que indica ausência de retorno. Ele modifica o estado interno do objeto (o atributo preco) e imprime uma mensagem, mas não devolve nada ao chamador — é um procedimento.
Para fixar, veja a comparação direta:
Critério |
|
|
|---|---|---|
Tipo de retorno |
|
|
Retorna valor? | Sim, com | Não |
Classificação | Função | Procedimento |
Efeito | Calcula e devolve resultado | Modifica estado e imprime |
A pegadinha que a banca explora aqui é justamente a confusão entre os termos. Muitos candidatos, ao verem um método que executa uma ação (como aplicar desconto), podem classificá-lo erroneamente como função por ele "fazer algo". Mas o que define a classificação não é a ação em si, e sim a presença ou ausência de retorno. Em Java, todo método que não seja void é uma função; todo método void é um procedimento. Guarde essa fronteira: é exatamente nela que esta questão se decide.
A afirmativa está correta por dois motivos técnicos precisos:
calcularValorTotal() é uma função: declarada com tipo de retorno double e contendo a instrução return quantidade * preco;. A presença do return com um valor é a marca registrada da função — ela calcula o valor total (5 × R$ 4.500,00 = R$ 22.500,00, antes do desconto) e o devolve ao chamador.
aplicarDesconto(double percentual) é um procedimento: declarada com void, que em Java significa literalmente "vazio" — o método executa suas instruções (aplica o desconto ao atributo preco e imprime mensagem de erro se o percentual for inválido) mas não retorna nenhum valor. A palavra-chave void é o que caracteriza o procedimento em Java.
A distinção é exatamente a que a afirmativa descreve: função retorna valor, procedimento não retorna. Não há nenhum erro conceitual ou técnico na assertiva.
Na prova, para identificar se um método Java é função ou procedimento, olhe apenas para a declaração do método: se houver um tipo de retorno (int, double, String, etc.) ou return com valor, é função; se houver void, é procedimento. Não se deixe enganar pelo que o método "faz" — o que importa é o que ele devolve. Essa é a pegadinha clássica da banca: trocar o critério de classificação (ação × retorno).
Gabarito: letra C — CERTO.
Link permanente: /questoes/qg603657