Menu
Coddy logo textTech

Continuare un ciclo specifico

Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 3 di 68.

Proprio come puoi usare le etichette con break per uscire da cicli specifici, Go ti consente anche di usare le etichette con l’istruzione continue. Un continue con etichetta salta l’iterazione corrente del ciclo specificato e passa a quella successiva.

Questo è particolarmente utile nei cicli annidati quando vuoi saltare il resto dell'iterazione corrente di un ciclo esterno dall'interno di un ciclo interno, invece di continuare semplicemente il ciclo interno.

outer:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i == 1 && j == 0 {
            continue outer
        }
        fmt.Printf("i=%d, j=%d\n", i, j)
    }
    fmt.Println("End of outer loop iteration")
}

In questo esempio, quando i == 1 && j == 0, l'istruzione continue outer salta il resto dell'iterazione corrente del ciclo esterno, compreso il ciclo interno e il messaggio "End of outer loop iteration". Il programma passa quindi direttamente all'iterazione successiva del ciclo esterno, in cui i diventa 2.

challenge icon

Sfida

Facile

In questa sfida, farai pratica nell’uso di istruzioni continue con etichetta per controllare l’esecuzione di cicli annidati. Stai creando un sistema di elaborazione dei dati che deve saltare alcune iterazioni del ciclo esterno in base alle condizioni trovate nei cicli interni.

Riceverai due input:

  • Una stringa che rappresenta il numero di righe da elaborare (ad es., "4")
  • Una stringa che rappresenta un numero come condizione di salto (ad es., "3")

Ti viene fornito il seguente array di dati 2D:

data := [][]int{
    {1, 2, 3, 4, 5},
    {6, 7, 8, 9, 10},
    {11, 12, 13, 14, 15},
    {16, 17, 18, 19, 20},
    {21, 22, 23, 24, 25}
}

Il tuo compito è:

  1. Analizzare il numero di righe dal primo input per determinare quante righe elaborare
  2. Analizzare il numero come condizione di salto dal secondo input
  3. Usare cicli annidati con un'istruzione continue con etichetta per elaborare i dati
  4. Per ogni riga, controllare il valore di ogni colonna della riga
  5. Se trovi il numero come condizione di salto in una qualsiasi colonna di una riga, usa continue con etichetta per saltare il resto dell'elaborazione di quella riga e passare alla riga successiva
  6. Per le righe che non contengono il numero come condizione di salto, stampa "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"
  7. Per le righe che contengono il numero come condizione di salto, stampa "Skipping row [row_number] due to condition"

I numeri delle righe devono essere indicati usando un indice a partire da 0 (la prima riga è 0). Elabora solo il numero di righe specificato nel primo input e controlla solo le prime 5 colonne di ogni riga.

Provalo tu

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Leggi l'input
    var rowsInput string
    var skipConditionInput string
    fmt.Scanln(&rowsInput)
    fmt.Scanln(&skipConditionInput)
    
    // Analizza gli input
    numRows, _ := strconv.Atoi(rowsInput)
    skipCondition, _ := strconv.Atoi(skipConditionInput)
    
    // Array di dati 2D fornito
    data := [][]int{
        {1, 2, 3, 4, 5},
        {6, 7, 8, 9, 10},
        {11, 12, 13, 14, 15},
        {16, 17, 18, 19, 20},
        {21, 22, 23, 24, 25},
    }
    
    // TODO: Scrivi il tuo codice qui sotto
    // Usa cicli annidati con continue etichettato per elaborare i dati
    // Controlla ogni riga per verificare se contiene il numero della condizione di salto
    // Stampa i messaggi appropriati in base alla presenza o meno della condizione
    
}
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 Logica e flusso

Esercitati da solo: Compilatore Go online