Menu
CoddyTech

Ciclo annidato

Fa parte della sezione Fondamenti del percorso Swift di Coddy. Lezione 49 di 86.

Un ciclo annidato è semplicemente un ciclo all'interno di un altro ciclo. Il ciclo interno completa tutte le sue iterazioni per ogni singola iterazione del ciclo esterno.

let rows = 3
let cols = 2
for row in 1...rows {
    for col in 1...cols {
        print("Row \(row), Col \(col)")
    }
}
// Output:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2

Per ogni valore di row, il ciclo interno ricomincia e scorre tutti i valori di col, da 1 a cols. Quindi, con rows = 3 e cols = 2, il codice all'interno viene eseguito 6 volte in totale (3 × 2). rows e cols non cambiano mai: indicano solo ai cicli quando fermarsi.

I cicli annidati sono comunemente usati per lavorare con strutture simili a griglie o per generare motivi.

Ecco un esempio che stampa un semplice rettangolo di asterischi:

for row in 1...2 {
    for col in 1...4 {
        print("*", terminator: "")
    }
    print("")  // Passa alla riga successiva
}
// Output:
// ****
// ****

Il terminator: "" impedisce a print di aggiungere una nuova riga, così gli asterischi appaiono sulla stessa riga. Dopo che il ciclo interno termina, print("") passa alla riga successiva.

challenge icon

Sfida

Facile

Leggi due numeri interi dall'input: rows e cols. Usa cicli annidati per stampare una griglia di numeri in cui ogni cella mostra il prodotto del numero della sua riga per quello della sua colonna.

Riceverai i seguenti input:

  • Prima riga: numero di righe (ad es. "3")
  • Seconda riga: numero di colonne (ad es. "4")

Requisiti:

  • Usa un ciclo esterno per le righe (da 1 a rows)
  • Usa un ciclo interno per le colonne (da 1 a cols)
  • Stampa il prodotto dei numeri della riga e della colonna correnti
  • Separa con uno spazio i valori sulla stessa riga
  • Ogni riga deve essere su una riga distinta

Suggerimento: Usa terminator: " " per mantenere i valori sulla stessa riga, poi usa print("") dopo il ciclo interno per passare alla riga successiva.

Ad esempio, se rows è 3 e cols è 4, l'output dovrebbe essere:

1 2 3 4 
2 4 6 8 
3 6 9 12 

Usa un nuovo contatore per ogni ciclo (ad esempio row per le righe e col per i numeri di una riga) e confrontalo con rows o cols. Non modificare rows e cols: ogni riga ha bisogno di cols di nuovo.

Provalo tu

let rows = Int(readLine()!)!
let cols = Int(readLine()!)!

// TODO: Scrivi il tuo codice qui sotto
// Usa cicli annidati per stampare una tabella di moltiplicazione
// Ciclo esterno: itera sulle righe (1 a rows)
// Ciclo interno: itera sulle colonne (1 a cols)
// Stampa il prodotto di row * column
// Usa print(..., terminator: " ") per mantenere i valori sulla stessa riga
// Usa print("") dopo il ciclo interno per passare alla riga successiva
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Swift