> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/ud2-programacion-estructurada/estructuras-repetivas/for.md).

# For

É unha estrutura de control que repite un conxunto de instrucións mentres non se cumpra unha condición. Diferenciase das anteriores en que neste bucle si se coñece cantas veces se vai a repetir un bloque. Ten as seguntes caracteristicas:

* O **control** do bucle (inicio, condición e actualización da variable de control) escribese nunha **única liña**
* Se a condición é falsa ó inicio, o bucle non se executa nin unha vez

**Uso típico:** Recorridos de listas nas que é coñecido o número de elementos

<figure><img src="/files/wcbMeCKzHyVLAEQ3jnZm" alt=""><figcaption></figcaption></figure>

O bucle `for` permite controlar o número de iteracións mediante unha variable contador. A súa sintaxe é a seguinte:

```java
for (inicialización; condición; incremento){
    // Bloque de instrucions
}
```

* `inicialización`<i class="fa-copy">:copy:</i>: é unha ou máis asignacións dunha variable.
* `condición`<i class="fa-copy">:copy:</i>: é unha expresión booleana que controla as iteracións do bucle
* `incremento`<i class="fa-copy">:copy:</i>: é o aumento a aplicar as variables que controlan a condición tras cada iteración.

O seu funcionamento é o seguinte:

1. Execútase a `inicialización`<i class="fa-copy">:copy:</i>. Isto só se executa unha vez antes do bucle.
2. Avalíase a `condición`<i class="fa-copy">:copy:</i>. Se é falsa, sáese do bucle. Se é verdadeira execútase o código do bucle.
3. Cando remata de executarse o bloque de instrucións execútase o `incremento`<i class="fa-copy">:copy:</i>.
4. Vólvese o punto 2.

Vexamos un exemplo:

```java
for (int i = 1; i < 3; i++){
    System.out.println(i);
}
```

Vexamos a execución deste bucle:

1. Primeiro execútase a `inicialización`<i class="fa-copy">:copy:</i> (`int i = 1`<i class="fa-copy">:copy:</i>). A variable `i` definida como enteiro asígnaselle o valor 1.
2. Executamos a `condición`<i class="fa-copy">:copy:</i> (`i < 3`). Como `i`, que ten o valor 1, é menor que 3, procedemos a executar o bloque de instrucións.
3. O bloque de instrucións imprime `1`.
4. Executamos o `incremento`<i class="fa-copy">:copy:</i> (`i++`). Isto fai que `i`incremente o valor nunha unidade e teña o valor 2.
5. Vólvese comprobar a `condición`<i class="fa-copy">:copy:</i> (`i < 3`). Como `i`, 2, é menor que 3 execútase o bloque de instrucións.
6. O bloque de instrucións imprime o valor `2` por pantalla.
7. Executamos o `incremento`<i class="fa-copy">:copy:</i> (`i++`). Isto fai que `i`incremente o valor nunha unidade e teña o valor 3.
8. Execútase a `condición`<i class="fa-copy">:copy:</i> (`i < 3`). Neste caso é falsa, polo tanto saímos do bucle.

## Ámbito das variables bo bucle for

En Java, é común definir unha variable directamente na declaración dun bucle `for`. Esta variable só existe no ámbito do bucle e non é accesible fóra del.

A variable i só existe dentro do bucle. Se intentas acceder a ela fóra do bucle, obterás un erro de compilación, xa que o seu ámbito está limitado ao for. Exemplo:

```java
for (int i = 0; i < 10; i++) {
    System.out.println(i);
}

System.out.println(i); // Error: no se puede encontrar la variable i
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/ud2-programacion-estructurada/estructuras-repetivas/for.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
