Effective Loop Management: Nested Loops and Control with Break/Continue
Video tutorial gratuito di Tim Buchalka's Learn Programming Academy
Professional Programmers and Teachers - 2.28M students
62 corsi
2.359.297 studenti
Segui il corso completo per saperne di più
C Programming For Beginners - Master the C Language
C Programming will increase career options. Become a better dev in other languages by learning C. Pointers explained
25:36:08 di video on-demand • Ultimo aggiornamento: Aprile 2025
Understand the fundamentals of the C Programming Language
Make yourself more marketable for entry level programming positions
Create your first C Application
Learn one of the most popular, widly used languages in the world
Understand variables and the different data types
Apply for real-time programming positions
Understand the core language that most modern languages are based on
Learn how to write high-quality code
Italiano [Auto]
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.