break
Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 40 di 78.
A volte devi uscire da un ciclo in anticipo, prima che completi tutte le sue iterazioni. L'istruzione break ti permette di interrompere immediatamente un ciclo quando si verifica una condizione specifica.
for (i in 1:10) {
if (i == 5) {
break
}
print(i)
}Output:
[1] 1
[1] 2
[1] 3
[1] 4Il ciclo era impostato per essere eseguito da 1 a 10, ma quando i ha raggiunto 5, l'istruzione break ha interrotto completamente il ciclo. Nota che 5 non è mai stato stampato perché break esce immediatamente.
Questo è particolarmente utile con i cicli while quando cerchi qualcosa:
num <- 1
while (TRUE) {
if (num * num > 20) {
break
}
num <- num + 1
}
print(num)Output:
[1] 5Qui, while (TRUE) normalmente continuerebbe all’infinito, ma break lo interrompe non appena troviamo il primo numero il cui quadrato supera 20. Questo schema è comune quando devi cercare finché una condizione non è soddisfatta.
Sfida
FacileLeggi un numero limit dall'input. Usa un ciclo for per iterare da 1 a limit, ma interrompi il ciclo in anticipo usando break quando incontri il primo numero divisibile sia per 3 che per 7.
Stampa ogni numero prima di verificare la condizione. Quando trovi un numero divisibile sia per 3 che per 7, stampa quel numero, quindi esci dal ciclo.
Al termine del ciclo, stampa "Loop ended" usando print().
Ad esempio, se l'input è 30, l'output dovrebbe essere:
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
[1] 16
[1] 17
[1] 18
[1] 19
[1] 20
[1] 21
[1] "Loop ended"Il ciclo si ferma a 21 perché è il primo numero divisibile sia per 3 che per 7 (21 = 3 × 7).
Provalo tu
# Leggi l'input
con <- file("stdin", "r")
limit <- as.integer(suppressWarnings(readLines(con, n = 1)))
# TODO: Scrivi il tuo codice qui sotto
# Usa un ciclo for da 1 a limit
# Stampa ogni numero prima di verificare la condizione
# Interrompi il ciclo quando trovi un numero divisibile sia per 3 sia per 7
# Suggerimento: usa l'operatore %% per verificare la divisibilità
# Stampa "Loop ended" dopo il ciclo
print("Loop ended")Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 2
Operatori logici (AND, OR)Operatori logici Parte 2 (NOT)Ripasso - Logica sempliceLogica vettorializzata Parte 1Logica vettorializzata Parte 27Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire input dell'utente10FizzBuzz con una variante
Panoramica del giocoLa funzione FizzBuzz13Vettori: argomenti avanzati
Slicing e indicizzazione dei vettoriIndicizzazione logicaAritmetica dei vettori e ricicloL’operatore %in%2Variabili e tipi di dati
Tipo di dato numericoTipo di dato interoTipo di dato carattereTipo di dato logicoControllo dei tipi di datoConvenzioni di denominazioneValori mancanti: NARiepilogo - Creazione di variabili8Cicli
Ciclo forCiclo whilebreaknext (continue)Riepilogo - FattorialeGenerazione di sequenze (seq, :)Cicli annidatiRiepilogo - Input dinamico3Operatori Parte 1
Operatori aritmeticiDivisione intera e moduloOperatori di assegnazioneRiepilogo - Matematica sempliceOperatori di confronto6I/O di base
Stampare l'outputcat per l'outputOutput con variabiliLeggere l'input con readline()Nozioni di base sulla conversione dei tipiRiepilogo - Calcolatore dell'etàRiepilogo - Vero o falso9Funzioni
Dichiarare una funzioneArgomenti della funzioneValori di ritornoRiepilogo - Funzione SigmaRiepilogo - Funzione di validazioneValori predefiniti dei parametriEsercitati da solo: Compilatore R online