10 - Interpolación de Strings

Introducimos en el concepto anterior las variables de tipo String, vimos como podemos cargarlas por asignación y por teclado.

Otra actividad muy común con los String en Ruby es la interpolación, básicamente es disponer una expresión dentro del String para que el interprete de Ruby la procese para obtener el String definitivo.

La interpolación solo funciona cuando un String esta definido con dobles comillas.

nombre = "juan"
edad = 24
puts "#{nombre} tiene #{edad} años"

En la interpolación intervienen los caracteres #{}

Todo lo que indicamos entre las llaves se sustituye por su valor.

En este ejemplo se imprime por pantalla el mensaje:

juan tiene 24 años

Dentro de #{} podemos disponer una expresión:

valor1 = 10
valor2 = 20
puts "La suma de #{valor1} y #{valor2} es #{valor1 + valor2}"

En este caso el String luego de procesarse genera el siguiente resultado:

La suma de 10 y 20 es 30

Problema 1:

Realizar la carga por teclado del nombre, edad y altura de una persona. Mostrar todos los datos únicamente llamando al método puts y utilizando interpolación de String.

Programa: ejercicio048.rb

print "Ingrese nombre:"
nombre = gets.chomp
print "Ingrese la edad:"
edad = gets.to_i
print "Ingrese la altura Ej 1.75:"
altura = gets.to_f
puts "#{nombre} tiene #{edad} años y una altura de #{altura}"

Podemos utilizando el método puts mostrar todos los datos en la misma fila de la pantalla utilizando interpolación:

puts "#{nombre} tiene #{edad} años y una altura de #{altura}"

Problema 2:

Mostrar por pantalla los primeros 10 términos de la tabla del 2 con el siguiente formato por pantalla:

1 * 2 = 2
2 * 2 = 4
3 * 2 = 6
4 * 2 = 8
etc..

Programa: ejercicio049.rb

paso = 1
while paso <=10
  puts "#{paso} * 2 = #{paso * 2}"
  paso = paso + 1
end

Cuando ejecutamos el programa tenemos como resultado:

interpolacion String Ruby

Problema propuesto

  • Cargar dos enteros y mostrarlos ordenados de menor a mayor. Utilizar un solo puts para cada vez que mostramos los dos enteros.
Solución
ejercicio050.rb

print "Ingrese primer valor:"
valor1 = gets.to_i
print "Ingrese segundo valor:"
valor2 = gets.to_i
puts "Los dos valores ordenados de menor a mayor"
if valor1 < valor2
  puts "#{valor1} #{valor2}"
else
  puts "#{valor2} #{valor1}"
end