A linguagem Ruby é uma linguagem de script, de tipagem dinâm...
A linguagem Ruby é uma linguagem de script, de tipagem dinâmica. Ela possui gerenciamento automático de memória e é multiparadigma, suportando programação funcional e também orientada a objetos. Além disso, a linguagem possui diversos operadores aritméticos, lógicos e de comparação. A respeito desses operadores, analise o código Ruby abaixo e marque a alternativa que indica, corretamente, o que será apresentado em tela pelo comando puts.
-
a=1
b=1
if !(a<=> b)
x = Array.new(6%8) {|a| a*= 2}
else
x = Array.new(6%8) {|a| a**= 2}
end
puts "#{x}"
- Gabarito Comentado (1)
- Aulas (1)
- Comentários (0)
- Estatísticas
- Cadernos
- Criar anotações
- Notificar Erro
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a Alternativa D.
A questão aborda o entendimento de operadores lógicos e aritméticos na linguagem de programação Ruby, bem como a criação e manipulação de arrays. Para resolvê-la, é necessário conhecimento sobre:
- Operadores de comparação em Ruby (neste caso, o operador
<=>
) - Uso de operadores lógicos, como a negação (
!
) - Criação e inicialização de Arrays, incluindo o uso de blocos para definir os valores dos elementos
Vamos analisar o código passo a passo:
a = 1
e b = 1
são atribuídos.
A seguir, é utilizado um operador de comparação <=>
, também conhecido como operador de nave espacial. Em Ruby, ele retorna:
- 0 se os valores são iguais
- -1 se o valor da esquerda é menor
- 1 se o valor da esquerda é maior
No nosso caso, a <=> b
retorna 0 porque a
e b
são iguais. O operador !
é então aplicado, resultando em !0
, o que é falso em Ruby.
Devido ao falso no if
, a execução passa para o bloco else
. Vamos entender o que o código dentro do else
faz:
x = Array.new(6%8) { |a| a**= 2 }
Primeiro, 6 % 8
é calculado. O operador % é o módulo (resto da divisão), e o resultado é 6.
Portanto, um array com 6 elementos é criado. O bloco { |a| a**= 2 }
atribui a cada elemento o valor de a
elevado ao quadrado.
Isso resulta no seguinte array:
[0, 1, 4, 9, 16, 25]
Finalmente, puts "#{x}"
imprime este array. Assim, a saída correta é [0, 1, 4, 9, 16, 25]
, o que corresponde à Alternativa D.
Vamos agora justificar as alternativas incorretas:
Alternativa A: [0, 2, 4, 6, 8, 10]
- Esta seria a saída se o código dentro do if
fosse executado, mas como o if
é falso, não é o caso.
Alternativa B: [0]
- Esta saída não é possível com o código fornecido, pois o tamanho do array é 6.
Alternativa C: [0, 1, 2, 4, 8, 16]
- Esta saída sugere um comportamento diferente no bloco, talvez usando multplicação comum, mas não está correto de acordo com o código fornecido.
Alternativa E: null
- Em Ruby, o termo correto é nil
e não seria uma saída válida aqui.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo