VIII. Entrada de datos (Input)


  • Para recibir la entrada de un usuario vía teclado, Ruby dispone del comando gets

  • Al usar gets, la ejecución del programa se detiene momentáneamente y esperara el valor ingresado desde la entrada por el usuario

  • Al ingresar el dato y confirmarlo, el programa continua su ejecución normal

gets
Esta es la entrada de datos de IRB
=> "Esta es la entrada de datos de IRB\n"
  • La entrada de un usuario se puede asignar como valor de una variable

nombre = gets
Javier
=> "Javier\n"

puts(nombre)
Javier
=> nil
  • El \n es un carácter de escape que representa un salto de línea

  • El comando gets siempre devuelve un salto de línea al final de la entrada del usuario

  • Para recibir la entrada del usuario sin aceptar indirectamente el salto de línea insertado por gets, se utiliza el método chomp


1. Método chomp

  • Chomp es un método concatenado a gets, que se usa para recibir la entrada de un usuario sin la inserción de un salto de línea forzado al final de la sentencia

  • Esto permite depurar específicamente el dato ingresado por el usuario, sin saltos de línea extra que afecten el proceso del programa

  • Esto es importante debido a que el salto de línea (\n) puede romper comparaciones, formatos o lógica específica en el flujo si no se elimina adecuadamente

1.1. Ejemplo de gets sin método chomp

  • Programa con entrada de usuario tramitada por gets

# Script chomp.rb
print "Escribe tu nombre: "
nombre = gets

if nombre == "Kenny"
  puts "Acceso permitido"
else
  puts "Acceso denegado"
end
  • Al ejecutar este programa, el output se ve así

user@system:~$ ruby chomp.rb
Escribe tu nombre: Kenny
Acceso denegado
  • Bajo la lógica de la condicional establecida, los valores comparados por la estructura if son "Kenny\n" == "Kenny", ya que gets inserta ese line feed sobre el valor ingresado por el usuario

  • Debido a que sintácticamente los strings son distintos, ya a que uno posee el escape de línea y el otro no, la comparación finaliza bajo un valor booleano false. De ahí el mensaje de Acceso denegado

1.2. Ejemplo de gets con método chomp

  • Programa con entrada de usuario tramitada por gets.chomp

# Script chomp.rb
print "Escribe tu nombre: "
nombre = gets.chomp

if nombre == "Kenny"
  puts "Acceso permitido"
else
  puts "Acceso denegado"
end
  • Al ejecutar este programa, el output se ve así

user@system:~$ ruby chomp.rb
Escribe tu nombre: Kenny
Acceso permitido
  • A su vez, la lógica establecida por la condicional compara los valores "Kenny" == "Kenny", ya que gracias al método chomp, se elimina el line feed tramitado por gets al valor ingresado por el usuario

  • Debido a que en este caso los strings si son iguales, la comparación finaliza bajo un valor booleano true, indicado por el mensaje Acceso permitido


Última actualización