Class: Alimento::Alimento

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/alimento/alimento.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nombre, proteinas, carbohidratos, lipidos, gei, terreno) ⇒ Alimento

Note:

Constructor de la clase

Returns a new instance of Alimento

Parameters:

  • nombre

    Identificador del alimento

  • proteinas

    Cantidad de proteinas en gramos

  • carbohidratos

    Cantida de carbohidratos en gramos

  • lipidos

    Cantidad e lipidos en gramos

  • gei

    Cantidad de emisiones de gases

  • terreno

    Terreno ocupado por la frabricacaion de cada alimento



18
19
20
# File 'lib/alimento/alimento.rb', line 18

def initialize (nombre, proteinas, carbohidratos, lipidos, gei, terreno)
	@nombre, @proteinas, @carbohidratos, @lipidos, @gei, @terreno  = nombre, proteinas, carbohidratos, lipidos, gei, terreno
end

Instance Attribute Details

#carbohidratosObject (readonly)

Returns the value of attribute carbohidratos



9
10
11
# File 'lib/alimento/alimento.rb', line 9

def carbohidratos
  @carbohidratos
end

#geiObject (readonly)

Returns the value of attribute gei



9
10
11
# File 'lib/alimento/alimento.rb', line 9

def gei
  @gei
end

#lipidosObject (readonly)

Returns the value of attribute lipidos



9
10
11
# File 'lib/alimento/alimento.rb', line 9

def lipidos
  @lipidos
end

#nombreObject (readonly)

Returns the value of attribute nombre



9
10
11
# File 'lib/alimento/alimento.rb', line 9

def nombre
  @nombre
end

#proteinasObject (readonly)

Returns the value of attribute proteinas



9
10
11
# File 'lib/alimento/alimento.rb', line 9

def proteinas
  @proteinas
end

#terrenoObject (readonly)

Returns the value of attribute terreno



9
10
11
# File 'lib/alimento/alimento.rb', line 9

def terreno
  @terreno
end

Instance Method Details

#<=>(other) ⇒ Alimento

Note:

Comparador de alimentos

Returns Objeto que sea mayor

Parameters:

  • other

    Alimento con el que comparar

Returns:



25
26
27
# File 'lib/alimento/alimento.rb', line 25

def <=>(other)
	valor_energetico(valor_glucidos(carbohidratos), valor_proteinas(proteinas), valor_lipidos(lipidos)) <=> other.valor_energetico(other.valor_glucidos(other.carbohidratos), other.valor_proteinas(other.proteinas), other.valor_lipidos(other.lipidos))
end

#emision_lista_anual(list) ⇒ Float

Note:

Calculo de las emisiones en un año con una lista de alimentos

Returns Suma de las emisiones por un año

Parameters:

  • list

    Lista de alimentos doblemente enlazada

Returns:

  • (Float)

    Suma de las emisiones por un año



112
113
114
# File 'lib/alimento/alimento.rb', line 112

def emision_lista_anual(list)
	return (emision_lista_dia(list) * 365).round(2)
end

#emision_lista_dia(list) ⇒ Float

Note:

Calculo de emisiones en un dia con una lista de alimentos

Returns Suma de las emisiones (gei) de todos los alimentos de la lista

Parameters:

  • list

    Lista de alimentos doblemente enlazada

Returns:

  • (Float)

    Suma de las emisiones (gei) de todos los alimentos de la lista



96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/alimento/alimento.rb', line 96

def emision_lista_dia(list)
	actual = list.tail
	sum_emision = 0
	while actual.next != nil do
		sum_emision += actual.value.gei
		actual = actual.next
	end
	if actual = list.head
		sum_emision += list.head.value.gei
	end
	return sum_emision.round(2)
end

#impacto_ambiental(persona, cuantos_persona) ⇒ Float

Note:

Calculo de emisiones de gases de un conjunto de alimentos

Returns Emisiones del conjunto de alimntos y sus respectivas cantidades

