Ciao e Benvenuto. In questa lezione, voglio parlare dei loop annidati e del controllo dei loop.
Cicli annidati, cicli dentro i cicli, il controllo del ciclo ha a che fare
con le istruzioni break e continue.
Così annidati loop.
Ci sono momenti in cui vuoi inserire un loop all'interno di un altro loop.
Ha perfettamente senso.
Quindi, ad esempio, potresti
voler contare il numero di occupanti in ogni casa in una strada.
Quindi quello che faresti è avere un anello esterno in cui passi di casa in casa.
E poi ogni casa in cui ti trovi, conta il numero di occupanti.
Quindi spero che tu possa visualizzare o capire come potrebbe essere un ciclo annidato.
Ancora una volta, il ciclo esterno per attraversare tutte le case.
E poi per ogni iterazione del ciclo esterno di ogni casa che incontri, entreresti nella
casa e avresti un ciclo per contare tutte le persone.
Quindi è una specie di piccolo caso d'uso quando si desidera utilizzare
effettivamente un ciclo annidato in c.
Ecco un esempio. Sembra proprio che tu pensi
che sembrerebbe un loop all'interno di un loop davvero non troppo complicato.
In questo esempio, stiamo usando i cicli for per.
I loop sono utili perché possiamo inizializzare la variabile di controllo del ciclo, avere
il nostro controllo delle condizioni e la nostra variabile di controllo del ciclo di modifica tutto in una riga.
Quindi questo ciclo esterno e chiamalo ciclo interno esterno.
Il ciclo esterno è esattamente ciò che implica. È il ciclo all'esterno.
E puoi avere molti, molti diversi strati di nidificazione. Potresti avere molti
loop interni.
In questo caso, stiamo attraversando ed è un
ciclo controllato da contro, iniziamo da uno e andiamo fino in fondo a contare.
Non sappiamo quale sia il conteggio qui, non importa.
Nel corpo del ciclo for, stiamo dicendo che la somma è uguale a 0. Stiamo inizializzando la somma per il ciclo interno.
E poi all'interno del ciclo interno, vediamo un altro ciclo for e j è uguale a 1,
j è minore di I e più più j. Allora diciamo che la somma più è uguale a j.
Stiamo calcolando la somma degli interi da 1 a I.
Quindi quello che sta facendo in realtà è che stai inserendo un numero 5.
E per la prima iterazione del ciclo, stai
sommando 1 2 3 4 e 5.
Per la prossima iterazione del
ciclo, stai sommando 2 3 4 5.
Per la terza iterazione del ciclo, stai sommando 3 4 5 e così via.
Quindi i loop interni sono necessari soprattutto in base al caso d'uso, solo un loop
all'interno di un loop perfettamente.
Lo vedrai un bel po '.
Non evitarlo. A seconda di ciò che devi fare e del problema che stai cercando
di risolvere, viene spesso utilizzato un po '.
E a quel punto, non è sempre un ciclo for all'interno di un ciclo for, puoi avere un
ciclo while all'interno di un ciclo for. Potresti avere un ciclo do while all'interno di un
ciclo for, non importa.
Quindi in questo
esempio, lo stesso esempio esatto tranne ora all'interno del corpo del ciclo
for, abbiamo un ciclo annidato un ciclo interno chiamato usando la parola chiave while.
Quindi stiamo ancora calcolando alcuni numeri interi da 1 a I.
Abbiamo qualche uh inizializzazione al di fuori del ciclo while.
Abbiamo una condizione all'interno del controllo while e
abbiamo le nostre somme all'interno del corpo del ciclo while in
cui siamo modificati che è la variabile di controllo del ciclo che stiamo modificando.
Quindi somma più è uguale e quindi stiamo modificando la variabile di controllo del ciclo con più più j.
Quindi se non modifichiamo più più j, avremmo un ciclo infinito per il ciclo while.
Ma sta facendo lo stesso output, sta solo usando un ciclo while come ciclo annidato invece del ciclo for.
Quindi l'annidamento non è davvero diverso da quando stai annidando qualcosa.
Sono state annidate le istruzioni if, le istruzioni if all'interno delle istruzioni if, le
istruzioni del ciclo annidato si ripetono all'interno dei cicli.
Per allontanarsi dal concetto
di cicli annidati, parliamo dell'istruzione continue.
Fino a questo punto in cui abbiamo parlato di
loop, abbiamo sempre eseguito il loop un numero di volte in base alla
condizione di uscita, l'espressione booleana che restituisce false.
Tuttavia, ci sono momenti in cui si desidera terminare in anticipo un ciclo in modo
specifico o si desidera continuare con l'iterazione
successiva del ciclo senza fare nulla.
In quest'ultimo caso continuando senza fare
nulla, essenzialmente saltando, puoi
usare l'istruzione continue per farlo.
Quindi l'istruzione continue nel corpo di un ciclo fa quanto segue.
E prima di tutto, se vuoi iniziare, tutto ciò che devi fare è inserire la parola chiave
continue seguita da un punto e virgola nel corpo del ciclo.
Ma quello che farà è
sostanzialmente saltare quell'iterazione. Quindi il continue qualsiasi cosa
sotto il continue non verrà eseguito se è all'interno del corpo del ciclo.
Quindi continua molte volte in cui vorremo essere all'inizio del ciclo in
base a qualche condizione, di solito è racchiuso in un'istruzione if.
Se ciò accade in una situazione speciale, non voglio eseguire
alcun codice nel corpo del ciclo, salta
semplicemente questa iterazione e controlla la prossima volta.
E ancora, è un po 'confuso perché stai saltando un'iterazione e stai saltando da una parte all'altra, ma
è valido ed è un modo per eseguire più controlli.
Quindi, anche se hai la tua condizione di uscita dal ciclo all'interno della tua espressione
booleana, puoi avere un altro controllo.
E quel controllo non salterà fuori dal ciclo,
ma salterà un'iterazione.
Quindi viene utilizzato di nuovo per il caso in cui si desidera saltare l'iterazione. Il vantaggio è che
puoi usare continue ed eliminerà molti annidamenti.
Eliminerà anche molte istruzioni if aggiuntive all'interno del blocco di cicli.
Quindi può migliorare la leggibilità quando
le istruzioni sono molto lunghe o si ha una nidificazione profonda.
Quindi se trovi che stai facendo molti nidi.
potresti dire eh forse posso usare un continue invece.
O se scopri di avere molte istruzioni if
che stanno facendo certe cose all'interno del corpo del ciclo, forse vuoi fare un continue.
Non usare il continue se complica piuttosto che semplifica il codice.
Non utilizzare il pulsante Continua se non sai cosa stai facendo.
Ecco un esempio di continue.
In questo esempio, stiamo creando una nuova enumerazione di tipo giorno
e stiamo dicendo che i valori validi sono lunedì martedì mercoledì giovedì venerdì sabato domenica.
E poi abbiamo un ciclo for in cui inizializziamo il nostro
enum su Monday, e diciamo che
fintanto che il giorno è minore di domenica, questa è
una condizione per uscire e quindi diciamo più più giorno.
Potresti chiederti come incrementiamo un enum?
Bene, ricorda che un enum sotto il cofano è un numero intero.
Quindi puoi dire più più giorno su un enum e questo lo incrementerà a quello successivo.
Ricorda, lunedì è uguale a 0, martedì è uguale a 1,
mercoledì è uguale a 2, è tutto nell'ordine della lista.
Quindi perfettamente corretto per incrementare le enumerazioni.
In questo ciclo for, se è mercoledì,
vogliamo saltare. Non vogliamo fare niente. Non vogliamo stampare.
Quindi diciamo continua. Se il giorno è uguale
a mercoledì, continuare. Salterà la riga di stampa. Tornerà all'inizio del
ciclo ed eseguirà l'iterazione successiva.
E quindi sarà giovedì.
Non sarà uguale a mercoledì, quindi non salterà.
Andrà giù e verrà stampato non è mercoledì.
Quindi questo è un caso d'uso comune, un esempio comune di utilizzo di continue, sintassi molto facile da usare, solo una
semplice parola chiave seguita dal punto e virgola.
L'altro caso in cui potresti voler fare qualcosa di strano nel ciclo
è se vuoi uscire presto.
Quindi normalmente dopo che il corpo del ciclo
è stato inserito, un programma eseguirà tutte le istruzioni nel corpo del
ciclo e per ogni iterazione, quindi controllerà e salterà fuori.
E sappiamo come funziona il continue che sta facendo un salto leggermente diverso.
C'è un'altra istruzione che può alterare l'esecuzione di tutte le istruzioni nel ciclo,
si chiama break.
E questo dovrebbe essere in qualche modo familiare perché usiamo la parola chiave break quando
parliamo dell'istruzione switch.
Ricorda, quando avevamo i nostri casi, uscivamo dai casi in quel modo.
Bene, puoi anche usare la parola chiave break all'interno di un ciclo.
E ciò che farà è che salterà fuori dal giro.
Quindi l'istruzione break farà sì che il programma esca immediatamente dal ciclo, che è in esecuzione.
Le istruzioni nel ciclo vengono ignorate e l'esecuzione del ciclo viene terminata.
Quindi stai solo saltando fuori dal giro.
Stai eseguendo presto. Se l'istruzione break è all'interno di cicli annidati, influenzerà solo
il ciclo più interno, che lo contiene. Stai solo per saltare fuori dal ciclo in cui ti trovi.
E per fare questo usi la parola chiave break seguita da un punto e virgola.
La pausa viene spesso utilizzata per lasciare un loop quando ci sono 2 motivi separati per andarsene.
Quindi prima ho detto che potresti avere un altro motivo per cui vuoi saltare
un'iterazione, ma se ci sono 2 motivi, 2 condizioni per cui vuoi uscire da un ciclo,
puoi usare un'interruzione.
Se hai solo una
condizione, allora è solo la condizione, all'interno del ciclo stesso all'interno delle parentesi del
while o prima del secondo punto e virgola nel ciclo for.
Break viene utilizzato anche nelle istruzioni switch, come ho detto.
Quindi volevo solo ricordartelo. Non confonderli.
In sostanza, però, fanno le stesse cose. Saltano fuori dal codice.
Interrompere un'istruzione switch salterà completamente fuori
da quell'istruzione switch, interrompere un loop salterà fuori da quel loop.
Bene, ecco un esempio. Abbiamo un ciclo di tempo.
Stiamo stampando alcuni numeri interi.
Stiamo leggendo in alcuni numeri interi. Abbiamo un ciclo while annidato.
All'interno del ciclo while annidato, controlliamo cosa
è stato inserito. E se è maggiore di
100, vogliamo uscire da quel ciclo interno. Quindi lo facciamo.
Quindi nel ciclo esterno, dobbiamo fare un altro controllo. Se è maggiore di 100, rompiamo
quel ciclo esterno.
Se non avessi la seconda pausa, non salteresti mai fuori dal secondo ciclo esterno.
Quindi in questo caso, questo mi ricorda un posto dove potresti usare un andare.
Immagina di avere 5 annidamenti, 5 strati di annidamento, mentre fai un ciclo all'interno di un ciclo
while all'interno di un ciclo while all'interno del ciclo while all'interno del ciclo while.
Se usassi l'interruzione solo per provare a saltare fuori
dai cicli, avresti tutte queste istruzioni if in ogni ciclo per saltare fuori.
Invece di fare tutte quelle dichiarazioni
if, potresti provare. Il go to salta fuori da tutti i loop di stato del loop in un unico comando.
Quindi questo è un caso d'uso per andare a. Ma in questo caso, stiamo solo
dimostrando delle interruzioni e assicuriamoci che tu capisca che stai solo
uscendo da quel ciclo in cui ti trovi.
E in questo caso, stiamo uscendo da 2 loop.
Quindi questi sono i 2 esempi, le 2 parole chiave in cui non puoi essenzialmente ripetere il
codice di ciò che ti aspetti.
Quindi, se vedi un'interruzione o continui nel ciclo, assicurati di
capire cosa sta succedendo perché
potresti non eseguire un determinato codice che pensi verrà eseguito.
Di nuovo, di solito avvolto all'interno di una condizione if. Quindi puoi vederlo
in questo modo, ma vuoi anche fornire buoni commenti quando usi break o continue.
Spero che sia di aiuto. Nella prossima lezione, faremo una
sfida in cui saremo in grado di utilizzare
questi loop e dimostrerà e ti aiuterà a imparare tutto su while for loop e break
and continue. Grazie.