require "prct06/version.rb" class Plato attr_accessor :nombre, :valor_calorico, :vegetales, :frutas, :cereales, :proteinas, :aceites #@note Lista de alimentos para la costrucción de los platos @@lista = Lista.new() @HuevoFrito = AlimentoC.new("Huevo Frito", 14.1, 0.0, 19.5, "Huevos, lacteos y helados" ) @LecheVaca = AlimentoC.new("Leche vaca", 3.3, 4.8, 3.2, "Huevos, lacteos y helados") @Yogurt = AlimentoC.new("Yogurt", 3.8, 4.9, 3.8, "Huevos, lacteos y helados") @Cerdo = AlimentoC.new("Cerdo", 21.5, 0.0, 6.3, "Carnes y derivados") @Ternera = AlimentoC.new("Ternera", 21.1, 0.0, 3.1, "Carnes y derivados") @Pollo = AlimentoC.new("Pollo", 20.6, 0.0, 5.6, "Carnes y derivados") @Bacalao = AlimentoC.new("Bacalao", 17.7, 0.0, 0.4, "Pescados y mariscos") @Atun = AlimentoC.new("Atun", 21.5, 0.0, 15.5, "Pescados y mariscos") @Salmon = AlimentoC.new("Salmon", 19.9, 0.0, 13.6, "Pescados y mariscos") @AceiteOliva = AlimentoC.new("Aceite Oliva", 0.0, 0.2, 99.6, "Alimentos grasos") @Mantequilla = AlimentoC.new("Mantequilla", 0.7, 0.0, 83.2, "Alimentos grasos") @Chocolate = AlimentoC.new("Chocolate", 5.3, 47.0, 30.0, "Alimentos grasos") @Azucar = AlimentoC.new("Azucar", 0.0, 99.8, 0.0, "Alimentos ricos en carbohidratos") @Arroz = AlimentoC.new("Arroz",6.8, 77.7, 0.6, "Alimentos ricos en carbohidratos") @Lentejas = AlimentoC.new("Lentejas", 23.5, 52.0, 1.4, "Alimentos ricos en carbohidratos") @Papas = AlimentoC.new("Papas",2.0, 15.4, 0.1, "Alimentos ricos en carbohidratos") @Tomate = AlimentoC.new("Tomate", 1.0, 3.5, 0.2, "Verduras y Hortalizas") @Cebolla = AlimentoC.new("Cebolla", 1.3, 5.8, 0.3, "Verduras y Hortalizas") @Calabaza = AlimentoC.new("Calabaza", 1.1, 4.8, 0.1, "Verduras y Hortalizas") @Manzanas = AlimentoC.new("Manzanas", 0.3, 12.4, 0.4, "Frutas") @Platanos = AlimentoC.new("Platanos", 1.2, 21.4, 0.2, "Frutas") @Pera = AlimentoC.new("Pera", 0.5, 12.7, 0.3, "Frutas") @nodo1 = Nodo.new(@HuevoFrito) @nodo2 = Nodo.new(@LecheVaca) @nodo3 = Nodo.new(@Yogurt) @nodo4 = Nodo.new(@Cerdo) @nodo5 = Nodo.new(@Ternera) @nodo6 = Nodo.new(@Pollo) @nodo7 = Nodo.new(@Bacalao) @nodo8 = Nodo.new(@Atun) @nodo9 = Nodo.new(@Salmon) @nodo10 = Nodo.new(@AceiteOliva) @nodo11 = Nodo.new(@Mantequilla) @nodo12 = Nodo.new(@Chocolate) @nodo13 = Nodo.new(@Azucar) @nodo14 = Nodo.new(@Arroz) @nodo15 = Nodo.new(@Lentejas) @nodo16 = Nodo.new(@Papas) @nodo17 = Nodo.new(@Tomate) @nodo18 = Nodo.new(@Cebolla) @nodo19 = Nodo.new(@Calabaza) @nodo20 = Nodo.new(@Manzanas) @nodo21 = Nodo.new(@Platanos) @nodo22 = Nodo.new(@Pera) @@lista.insert_queue(@nodo1) @@lista.insert_queue(@nodo2) @@lista.insert_queue(@nodo3) @@lista.insert_queue(@nodo4) @@lista.insert_queue(@nodo5) @@lista.insert_queue(@nodo6) @@lista.insert_queue(@nodo7) @@lista.insert_queue(@nodo8) @@lista.insert_queue(@nodo9) @@lista.insert_queue(@nodo10) @@lista.insert_queue(@nodo11) @@lista.insert_queue(@nodo13) @@lista.insert_queue(@nodo14) @@lista.insert_queue(@nodo15) @@lista.insert_queue(@nodo16) @@lista.insert_queue(@nodo17) @@lista.insert_queue(@nodo18) @@lista.insert_queue(@nodo19) @@lista.insert_queue(@nodo20) @@lista.insert_queue(@nodo21) @@lista.insert_queue(@nodo22) #@note La equivalencia de las diferentes palabras en gramos @@equGram = { "cucharadas"=>1.8,"piezas pequeñas"=>7,"taza"=>6,"cucharón"=>4,"pieza"=>10,"cucharada"=>1.8, "piezas"=>10 } def initialize nombreIn, &bloque @nombre = nombreIn @valor_calorico = 0 @vegetales = [] @frutas = [] @cereales = [] @proteinas = [] @aceites = [] instance_eval(&bloque) end #@note Función para añadir correctamente los vegetales desde dls #@param nombre_al[String], opcion[String] def vegetal nombre_al, opcion = {} cant = 0 alimento = @@lista.detect { |i| nombre_al == i.nombre } if opcion[:gramos] cant = options[:gramos] elsif opcion[:porcion] cant = get_cant opcion[:porcion] end @valor_calorico += cant*alimento.valor_calorico @vegetales.push([alimento, (cant*alimento.valor_calorico).round(3)]) end #@note Función para la cantidad de alimento que añadimos al plato #@param porcion[String] def get_cant porcion #La cantidad está en el primer caracter num = porcion.split[0].to_r cad = "" #Formateamos correctamente la cadena porcion.split[1..cad.length-1].each do |i| cad += i + " " end cant = num * @@equGram[cad.chomp ' '] end #@note Función para añadir correctamente las frutas desde dls #@param nombre_al[Strign], opcion[String] def fruta nombre_al, opcion = {} cant = 0 alimento = @@lista.detect { |i| nombre_al == i.nombre } if opcion[:gramos] cant = opcion[:gramos] elsif opcion[:porcion] cant = get_cant opcion[:porcion] end @valor_calorico += cant*alimento.valor_calorico @frutas.push([alimento, (cant*alimento.valor_calorico).round(3)]) end #@note Función para añadir correctamente los cereales desde dls #@param nombre_alimento[Strign], opcion[String] def cereal nombre_alimento, opcion = {} cant = 0 alimento = @@lista.detect { |i| nombre_alimento == i.nombre } if opcion[:gramos] cant = opcion[:gramos] elsif opcion[:porcion] cant = get_cant opcion[:porcion] end @valor_calorico += cant*alimento.valor_calorico @cereales.push([alimento, (cant*alimento.valor_calorico).round(3)]) end #@note Función para añadir correctamente los proteinas desde dls #@param nombre_al[Strign], opcio[String] def proteina nombre_al, opcion = {} cant = 0 alimento = @@lista.detect { |i| nombre_al == i.nombre } if opcion[:gramos] cant = opcion[:gramos] elsif opcion[:porcion] cant = get_cant opcion[:porcion] end @valor_calorico += cant*alimento.valor_calorico @proteinas.push([alimento, (cant*alimento.valor_calorico).round(3)]) end #@note Función para añadir correctamente el aceite desde dls #@param nombre_al[Strign], opcion[String] def aceite nombre_al, opcion = {} cant = 0 alimento = @@lista.detect { |i| nombre_al == i.nombre } if opcion[:gramos] cant = opcion[:gramos] elsif opcion[:porcion] cant = get_cant opcion[:porcion] end @valor_calorico += cant*alimento.valor_calorico @aceites.push([alimento, (cant*alimento.valor_calorico).round(3)]) end #@note Función para mostrar el contenido de la lista. #@return Lista formateada en una cadena para su visualización. def to_s salida = @nombre + "\n" salida += "=============================================================\n" salida += "Composición nutricional: \n" salida += "\tglúcidos proteínas lípidos \tgrupo\t\t\t valor energético\n" for i in 0..@vegetales.length-1 do salida += @vegetales[i][0].to_s + "\t\t" + @vegetales[i][1].to_s + "\n" end for i in 0..@frutas.length-1 do salida += @frutas[i][0].to_s + "\t\t" + @frutas[i][1].to_s + "\n" end for i in 0..@cereales.length-1 do salida += @cereales[i][0].to_s + "\t\t" + @cereales[i][1].to_s + "\n" end for i in 0..@proteinas.length-1 do salida += @proteinas[i][0].to_s + "\t\t" + @proteinas[i][1].to_s + "\n" end for i in 0..@aceites.length-1 do salida += @aceites[i][0].to_s + "\t\t" + @aceites[i][1].to_s + "\n" end salida += "Valor energetico = " + valor_calorico.to_s salida end end