Hasta este momento hemos visto como definir variables enteras y flotantes. Realizar su carga por asignación y por teclado.
Para iniciarlas por asignación utilizamos el operador =
#definición de una variable entera cantidad = 20 #definición de una variable flotante altura = 1.92
Como vemos el intérprete de Ruby diferencia una variable flotante de una variable entera por la presencia del caracter punto.
Para realizar la carga por teclado utilizando gets y debemos llamar al método to_i o to_f para convertir el dato devuelto por gets:
cantidad = gets.to_i altura = gets.to_f
A estos dos tipos de datos fundamentales (enteros y flotantes) se suma un tipo de dato muy utilizado que son las cadenas de caracteres (String)
Una cadena de caracteres está compuesta por uno o más caracteres. También podemos iniciar una cadena de caracteres por asignación o ingresarla por teclado.
Inicialización de una cadena por asignación:
# definición e inicio de una cadena de caracteres dia = "lunes"
Igual resultado obtenemos si utilizamos la comilla simple:
# definición e inicio de una cadena de caracteres dia = 'lunes'
Solo podemos agregar comandos como el salto de línea \n cuando utilizamos comillas dobles.
Para la carga por teclado de una cadena de caracteres utilizamos el método gets que retorna los caracteres ingresados por teclado más el salto de línea (\b):
nombre = gets
Lo más común es que no necesitemos que quede almacenando en la variable nombre el salto de línea (\n) por lo que llamando al método chomp nos retorna la cadena cargada pero sin el salto de línea:
nombre = gets.chomp
Realizar la carga por teclado del nombre, edad y altura de dos personas. Mostrar por pantalla el nombre de la persona con mayor altura.
puts "Datos de la primer persona" print "Ingrese nombre:" nombre1 = gets.chomp print "Ingrese la edad:" edad1 = gets.to_i print "Ingrese la altura Ej 1.75:" altura1 = gets.to_f puts "Datos de la segunda persona" print "Ingrese nombre:" nombre2 = gets.chomp print "Ingrese la edad:" edad2 = gets.to_i print "Ingrese la altura Ej 1.75:" altura2 = gets.to_f print "La persona mas alta es:" if altura1 > altura2 puts nombre1 else puts nombre2 end
Para la carga de un String y que no quede almacenado el salto de línea tenemos el siguiente código:
nombre1 = gets.chomp
Para mostrar por pantalla lo hacemos en forma similar a las variables enteras y float por medio de los métodos puts y print:
puts nombre1
Realizar la carga de dos nombres por teclado. Mostrar cual de los dos es mayor alfabéticamente o si son iguales.
print "Ingrese el primer nombre:" nombre1 = gets.chomp print "Ingrese el segundo nombre:" nombre2 = gets.chomp if nombre1 == nombre2 print "Ingresó dos nombre iguales" else if nombre1 > nombre2 print nombre1, " es mayor alfabéticamente" else print nombre2, " es mayor alfabéticamente" end end
Cuando trabajamos con cadenas de caracteres al utilizar el operador > estamos verificando si una cadena (String) es mayor alfabéticamente a otra (esto es distinto a cuando trabajamos con enteros o flotantes)
Por ejemplo "luis" es mayor a "jose" porque la 'j' se encuentra más adelante en el abecedario que la 'l'.
Realizar la carga de enteros por teclado. Preguntar después que ingresa el valor si desea cargar otro valor debiendo el operador ingresar la cadena "si" o "no" por teclado.
Mostrar al final la suma de los valores ingresados.
opcion="si" suma=0 while opcion=="si" print "Ingrese un valor:" valor = gets.to_i suma = suma + valor print "Desea cargar otro numero (si/no):" opcion = gets.chomp end print "La suma de valores ingresados es ", suma
Para resolver este problema hemos inicializado una variable de tipo cadena de caracteres (también se las llama variables de tipo String) con el valor "si", esto hace que la condición del while se verifique verdadera la primera vez. Dentro del while luego de cargar el valor entero se pide la carga por teclado que confirme si desea cargar otro valor, en caso que cargue el String "si" el ciclo repetitivo while se vuelve a repetir.
El ciclo se corta cuando el operador carga un String distinto a "si".
Es importante notar que el String "si" es distinto al String "Si", es decir las mayúsculas no tienen el mismo valor alfabético que las minúsculas (después veremos que podemos convertir mayúsculas a minúsculas y viceversa)
ejercicio047.rb print "Ingrese el primer nombre:" nombre1 = gets.chomp print "Ingrese el segundo nombre:" nombre2 = gets.chomp puts "Listado alfabetico:" if nombre1 < nombre2 puts nombre1 puts nombre2 else puts nombre2 puts nombre1 end