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.
for row in 1...3 {
for col in 1...2 {
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 2Per ogni valore di row, il ciclo interno viene eseguito completamente per tutti i valori di col. Quindi, con 3 iterazioni esterne e 2 iterazioni interne, il codice al loro interno viene eseguito 6 volte in totale (3 × 2).
I cicli annidati vengono comunemente usati per lavorare con strutture a griglia o per generare schemi.
Ecco un esempio che stampa un semplice rettangolo di asterischi:
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // Vai alla riga successiva
}
// Output:
// ****
// ****terminator: "" impedisce a print di aggiungere un a capo, così gli asterischi appaiono sulla stessa riga. Al termine del ciclo interno, print("") passa alla riga successiva.
Sfida
FacileLeggi due 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 riga e del numero della 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 i valori sulla stessa riga con uno spazio
- 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 Provalo tu
let rows = Int(readLine()!)!
let cols = Int(readLine()!)!
// TODO: Scrivi il tuo codice qui sotto
// Usa cicli annidati per stampare una tabella delle moltiplicazioni
// Ciclo esterno: itera sulle righe (da 1 a rows)
// Ciclo interno: itera sulle colonne (da 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 successivaQuesta 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 moduloAssegnazione compostaRiepilogo - Matematica sempliceOperatori di confronto7I/O di base
Funzione printInterpolazione di stringheInput con ReadLineConversione di tipoRipasso - Fino a 120Ripasso - Vero o falso10Funzioni
Dichiarare una funzioneParametri e argomentiValori restituitiEtichette degli argomentiRiepilogo - Funzione SigmaRiepilogo - Funzione di validazioneValori predefiniti13Iterare sulle sequenze
Iterare sugli elementiIl metodo enumerateIterare sulle stringhe P1Iterare sulle stringhe P22Variabili
Let vs VarAnnotazioni di tipoNumeriStringaBooleanoConvenzioni di denominazioneRiepilogo - Inizializzare le variabili5Operatori Parte 2
Operatori logici Parte 1Operatori logici Parte 2Riepilogo - Logica sempliceOperatori logici Parte 3Operatore ternario8Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire i dati11FizzBuzz con una variante
Panoramica del giocoLa funzione FizzBuzz3Valori opzionali
Cosa sono i valori opzionaliEstrazione del valore con if letGuard letOperatore di coalescenza nilRiepilogo - Estrazione sicura del valore6Decisioni
Istruzione ifIf - ElseRipasso - Calcolatrice sempliceIstruzione switchSwitch con intervalli9Cicli
Ciclo for-inCiclo whileCiclo repeat-whileBreakContinueRipasso - FattorialeIntervalli nei cicliCiclo annidatoRipasso - Input dinamicoEsercitati da solo: Playground Swift