# Introdução ao R while loop: Conceito e exemplos

Loops são um dos **elementos mais básicos da programação**: eles asseguram que trechos de códigos sejam executados repetidamente, de acordo com a condição pré-estabelecida. Entre os tipos de loops possíveis está o *while loop*, usado na linguagem de programação R para repetir a execução de um bloco de código enquanto a condição especificada for verdadeira. Aprenda a usar o R *while loop*.

## Para que serve o R while loop?

O comando *while loop* em R é usado para **executar um bloco de código repetidamente**, respeitando a condição pré-estabelecida. Enquanto a condição for verdadeira, ele garante que o bloco de código continue sendo executado.

Loops são vastamente utilizados na [linguagem de programação R](https://www.ionos.com/digitalguide/websites/web-development/r-programming/ "Programar em R") para realizar iterações em elementos de uma [R lista](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/r-list/ "Listas em R") e, em seguida, executar operações individuais para cada um desses elementos. Por exemplo, um loop consegue exibir, na sua tela, cada string de uma lista de [R strings](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/r-string/ "Strings em R"). Mais especificamente, *while loops* em R são usados para executar códigos condicionais. Ainda, loops como o while são considerados fundamentais para a implementação de **algoritmos de ordenação** amplamente conhecidos, capazes de ordenar bancos de dados de acordo com critérios determinados.

## Sintaxe do R while loop

A sintaxe do R *while loop* é parecida com a sintaxe de outros comandos *while loop* de outras linguagens de programação. No *header* (cabeçalho) do loop, que deve ser iniciado com a palavra-chave *while*, você deve especificar os valores da condição entre parênteses. Para que o *loop hull* possa ser executado, o último valor especificado deve ser verdadeiro — *hull* nada mais é que o bloco de código entre colchetes, que vem depois do *header* do loop.

Observe o exemplo abaixo para entender o funcionamento de um R *while loop* em um código. Aqui, ele gera valores de 1 a 10:

```R
x <- 1
while (x <= 10) {
    print(x)
    x <- x + 1
}
```

## Combinar R while loop e Bubble Sort

Bubble Sort é um dos mais simples e populares algoritmos de ordenação. Seu papel é **comparar elementos de um R vetor ou de um [R array](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/r-array/ "Arrays em R") e ordená-los em ordem crescente**. Combinado ao Bubble Sort, o *while loop* faz com que o bloco de código seja executado repetidas vezes, até que todos os elementos do vetor ou do array sejam ordenados. O exemplo abaixo ilustra sua aplicação:

```R
bubblesort <- function(x) {
    swapped <- TRUE
    n <- length(x) - 1
    while (swapped) {
        swapped <- FALSE
        for (i in 1:n) {
            if (x[i] > x[i+1]) {
                tmp <- x[i]
                x[i] <- x[i+1]
                x[i+1] <- tmp
                swapped <-TRUE
                }
        }
    }
    return(x)
}
```

Nesse código, criamos uma [R função](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/function-r/ "Funções em R") de nome *bubblesort*. Ela foi inserida para assegurar que o vetor numérico fosse classificado em ordem crescente. Nesse contexto, o *while loop* foi utilizado para realizar o processo de troca essencial do Bubble Sort, até que a ordenação fosse concluída.

## Encerrar o R while loop

Para **encerrar antecipadamente** um *while loop* em execução, você deverá usar a palavra-chave *break*. Ela comanda a interrupção do comando e assegura que este não seja iniciado novamente. No exemplo abaixo, aplicamos o comando *break* a um *while loop* em execução, uma vez que a condição pré-definida seguia sendo verdadeira:

```R
x <- 10
while (x >= 0) {
    print(x)
    if (x == 5) {
        break
        }
        x <- x - 1
}
```

O loop acima foi criado com o objetivo de gerar números de 10 a 5. Assim, quando a variável *x* atingiu o valor 5, a condição *if* foi executada e o loop foi encerrado antecipadamente pela declaração *break*.

## Outros R loops

O R *while loop* não é o único tipo de loop da linguagem de programação R. O *for loop*, por exemplo, é considerado um **loop de contagem**. O *repeat loop*, por sua vez, é usado para executar um código **infinitas vezes, independentemente do atendimento da condição**. Para encerrar um *repeat loop*, você deve usar a palavra-chave *break*. Do contrário, ele continuará sendo executado.

### R for loop

O comando em R *for loop* deve ser usado quando o número de iterações for conhecido — número explicitado no *header* do loop. O exemplo abaixo executa um *for loop* usado para criar valores de 1 a 5:

```R
for (z in 1:5) {
print(i)
}
```

### R repeat loop

Na linguagem de programação R, o comando *repeat loop* é usado para executar um código infinitas vezes, independentemente do atendimento da condição. Se você sabe [o básico sobre programação](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/aprender-programacao-introducao-basica/), já deve estar familiarizado com o *do-while loop* de outras linguagens, como de Java. Em R, o comando *do-while*, que assegura a execução de um bloco de código pelo menos uma vez, não existe. O *repeat loop*, entretanto, consegue substituí-lo, como mostra o exemplo:

```R
x <- 1
repeat {
    print(x)
    if (x >= 10) {
        break
        }
x <- x + 1
}
```

Esse código tem o objetivo de criar números de 1 a 10. Para que fosse executado pelo menos uma vez (como faria o *do-while* em outras linguagens), o comando foi inserido antes da declaração *if* que, em conjunto com o *break*, encerra o loop se a condição especificada for verdadeira.


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/r-while-loop/](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/r-while-loop/) for AI/LLM consumption.