# Módulo Loop For

* [Definição](#conceitos)
* [Configuração do módulo](#configuracao-do-modulo-loop-for)&#x20;
  * [Loop For](#loop-for)
* [Exemplo](#exemplo)

### **Definição** <a href="#conceitos" id="conceitos"></a>

O módulo ferramental "**Loop** **For"**, módulo padrão do **Skyone Studio** para a utilização em qualquer fluxo, foi criado para suprir a necessidade de processamento de listas de informações. Ele é composto por duas operações, **Begin** e **End**, que marcam, respectivamente, o começo e o fim de uma repetição (loop), com base em um **array** que você deve fornecer no formato JSON.

A primeira operação (**Begin**) aceita como argumento apenas uma lista ou **array** e deriva as 3 declarações do FOR a partir dessa lista. Esse tipo de expressão também é conhecida como **For Each** em algumas linguagens, e pode ser representado da seguinte maneira:

```json
for(loop_counter = 0; loop_counter < array.length ; loop_counter++){
    element = array[loop_counter]; 
	//bloco de código que será executado
} 
```

Para representar o **loop\_counter** (contador do loop) e o **element** do código acima no **Skyone Studio**, a operação **Begin** do módulo **For** inicializa e mantém dois parâmetros equivalentes, que poderão ser acessados por qualquer módulo conectado ao fluxo:

1. **loopCounter**: armazena a posição de execução do fluxo, iniciando do valor “0” para a primeira execução e incrementando-o a cada execução
2. **element**: armazena o elemento do array que está na posição de **loopCounter**, sendo uma forma conveniente de acessar o conteúdo de cada execução do loop

{% hint style="info" %}
A operação **Begin** do módulo **For** somente executará o código dentro do segmento do fluxo localizado entre as operações **For Begin** e **For** **End** se o array passado como parâmetro for válido. Caso o array seja vazio (ou seja, somente “\[]”), o bloco inteiro será ignorado e a execução seguirá para o próximo componente do fluxo depois do **For** **End** ou simplesmente encerrará a execução do fluxo (caso não haja mais operações a serem executadas).
{% endhint %}

### **Configuração do módulo "Loop For"** <a href="#configuracao-do-modulo-loop-for" id="configuracao-do-modulo-loop-for"></a>

O módulo "**Loop For"** aparece na opção **Ferramentas** da edição de um fluxo. Após clicar para adicioná-lo, o modal de configuração será exibido.

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2F0RPs8DYjkX10ViGvILvt%2Floop-for-modulo.gif?alt=media&#x26;token=25c15bb5-ff21-4183-8c0b-c41545e4425c" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
[Saiba sobre o Cabeçalho do Módulo aqui](https://docs.skyone.cloud/skyone-studio/integracoes/cabecalho-dos-modulos).&#x20;
{% endhint %}

#### **Loop For** <a href="#loop-for" id="loop-for"></a>

Preencha os campos necessários do "**Loop For"**, sendo que:

* **Lista (Array)**: aqui você poderá arrastar tanto um parâmetro das operações anteriores como ou um parâmetro do fluxo, assim como informar um array manualmente ou utilizar uma operação [SMOP](https://docs.skyone.cloud/skyone-studio/integracoes/operacoes-de-dados/smop-pequenas-operacoes) (no ícone de + );
* **Validar**: valida o array, exibindo a lista completa que será tratada na área de **Pré-visualização dos Dados.**

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2FGwQy5HUWviavcGTDykGR%2F1F80965B-0787-462E-AABD-3605B90D9366.png?alt=media&#x26;token=a821d8d2-7838-4ea3-8e20-2228857922c8" alt=""><figcaption></figcaption></figure>

Para finalizar a configuração do módulo, clique em "**Salvar"**.

#### Exemplo <a href="#exemplo" id="exemplo"></a>

O módulo "**Loop For"** requer que um outro módulo esteja conectado a ele. Observe o exemplo:

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2Flq8sOlYnRwVRQsrZOMyH%2F687B09EE-E469-408D-8218-34871568BF66.png?alt=media&#x26;token=95e3c4f5-8f3c-48f4-8b12-6b2b8120fc3a" alt=""><figcaption></figcaption></figure>
