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 usuarioAl 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íneaEl comando
gets
siempre devuelve un salto de línea al final de la entrada del usuarioPara 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 usuarioDebido 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 usuarioDebido 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