Considere o seguinte trecho de algoritmo: classe Calculadora { método inteiro fatorial(valor inteiro n) { se (n <= 1) { retorne 1; } senão { retorne n * fatorial(n - 1); } } } início { inteiro resultado; Calculadora calc = novo Calculadora(); resultado = calc.fatorial(5); escreva("O fatorial de 5 é: ", resultado); } Sobre o código anterior, analise as afirmativas a seguir. I. O método fatorial é um exemplo de recursividade, pois chama a si mesmo dentro de sua definição. II. A passagem de parâmetro no método fatorial é feita por valor, uma vez que a variável n é um tipo primitivo. III. A criação do objeto calc da classe Calculadora exemplifica o conceito de instância em programação orientada a objetos. IV. O valor impresso será "O fatorial de 5 é: 120". Está correto o que se afirma em
- A)I, II, III e IV.
Correta, porque as quatro afirmativas descrevem adequadamente recursividade, passagem por valor, instanciação de objeto e o resultado final da execução.
- B)I e III, apenas.
Errada, porque além de I e III estarem corretas, as afirmativas II e IV também estão corretas.
- C)II e IV, apenas.
Errada, porque II e IV até estão corretas, mas a questão não se limita a elas.
- D)I, II e III, apenas.
Errada, porque I, II e III estão corretas, mas a IV também está, completando o conjunto.
Gabarito: A
Essa questão mistura três ideias clássicas de programação: recursividade, passagem de parâmetros e orientação a objetos. O método fatorial é recursivo porque ele chama a si mesmo dentro da própria definição, até chegar ao caso-base, que aqui é quando n <= 1. Isso evita a “queda infinita” da chamada e faz a conta voltar: 5 * 4 * 3 * 2 * 1 = 120. Sobre o parâmetro n, em linguagem de concurso a análise correta é que ele recebe um valor de entrada e, sendo tratado como tipo primitivo, a passagem é por valor. Em outras palavras, o método trabalha com uma cópia do dado recebido, sem alterar a variável original do chamador. Esse é o raciocínio que a banca costuma cobrar quando fala em parâmetros de tipos primitivos. A criação de calc com novo Calculadora() representa a instanciação de um objeto, ou seja, a classe vira um exemplar concreto na memória. É o velho trio da orientação a objetos: classe como molde, objeto como instância e método como comportamento. Sem drama, mas com bastante prova de concurso no meio. Por fim, calc.fatorial(5) retorna 120, então a mensagem impressa será exatamente “O fatorial de 5 é: 120”. Como as quatro afirmações estão corretas, o gabarito é a alternativa A.