20 - Hash: carga por teclado de sus elementos

Un Hash en Ruby es una estructura dinámica (es decir se puede ir agregando y eliminando elementos durante la ejecución del programa)

Veremos en este concepto como agregar elementos a nuestra estructura tipo Hash.

Problema 1:

Crear un Hash que permita almacenar productos, utilizar como clave el nombre del producto y como valor el precio del mismo.
1) Cargar productos.
2) Imprimir el Hash completo

Programa: ejercicio087.rb

productos = Hash.new

loop do
  print "Ingrese el nombre del producto:"
  prod = gets.chomp
  print "Ingrese el precio:"
  precio = gets.to_f
  productos[prod] = precio
  print "¿Desea ingresar otro producto [s/n]?"
  opcion = gets.chomp
  if opcion == "n"
    break
  end
end

puts productos

Si ejecutamos el programa y cargamos un par de productos:

Carga por teclado un Hash Ruby

Primero creamos el Hash:

productos = Hash.new

Dentro de un ciclo repetitivo pedimos ingresar el nombre del producto y su precio, procedemos a agregar un elemento al Hash productos:

  print "Ingrese el nombre del producto:"
  prod = gets.chomp
  print "Ingrese el precio:"
  precio = gets.to_f
  productos[prod] = precio

Cuando el operador no desea cargar más productos finalizamos la estructura repetitivo loop ejecutando un break:

  print "¿Desea ingresar otro producto [s/n]?"
  opcion = gets.chomp
  if opcion == "n"
    break
  end

Mostramos el Hash completo llamando a puts:

puts productos

Problema 2:

Crear un Hash que permita almacenar nombres de empleados de una empresa y su sueldo, utilizar como clave el nombre del empleado y como valor el sueldo del mismo.
1) Cargar por teclado los empleados y sus sueldos.
2) Ingresar por teclado un nombre de empleado y mostrar su sueldo o un mensaje que indique que no existe dicho empleado.

Programa: ejercicio088.rb

empleados = Hash.new

loop do
  print "Ingrese el nombre del empleado:"
  nom = gets.chomp
  print "Ingrese el sueldo:"
  sueldo = gets.to_f
  empleados[nom] = sueldo
  print "¿Desea ingresar otro empleado [s/n]?"
  opcion = gets.chomp
  if opcion == "n"
    break
  end
end

print "Ingrese el nombre de un empleado a consultar su sueldo:"
nom = gets.chomp
if empleados.include?(nom)
  puts "Su sueldo es #{empleados[nom]}"
else
  puts "No existe un empleado con dicho nombre"
end

Luego de crear y cargar el Hash en forma similar al problema anterior procedemos a ingresar el nombre de un empleado:

print "Ingrese el nombre de un empleado a consultar su sueldo:"
nom = gets.chomp

De forma similar a los Array la clase Hash tiene un método include? que le pasamos como parámetro el dato a buscar entre las claves del Hash, si existe retorna true y en caso negativo retorna false:

if empleados.include?(nom)
  puts "Su sueldo es #{empleados[nom]}"
else
  puts "No existe un empleado con dicho nombre"
end