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 per effettuare l’iterazione di elementi di una lista 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. 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:

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

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. 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:

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

Il codice precedente crea una funzione in 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:

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

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ì:

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

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, 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:

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

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.

Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top