En computación, un generador es una rutina especial que se puede usar para controlar el comportamiento de un iterador en un bucle. Un generador es muy similar a una función que devuelve un vector, en el que un generador tiene los parámetros que se pueden llamar, y genera una secuencia de valores.
En lugar de construir un vector que contenga todos los valores y devolverlos de una vez, un generador proporciona un valor a la vez, lo que requiere menos memoria y, por lo tanto, permite que quien lo llama comience a procesar los primeros valores inmediatamente. En resumen, un generador se asemeja a una función pero se comporta como un iterador.
Los generadores pueden implementarse en construcciones de control de flujo más expresivas, como la continuación de objetos de primera clase o como co-funciones.
Los generadores aparecen por primera vez en 1975 en el lenguaje [[CLU]; y están disponibles en Python, C #, JavaScript, [Ruby] y en otros idiomas. En CLU y C#, los generadores se llaman iteradores y en Ruby enumeradores.
Python
Un ejemplo de generador en Python:
defcountfrom(n):whileTrue:yieldnn+=1# Ejemplo: mostrar los enteros entre 10 y 20.# Hay que tener en cuenta que esta iteración normalmente termina,# aunque el countfrom() se escriba como un bucle infinito.foriincountfrom(10):ifi<=20:print(i)else:break# Otro generador, que produce los primeros números primos# a "to" si a> = 2, de lo contrario indefinidamente dependiendo de la necesidad.defprimos(to):yield2# primer número primero, y único parn=3p=[]whilen<=toorto<2:sqr_n=int(n**0.5)ifnotany(n%f==0forfinpiff<=sqr_n):# funciona desde Python 2.5 con el paquete NumPy que introduce any()yieldnp.append(n)n+=2# Sólo revisar imparesraiseStopIteration
Ruby
Ruby soporta generadores (a partir de la versión 1.9) en la clase Enumerator.
# Generador de un objeto enumerablechars=Enumerator.new(['A','B','C','Z'])4.times{putschars.next}# Generatore de un bloquecount=Enumerator.newdo|yielder|i=0loop{yielder.yieldi+=1}end100.times{putscount.next}
generador, informática, computación, generador, rutina, especial, puede, usar, para, controlar, comportamiento, iterador, bucle, generador, similar, función, devuelve, vector, generador, tiene, parámetros, pueden, llamar, genera, secuencia, valores, lugar, con. En computacion un generador es una rutina especial que se puede usar para controlar el comportamiento de un iterador en un bucle Un generador es muy similar a una funcion que devuelve un vector en el que un generador tiene los parametros que se pueden llamar y genera una secuencia de valores En lugar de construir un vector que contenga todos los valores y devolverlos de una vez un generador proporciona un valor a la vez lo que requiere menos memoria y por lo tanto permite que quien lo llama comience a procesar los primeros valores inmediatamente En resumen un generador se asemeja a una funcion pero se comporta como un iterador Los generadores pueden implementarse en construcciones de control de flujo mas expresivas como la continuacion de objetos de primera clase o como co funciones Los generadores aparecen por primera vez en 1975 en el lenguaje CLU y estan disponibles en Python C JavaScript Ruby y en otros idiomas En CLU y C los generadores se llaman iteradores y en Ruby enumeradores Python EditarUn ejemplo de generador en Python def countfrom n while True yield n n 1 Ejemplo mostrar los enteros entre 10 y 20 Hay que tener en cuenta que esta iteracion normalmente termina aunque el countfrom se escriba como un bucle infinito for i in countfrom 10 if i lt 20 print i else break Otro generador que produce los primeros numeros primos a to si a gt 2 de lo contrario indefinidamente dependiendo de la necesidad def primos to yield 2 primer numero primero y unico par n 3 p while n lt to or to lt 2 sqr n int n 0 5 if not any n f 0 for f in p if f lt sqr n funciona desde Python 2 5 con el paquete NumPy que introduce any yield n p append n n 2 Solo revisar impares raise StopIterationRuby EditarRuby soporta generadores a partir de la version 1 9 en la clase Enumerator Generador de un objeto enumerable chars Enumerator new A B C Z 4 times puts chars next Generatore de un bloque count Enumerator new do yielder i 0 loop yielder yield i 1 end 100 times puts count next Vease tambien EditarIterador Corrutinas Portal informatica Contenido relacionado con informatica Datos Q2565187 Obtenido de https es wikipedia org w index php title Generador informatica amp oldid 125887636, wikipedia, wiki, leyendo, leer, libro, biblioteca,