Menu
Coddy logo textTech

Continuar un bucle específico

Parte de la sección Lógica y Flujo del Journey de GO de Coddy. Lección 3 de 68.

Al igual que puedes usar etiquetas con break para salir de bucles específicos, Go también permite usar etiquetas con la instrucción continue. Un continue etiquetado omite la iteración actual del bucle especificado y salta a su siguiente iteración.

Esto es especialmente útil en bucles anidados cuando quieres omitir el resto de la iteración actual de un bucle externo desde dentro de un bucle interno, en lugar de simplemente continuar con el bucle 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")
}

En este ejemplo, cuando i == 1 && j == 0, la instrucción continue outer omite el resto de la iteración actual del bucle externo, incluido el bucle interno y el mensaje «End of outer loop iteration». Después, el programa pasa directamente a la siguiente iteración del bucle externo, donde i se convierte en 2.

challenge icon

Desafío

Fácil

En este desafío, practicarás el uso de instrucciones continue etiquetadas para controlar la ejecución de bucles anidados. Estás construyendo un sistema de procesamiento de datos que debe omitir ciertas iteraciones del bucle externo según las condiciones encontradas en los bucles internos.

Recibirás dos entradas:

  • Una cadena que representa el número de filas que se procesarán (por ejemplo, "4")
  • Una cadena que representa un número de condición de omisión (por ejemplo, "3")

Se te proporciona la siguiente matriz de datos bidimensional:

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}
}

Tu tarea es:

  1. Analizar el número de filas de la primera entrada para determinar cuántas filas se procesarán
  2. Analizar el número de condición de omisión de la segunda entrada
  3. Usar bucles anidados con un continue etiquetado para procesar los datos
  4. Para cada fila, comprobar cada valor de columna de esa fila
  5. Si encuentras el número de condición de omisión en cualquier columna de una fila, usa un continue etiquetado para omitir el resto del procesamiento de esa fila y pasar a la siguiente fila
  6. Para las filas que no contengan el número de condición de omisión, imprime "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"
  7. Para las filas que sí contengan el número de condición de omisión, imprime "Skipping row [row_number] due to condition"

Los números de fila deben informarse utilizando índices basados en 0 (la primera fila es 0). Procesa únicamente el número de filas especificado en la primera entrada y comprueba únicamente las primeras 5 columnas de cada fila.

Pruébalo tú mismo

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Leer entrada
    var rowsInput string
    var skipConditionInput string
    fmt.Scanln(&rowsInput)
    fmt.Scanln(&skipConditionInput)
    
    // Analizar entradas
    numRows, _ := strconv.Atoi(rowsInput)
    skipCondition, _ := strconv.Atoi(skipConditionInput)
    
    // Array de datos 2D proporcionado
    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: Escribe tu código debajo
    // Usa bucles anidados con continue etiquetado para procesar los datos
    // Comprueba cada fila en busca del número de la condición de omisión
    // Imprime los mensajes apropiados según si se encuentra la condición
    
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de Go online