Class: Lse

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/pract06/menu_dieta.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLse

Returns a new instance of Lse.



13
14
15
16
17
# File 'lib/pract06/menu_dieta.rb', line 13

def initialize
    @Max = 0
    @actual = nil
    @fin = nil
end

Instance Attribute Details

#actualObject (readonly)

retorna el nodo apuntado por actual



11
12
13
# File 'lib/pract06/menu_dieta.rb', line 11

def actual
  @actual
end

#finObject (readonly)

Acceso a los atributos mediante metodos



11
12
13
# File 'lib/pract06/menu_dieta.rb', line 11

def fin
  @fin
end

#MaxObject (readonly)

Acceso a los atributos mediante metodos



11
12
13
# File 'lib/pract06/menu_dieta.rb', line 11

def Max
  @Max
end

Instance Method Details

#cleanObject

metodo para limpiar la lista



139
140
141
142
143
144
145
146
147
148
149
# File 'lib/pract06/menu_dieta.rb', line 139

def clean
    while(@actual != nil) do
        aux= @actual
       @actual = @actual[:next]
       aux = nil
    end
    
    @actual = nil
    @fin = nil
    @Max = 0
end

#eachObject

Metodo de acceso a acada elemento, Comparable y Enumerable



153
154
155
156
157
158
159
# File 'lib/pract06/menu_dieta.rb', line 153

def each
    aux = @actual
    while(aux != nil)
        yield aux[:value]
        aux= aux[:next]
    end
end

#extrac_actualObject

extrae y retorna el elemento apuntado por actual



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

def extrac_actual
    if(@actual!= nil)
        aux = @actual
        @actual = @actual[:prev]
        @Max-= 1
        var = aux[:value]
    else
        var = nil
    end
    var
end

#extrac_finObject

extrae y retorna el elemento apuntado por el apuntador fin



107
108
109
110
111
112
113
114
115
116
117
# File 'lib/pract06/menu_dieta.rb', line 107

def extrac_fin
    if(@fin!= nil)
        aux = @fin
        @fin = @fin[:next]
        @Max-= 1
        var =aux[:value]
    else
        var =nil
    end
    var
end

#insert(value) ⇒ Object

inserta un nodo al final de la lista



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/pract06/menu_dieta.rb', line 25

def insert(value)
    if @Max <= TAM_MAX_LIST
        if @actual.nil?
            @actual = value
            @fin = value
        else
            value.next = @actual
            @actual.prev = value
            value.prev = nil
            @actual = value
        end
        @Max+= 1
    end
end

#insertar(value) ⇒ Object

crea el nodo en base al dato e intenta insertarlo por el final de la lista



20
21
22
# File 'lib/pract06/menu_dieta.rb', line 20

def insertar(value)
    insert(Node.new(value, nil, nil))
end

#mostrar_actualObject

retorna una cadena que contiene el contenido del nodo apuntado por la variable actual



46
47
48
# File 'lib/pract06/menu_dieta.rb', line 46

def mostrar_actual
    "#{@actual[:value]}\n\n"
end

#mostrar_finObject

retornara una cadena que contiene el valor que guarda la estructura del nodo que se ha insertado en el apuntador fin, podra ser el primero insertado.



52
53
54
# File 'lib/pract06/menu_dieta.rb', line 52

def mostrar_fin
   "#{@fin[:value]}\n\n"
end

#mostrar_lista_actualObject

adaptado para enseñar el estruc, seria conveniente diseñar atra alaternativa para motrar los datos.



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/pract06/menu_dieta.rb', line 63

def mostrar_lista_actual
    var = ""
    aux= @actual
    j= @Max
    if(@actual != nil) 
        while(aux[:next] != nil) do
            muestra = aux[:value]
            aux = aux[:next]
            
            i = j + 96
            var += "#{(i).chr} )#{muestra[:descripcion]},#{muestra[:porcion]},#{muestra[:gramos]}"
            j-= 1
            puts var
            var = ""
        end
         i = j + 96
        var += "#{(i).chr} )#{aux[:value][:descripcion]},#{aux[:value][:porcion]},#{aux[:value][:gramos]}"
        puts var
    end
end

#mostrar_lista_finalObject

metodo que enseña la lista empezando por el apuntador fin empezara por el primer elemento añadido



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/pract06/menu_dieta.rb', line 86

def mostrar_lista_final
    var = ""
    aux= @fin
    j= 0
    if(@fin != nil)
        while aux[:prev] != nil do
            muestra = aux[:value]
            aux = aux[:prev]
            i = j + 97
            var += "#{(i).chr} )#{muestra[:descripcion]},#{muestra[:porcion]},#{muestra[:gramos]}"
            j+= 1
            puts var
            var = ""
        end
         i = j + 97
        var +="#{(i).chr} )#{aux[:value][:descripcion]},#{aux[:value][:porcion]},#{aux[:value][:gramos]}"
        puts var
    end
end

#tamObject

retorna el valor de la variable max, que contiene el numero actual de nodos que contiene la lista



133
134
135
# File 'lib/pract06/menu_dieta.rb', line 133

def tam
    @Max
end