Ciclo annidato
Fa parte della sezione Fondamenti del percorso C# di Coddy. Lezione 46 di 69.
Un ciclo annidato è semplicemente un ciclo all'interno di un altro ciclo. Il ciclo interno completerà tutte le sue iterazioni per ogni singola iterazione del ciclo esterno.
Una buona analogia è quella di un orologio: per ogni ora (ciclo esterno), la lancetta dei minuti (ciclo interno) deve completare il suo ciclo completo di 60 minuti.
Esempio di ciclo annidato:
int rows = 2;
int cols = 2;
for (int x = 0; x < rows; x++) {
for (int y = 0; y < cols; y++) {
Console.WriteLine(x + " " + y);
}
}
// Questo produrrà in output:
// 0 0
// 0 1
// 1 0
// 1 1Il ciclo esterno (x) viene eseguito rows volte e, per ognuna di queste volte, il ciclo interno (y) viene eseguito cols volte: ciò significa che il corpo del ciclo interno viene eseguito in totale 2 × 2 = 4 volte. Ogni ciclo ha il proprio contatore: y riparte da 0 ogni volta che viene eseguito il ciclo esterno, mentre rows e cols rimangono invariati e indicano solo ai cicli quando fermarsi.
Potresti aver bisogno anche di Console.Write() quando lavori con cicli annidati. A differenza di Console.WriteLine(), che stampa il testo e passa a una nuova riga, Console.Write() stampa il testo senza aggiungere un ritorno a capo alla fine. Questo ti permette di comporre l’output sulla stessa riga:
for (int y = 0; y < 4; y++) {
Console.Write("* ");
}
Console.WriteLine();
// Questo produrrà in output:
// * * * * Qui, Console.Write() continua a stampare sulla stessa riga, mentre Console.WriteLine() alla fine passa alla riga successiva.
Sfida
PrincipianteScrivi un programma che stampa un rettangolo di asterischi (*) con una larghezza e un'altezza date.
Input: due interi: width e height
Ad esempio:
Se width = 5 e height = 3, l'output dovrebbe essere:
*****
*****
*****Se width = 4 e height = 6, l'output dovrebbe essere:
****
****
****
****
****
****Usa un nuovo contatore per ogni ciclo (ad esempio i per le righe e j per gli asterischi in una riga) e confrontalo con height o width. Non modificare height e width: ogni riga ha bisogno di nuovo di width.
Provalo tu
using System;
public class Program {
public static void Main(string[] args) {
int width = int.Parse(Console.ReadLine());
int height = int.Parse(Console.ReadLine());
// Scrivi il tuo codice qui sotto
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 1
Operatori aritmeticiOperatore moduloIncremento/DecrementoIncremento/Decremento postfissoAbbreviazioni aritmetiche7Input/Output di base
Output di baseInterpolazione di stringheLettura dell'inputParsingRipasso - Fino a 120Ripasso - Vero o falso5Operatori Parte 2
Operatori di confrontoOperatori logici Parte 1Operatori logici Parte 2Riepilogo - Logica sempliceOperatori logici Parte 33Variabili Parte 2
VarCostantiConvenzioni di denominazioneRiepilogo - Inizializzare le variabiliConversione dei tipi6Prendere decisioni
Istruzione ifIf - ElseIstruzione switchOperatore ternarioRiepilogo - If ElseIf - Else annidati9Cicli
Ciclo forCiclo whileCiclo do whileBreakContinueCiclo annidatoCiclo infinitoRiepilogo - Input dinamico12Operazioni sulle stringhe
Metodi delle stringhe Parte 1Metodi delle stringhe Parte 2Formattazione delle stringheEsercitati da solo: Compilatore C# online