Gerador (ciência da computação)

 Nota: Para outros significados de Generator, veja Generator.

Em ciência da computação, um gerador (em inglês, generator) é um procedimento especial que pode ser usado para controlar iteradores de loops. Um gerador é muito similar para funções que retornam arrays (ou vetores), geradores podem ter parâmetros, que também podem ser chamados e geram uma sequência de valores. Entretanto, em vez de construir uma sequência que contenha todos os valores e os retornam de uma só vez, um gerador utiliza a palavra-chave yield para retornar os valores um de cada vez, que utiliza menos memória e permite o processamento de poucos valores rapidamente. Um gerador é uma função mas comporta-se como um iterador.

As primeiras aparições de geradores foram na CLU em 1975, [1] e atualmente são encontrados facilmente em softwares em linguagem de programação Python e C#. (em CLU e C# generators são chamados de iteradores).

Geradores são usualmente utilizados dentro de loops nas funções, que podem reduzir de grandes e demorados loops para únicos loops e rápidos.

Um exemplo de gerador em Python:

def contador(n):
    while True:
        yield n
        n += 1

for i in contador(10):
    if i <= 20:
        print i
    else:
        break

Em Python, um gerador pode ser pensado como um iterador que contém uma pilha. Sempre que é usado um iterador o método do next() é chamado, e é executado normalmente até o próximo yield ser alcançado. O gerador é congelado então outra vez, e o valor yield é retornado a quem o chamou. Os geradores computam seus valores yield somente por demanda, são úteis para representar as seqüências que são de difícil processamento pelo computador.

Ver também

editar

Referências

editar