Cicli annidati
Fa parte della sezione Fondamenti del percorso GO di Coddy. Lezione 49 di 109.
Cicli annidati sono cicli inseriti all'interno di un altro ciclo. Il ciclo interno viene eseguito completamente per ogni iterazione del ciclo esterno.
Creiamo una tabella di moltiplicazione per i numeri da 1 a 3 usando cicli annidati:
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
fmt.Printf("%d×%d=%d\t", i, j, i*j)
}
fmt.Println()
}Dopo aver eseguito questo codice, otteniamo una tabella di moltiplicazione in cui ogni riga rappresenta un valore della variabile del ciclo esterno (i) moltiplicato per tutti i valori della variabile del ciclo interno (j). L'output verrà visualizzato sullo schermo:
1×1=1 1×2=2 1×3=3
2×1=2 2×2=4 2×3=6
3×1=3 3×2=6 3×3=9 Capiamo come funziona passo dopo passo:
Per prima cosa, il ciclo esterno imposta i=1 e il ciclo interno viene eseguito completamente:
i=1, j=1: prints "1×1=1"
i=1, j=2: prints "1×2=2"
i=1, j=3: prints "1×3=3"Dopo che il ciclo interno termina, stampiamo una nuova riga con fmt.Println().
Poi il ciclo esterno imposta i=2 e il ciclo interno viene eseguito di nuovo:
i=2, j=1: prints "2×1=2"
i=2, j=2: prints "2×2=4"
i=2, j=3: prints "2×3=6"Infine, il ciclo esterno imposta i=3 e il ciclo interno viene eseguito un'ultima volta:
i=3, j=1: prints "3×1=3"
i=3, j=2: prints "3×2=6"
i=3, j=3: prints "3×3=9"Questo schema di cicli annidati è molto utile per lavorare con tabelle di dati o creare strutture simili a griglie.
Sfida
PrincipianteIn questa sfida, ti eserciterai a usare cicli annidati per stampare un semplice schema. Il ciclo esterno scorrerà le righe e quello interno scorrerà le colonne per creare una piccola griglia di caratteri.
Completa i cicli annidati per stampare una griglia 3x3 di asterischi (*). Ogni asterisco deve essere seguito da uno spazio, quindi ogni riga dovrebbe apparire così: * * * (con uno spazio finale). L'output previsto è:
* * * * * * * * *
Provalo tu
package main
import "fmt"
func main() {
// Numero di righe e colonne nella nostra griglia
rows := 3
columns := 3
// TODO: Crea un ciclo annidato per stampare una griglia di asterischi (*)
// Il ciclo esterno deve scorrere le righe
// Il ciclo interno deve scorrere le colonne
for i := 0; i < rows; i++ {
// Aggiungi qui il ciclo interno per stampare gli asterischi in ogni colonna
// Questo stampa una nuova riga dopo ogni riga della griglia
fmt.Println()
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori di confronto e logici
Operatori di confronto - Parte 1Operatori di confronto - Parte 2Operatore AND logicoOperatore OR logicoOperatore NOT logicoNozioni di base sulla precedenza degli operatoriRiepilogo - Eseguire confronti7Flusso di controllo: cicli
Come funziona il ciclo `for`Ciclo `for` - baseCiclo `for` - solo condizioneLa parola chiave `break`La parola chiave `continue`Cicli annidatiRiepilogo - ripetere le azioni2Variabili e tipi di dati di base
Che cos'è una variabileInferenza del tipo con `:=`Numeri interi (int)Numeri in virgola mobileValori booleaniStringheValori zeroCostantiConvenzioni di denominazioneRiepilogo: variabili e tipi5Input/output di base
Output formattatoVerbi di formattazioneVisualizzazione dei tipiAcquisire input di base dall’utenteRiepilogo - Input e output8Funzioni
Capire le funzioniDichiarare una funzioneChiamare le funzioniParametri delle funzioniRestituire un singolo valoreRestituire più valoriValori restituiti con nomeFondamenti dell'ambito delle funzioniRiepilogo - Creare codice riutilizzabile3Operatori di base
Operatori aritmeticiOperatore di divisioneL'operatore moduloOperatore di assegnazioneOperatori di assegnazione compostaIncremento e decrementoRiepilogo - Calcoli6Flusso di controllo: condizioni
L'istruzione `if`La parola chiave `else`La parola chiave `else if`Ombreggiamento delle variabili in `if`Inizializzare le variabiliL'istruzione `switch``switch` con espressioni`switch` senza espressioneLa parola chiave `fallthrough`Riepilogo: prendere decisioni9Puntatori
Che cos’è un puntatore?Dichiarare variabili puntatoreL’operatore indirizzoDereferenziare i puntatoriUsare i puntatori nelle funzioniPuntatori nilRipasso - Capire i puntatori12Tipi compositi: mappe
Introduzione alle mappeDichiarare i letterali delle mappeCreare mappe con `make`Aggiungere e aggiornare coppie chiave-valoreAccedere ai valori delle mappeVerificare l'esistenza di una chiaveEliminare elementi dalle mappeLunghezza delle mappeIterare sulle mappeRiepilogo - Archiviazione chiave-valoreEsercitati da solo: Compilatore Go online