Parameters:

  • persona

    Vector de conjunto de alimentos

  • cuantos_persona

    Vector de cantidad de cada alimento

Returns:

  • (Float)

    Emisiones del conjunto de alimntos y sus respectivas cantidades



67
68
69
70
71
72
73
74
75
# File 'lib/alimento/alimento.rb', line 67

def impacto_ambiental(persona, cuantos_persona)
	i = 0
	impacto_amb = 0
	while i < persona.length do
		impacto_amb += persona[i].gei * cuantos_persona[i]
		i += 1
	end
	return (impacto_amb).round(1)
end

#uso_lista_terreno(list) ⇒ Float

Note:

Calculo del terreno ocupado por una lista de alimentos

Returns Terreno total ocupado por la lista de alimentos

Parameters:

  • list

    Lista de alimetos doblemente enlazada

Returns:

  • (Float)

    Terreno total ocupado por la lista de alimentos



119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/alimento/alimento.rb', line 119

def uso_lista_terreno(list)
	actual = list.tail
	sum_emision = 0
	while actual.next != nil do
		sum_emision += actual.value.terreno
		actual = actual.next
	end
	if actual = list.head
		sum_emision += list.head.value.terreno
	end
	return sum_emision.round(2)
end

#uso_terreno(persona, cuantos_persona) ⇒ Float

Note:

Calculo del terreno ocupado por un conjunto de alimentos

Returns Terreno ocupado por todos los alimentos y sus cantidades

Parameters:

  • persona

    Vector de conjunto de alimentos

  • cuantos_persona

    Vector de cantidad de cada alimento

Returns:

  • (Float)

    Terreno ocupado por todos los alimentos y sus cantidades



82
83
84
85
86
87
88
89
90
# File 'lib/alimento/alimento.rb', line 82

def uso_terreno(persona, cuantos_persona)
	i = 0
	uso_ter = 0
	while i < persona.length do
		uso_ter += persona[i].terreno * cuantos_persona[i]
		i += 1
	end
	return (uso_ter).round(1)
end

#valor_energetico(valor_glucidos, valor_proteinas, valor_lipidos) ⇒ Float

Note:

Calculo de la energia del alimento

Returns Valor energetico del alimento

Parameters:

  • valor_glucidos

    Kcal de los carbohidratos

  • valor_proteinas

    Kcal de las proteinas

  • valor_lipidos

    Kcal de los lipidos

Returns:

  • (Float)

    Valor energetico del alimento



58
59
60
# File 'lib/alimento/alimento.rb', line 58

def valor_energetico (valor_glucidos, valor_proteinas, valor_lipidos)
	return (valor_glucidos + valor_proteinas + valor_lipidos).round(1)
end

#valor_glucidos(carbohidrato) ⇒ Float

Note:

Conversion de los carbohidratos a kcal

Returns El cambio a kcal

Parameters:

  • carbohidrato

    Cantidad de carbohidratos en gramos

Returns:

  • (Float)

    El cambio a kcal



32
33
34
# File 'lib/alimento/alimento.rb', line 32

def valor_glucidos (carbohidrato)
	return (carbohidrato*4).round(1)
end

#valor_lipidos(lipidos) ⇒ Float

Note:

Conversion de los lipidos en kcal

Returns El cambio a kcal

Parameters:

  • lipidos

    Cantida dde proteinas en gramos

Returns:

  • (Float)

    El cambio a kcal



48
49
50
# File 'lib/alimento/alimento.rb', line 48

def valor_lipidos (lipidos)
	return (lipidos*9).round(1)
end

#valor_proteinas(proteinas) ⇒ Float

Note:

Conversion de las proteinnas en kcal

Returns El cambio a kcal

Parameters:

  • proteinas

    Cantidad de proteinas en gramos

Returns:

  • (Float)

    El cambio a kcal



40
41
42
# File 'lib/alimento/alimento.rb', line 40

def valor_proteinas (proteinas)
	return (proteinas*4).round(1)
end