Foros del Web » Soporte técnico » Ayuda General »

Concepto de FIFO y LIFO

Estas en el tema de Concepto de FIFO y LIFO en el foro de Ayuda General en Foros del Web. Que tal, de hace 1 semana promedio que pedí ayuda en este foro, y todavía no me la han dado, sin embargo pude darme cuenta ...
  #1 (permalink)  
Antiguo 18/12/2011, 19:27
 
Fecha de Ingreso: diciembre-2011
Ubicación: Buenos Aires, GBA Zona Norte
Mensajes: 10
Antigüedad: 13 años
Puntos: 0
Concepto de FIFO y LIFO

Que tal, de hace 1 semana promedio que pedí ayuda en este foro, y todavía no me la han dado, sin embargo pude darme cuenta por mi mismo de ciertos detalles y al final no necesité ayuda de la simpática gente que ronda por acá quien hasta ahora no recibí ninguna respuesta.

Ahora, yo creo que están errando la definición en wikipedia (dice FIFO es fila/cola, y LIFO es pila) y quería saber si estoy en lo correcto, ya que tengo evaluación y estoy confuso:

Pila es FIFO (First In, First Out)
Fila es LIFO (Last In, First Out)


Si vos generás una pila de libros, y querés sacar un libro en específico que se encuentra debajo de toda la pila, no vas a sacar la primera, vas a sacar los últimos que están por encima del libro para sacar ese mismo, no vas a sacar desde el primero porque se te cae toda la pila en tu cabeza, por confundirte la teoría (es incorrecta). First In First Out.

Y fila es en un supermercado, vos formás la cola último, y el primero en la fila es el que ya está siendo atendido en la caja para luego irse. Last In, First Out.

Por favor, si alguien está en contra de mi teoría, por favor sea libre de comentar una buena y clara razón (lo cual lo veo imposible). Saludos!
  #2 (permalink)  
Antiguo 18/12/2011, 20:15
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Concepto de FIFO y LIFO

buenas,
estas confundiendo los conceptos. la pila (stack) es LIFO, y la fila es FIFO. parece que lo estas observando por elementos individuales. en FIFO, el primero que entra es el primero que sale, tal como la analogía del supermercado. en LIFO, el último que entró es el primero que sale. fijate que los términos no se refieren a la posición de cada elemento. tienes que verlo como un concepto de preguntas. LI: ¿quién fue el último en entrar?, FO: entonces eres el primero en salir. FI: ¿quién fue el primero en entrar?, FO: entonces eres el primero en salir.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 18/12/2011, 20:54
 
Fecha de Ingreso: diciembre-2011
Ubicación: Buenos Aires, GBA Zona Norte
Mensajes: 10
Antigüedad: 13 años
Puntos: 0
Respuesta: Concepto de FIFO y LIFO

Cita:
Iniciado por zerokilled Ver Mensaje
buenas,
estas confundiendo los conceptos. la pila (stack) es LIFO, y la fila es FIFO. parece que lo estas observando por elementos individuales. en FIFO, el primero que entra es el primero que sale, tal como la analogía del supermercado. en LIFO, el último que entró es el primero que sale. fijate que los términos no se refieren a la posición de cada elemento. tienes que verlo como un concepto de preguntas. LI: ¿quién fue el último en entrar?, FO: entonces eres el primero en salir. FI: ¿quién fue el primero en entrar?, FO: entonces eres el primero en salir.

Gracias por la aclaración del concepto, también tengo otra consulta:

Sé que el método recursivo es el que se llama a si mismo para resolver un problema por partes.

Pero para el método iterativo no encuentro ni una breve explicación de cómo funciona y qué diferencia hay.

Saludos y gracias por tu atención!
  #4 (permalink)  
Antiguo 18/12/2011, 21:33
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Concepto de FIFO y LIFO

yo creo que en términos de funcionamiento no tiene mucha diferencia. de algún modo ambos son iterativos. visualmente, la diferencia es que se le dice recursivo a un proceso que se llama así mismo, por ejemplo una función. iterativo comúnmente, o lo que me viene a la mente, son sentencias que están destinada específicamente para ese propósitos, por ejemplos los bucles while o for. en términos prácticos, puede ser que en algunos lenguajes hay una diferencia pero creo que se da más por razones de limitaciones. por ejemplo, imagina una iteración que debe realizarse por intérvalos. es decir, el proceso se tiene que detener por un tiempo. algunos lenguajes, como php, tiene una función para ese propósito, por lo que tranquilamente se puede usar un iterador que ejecuta por intérvalos. en cambio, otros lenguajes no tienen dicha función pero si poseen funciones para ejecutar instrucciones programadas. es decir, pospone un proceso pero no detiene el proceso actual. un ejemplo es javascript. si quisieramos ejecutar un iterador por intérvalos, habria que recurrir una función recursiva junto con los timers.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 18/12/2011 a las 21:45
  #5 (permalink)  
