# Cicli while in R: come funzionano i cicli while in R

I cicli sono uno dei **concetti base della programmazione**. La loro funzione è consentire l’esecuzione ripetuta di determinate parti di codice in presenza di una data condizione. I cicli while in R permettono di ripetere una sezione di programma fino a quando la condizione precedentemente specificata diventa falsa.

## A cosa servono i cicli while in R?

I cicli while sono utilizzati per **eseguire ripetutamente il codice di programma** secondo una data condizione. Finché la condizione è valida, il codice che si trova nel blocco di codice del ciclo while continua a essere eseguito.

I cicli sono utilizzati spesso nella [programmazione in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/linguaggio-di-programmazione-r/) per effettuare l’iterazione di elementi di una [lista in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/liste-in-r/) e quindi eseguire determinate operazioni per ciascun elemento di tale lista. Ad esempio, in questo modo è possibile visualizzare sullo schermo ciascuna stringa di una lista di [stringhe in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/stringhe-r/). I cicli while in R sono utilizzati anche per l’esecuzione condizionale di codice. Inoltre, il ciclo while è la base per l’implementazione di molti **algoritmi di ordinamento** ben noti, che permettono di ordinare un insieme di dati in base a determinati criteri.

## Struttura e sintassi dei cicli while in R

La sintassi dei cicli while in R è simile alla struttura dei cicli while nella maggior parte degli altri linguaggi di programmazione. Nell’intestazione del ciclo, introdotta dalla parola chiave *while*, si indica la condizione tra parentesi tonde. La condizione deve essere vera perché il corpo del ciclo venga eseguito. Questo corpo non è altro che un proprio blocco di codice che segue l’intestazione ed è racchiuso tra parentesi graffe.

Un esempio è utile per descrivere la sintassi. Il seguente esempio di ciclo in R mostra un ciclo while che emette i valori da 1 a 10:

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

## Esempio: bubblesort in R

Bubblesort è un classico algoritmo di ordinamento, utilizzato per **mettere in ordine crescente gli elementi di un vettore o di un [array in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/r-gli-array/)**. In questo algoritmo di ordinamento si utilizza un ciclo while per eseguire il codice di ordinamento fino a quando tutti gli elementi del vettore sono messi in ordine:

```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)
}
```

Il codice precedente crea una [funzione in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/funzioni-r/) di nome *bubblesort* che permette di ordinare un vettore numerico in ordine crescente. Il ciclo while serve a eseguire la procedura di sostituzione alla base di bubblesort fino a completare l’ordinamento.

## Interruzione di un ciclo while in R

Per **chiudere anticipatamente** un ciclo while in presenza di una data condizione puoi utilizzare la parola chiave `break`. Con questa parola chiave il ciclo viene abbandonato e non più eseguito. Un esempio di applicazione di `break` è il seguente:

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

Il ciclo precedente mostra i numeri da 10 a 5 sullo schermo. Quando la variabile `x` raggiunge il valore 5, viene eseguita la condizione `if` di R e il ciclo viene concluso in anticipo richiamando l’istruzione `break`.

## Altri cicli in R

Il ciclo while in R non è l’unica forma di cicli in R. Esistono anche il ciclo for, considerato spesso come una sorta di **ciclo contatore**, e il ciclo repeat, che serve a **eseguire il codice più volte indipendentemente da una condizione**. Per uscire dai cicli repeat è necessario usare la parola chiave `break`, altrimenti diventano cicli continui.

### Ciclo for in R

I cicli for si utilizzano quando il numero di iterazioni non è noto in anticipo. Il numero di iterazioni viene quindi indicato esplicitamente nell’intestazione del ciclo. Un ciclo for che mostra i numeri da 1 a 5 si presenta così:

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

### Ciclo repeat in R

I cicli repeat in R si utilizzano per eseguire il codice più volte indipendentemente da una condizione. Se non hai appena iniziato a [studiare la programmazione](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/imparare-a-programmare-iniziare-dalle-basi/), probabilmente conosci già i cicli do-while da altri linguaggi di programmazione. In R non esiste un vero e proprio ciclo do-while che esegua un blocco di codice almeno una volta. Tuttavia, puoi implementare facilmente questa funzionalità con i cicli repeat:

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

L’esempio di codice precedente mostra i numeri da 1 a 10 sullo schermo. Il codice, che deve essere eseguito almeno una volta (e che in un classico ciclo do-while si troverebbe nel “blocco di codice do”), viene eseguito prima dell’istruzione `if`, che chiude il ciclo quando la condizione indicata è valida.


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/r-ciclo-while/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/r-ciclo-while/) for AI/LLM consumption.