A linguagem Ruby é uma linguagem de script, de tipagem dinâm...

Próximas questões
Com base no mesmo assunto
Q2674688 Arquitetura de Software

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}"

Alternativas

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