Antiguo 18/12/2011, 22:15
 
Fecha de Ingreso: diciembre-2011
Ubicación: Buenos Aires, GBA Zona Norte
Mensajes: 10
Antigüedad: 13 años
Puntos: 0
Respuesta: Concepto de FIFO y LIFO

Cita:
Iniciado por zerokilled Ver Mensaje
yo creo que en términos de funcionamiento no tiene mucha diferencia. de algún modo ambos son iterativos. visualmente, la diferencia es que se le dice recursivo a un proceso que se llama así mismo, por ejemplo una función. iterativo comúnmente, o lo que me viene a la mente, son sentencias que están destinada específicamente para ese propósitos, por ejemplos los bucles while o for. en términos prácticos, puede ser que en algunos lenguajes hay una diferencia pero creo que se da más por razones de limitaciones. por ejemplo, imagina una iteración que debe realizarse por intérvalos. es decir, el proceso se tiene que detener por un tiempo. algunos lenguajes, como php, tiene una función para ese propósito, por lo que tranquilamente se puede usar un iterador que ejecuta por intérvalos. en cambio, otros lenguajes no tienen dicha función pero si poseen funciones para ejecutar instrucciones programadas. es decir, pospone un proceso pero no detiene el proceso actual. un ejemplo es javascript. si quisieramos ejecutar un iterador por intérvalos, habria que recurrir una función recursiva junto con los timers.
Sigo sin entender, en mi caso es aplicándolo en java, con objetos...
  #6 (permalink)  
Antiguo 18/12/2011, 22:47
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Concepto de FIFO y LIFO

pues de java no tengo idea... tendrás que realizar la consulta en el foro pertinente. aunque considerando los tutoriales que en ocaciones hacen referencia a java, un iterador es un tipo de objeto que utilizan algunas funciones o posiblemente sentencias con el propósito de recorrer un dato en una forma determinada. apenas conozco ese concepto, justo estoy aprendiendo python el cual tambien tienen iteradores. te explico más o menos el caso de python, el cual supongo que tienen cierta similitud con otros lenguajes que implementan el mismo concepto.

en python hay ciertas sentencias que utilizan un iterador para recorrer los elementos. por ejemplo, las listas que en java más o menos serían arrays. si el objeto no tiene la interfaz Iterator, entonces dicha sentencia no sabe como debe manejar el objeto. en ese sentido, un Iterator es un concepto abstracto que puede ser aplicado a cualquier tipo de objeto. cuando se implementa, se debe describir de que manera se recorre los datos y a su vez proveer una interfaz para las sentencias que hacen uso de ello. por ejemplo, imagina un objeto File que representa un archivo del sistema (Filesystem). dicho archivo no contiene ninguna interfaz propia para iterar su contenido. con un Iterator tu puedes definir que cada iteración lee una linea del archivo. entonces, cuando pasas ese objeto a un bucle for -por ejemplo- el constructor sabe como utilizar ese objeto gracias a la interfaz. supongo que más o menos debe ser lo mismo en otros lenguajes.

para más información, lee la referencia de java, seguro ahí viene explicado. para tener una idea más genérica, wikipedia tiene un artículo. http://en.wikipedia.org/wiki/Iterator
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 19/12/2011, 01:47
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 6 meses
Puntos: 73
Respuesta: Concepto de FIFO y LIFO

En efecto, un método recursivo es el que se llama a sí mismo para resolver un problema. Tienes recursión directa, es decir, un proceso A se llama a sí mismo (pero con un grado menos de complejidad). El caso típico es el de calcular el factorial de un número n, que será igual a ese número n multiplicado por el factorial del número (n-1).

La recursión indirecta es cuando un proceso A llama a un proceso B, que a su vez puede llamar nuevamente al proceso A.

La ventaja de la recursión es que se pueden resolver algunos problemas de manera sencilla y elegante, con (relativamente) pocas líneas de código. La desventaja es que las sucesivas llamadas a función van ocupando espacio de pila y consumiendo recursos, no siendo raros los casos de desbordamiento de pila (stack overflow) si no se tiene cuidado. Si empleas la recursión, debes tener clara la condición de salida y dónde debe ir.

La iteración es la repetición de una serie de instrucciones, bien sea un número conocido de veces (bucles FOR, por ejemplo) ó un número indeterminado de veces (bucles DO, WHILE), en que se repite el conjunto de operaciones mientras se cumpla una condición, ó hasta que se cumpla una condición.

Esto es válido para cualquier lenguaje de programación, únicamente tienes que tener en cuenta las particularidades del lenguaje que utilices.

Etiquetas: concepto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:06.