Menu
Coddy logo textTech

Recapitulação - Controle de Loop Avançado

Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 5 de 68.

challenge icon

Desafio

Fácil

Neste desafio, você combinará instruções break rotuladas com switch e fallthrough para criar um sistema de monitoramento de segurança. O sistema pesquisa várias zonas de segurança em busca de ameaças e as categoriza com níveis de alerta em cascata.

Você receberá duas entradas:

  • Uma string representando o nível de ameaça a ser pesquisado (ex: "high")
  • Uma string representando o número máximo de zonas a serem pesquisadas (ex: "3")

Você recebeu os seguintes dados de zonas de segurança:

zones := [][]string{
    {"low", "medium", "low"},
    {"medium", "high", "low"},
    {"critical", "medium", "high"},
    {"low", "critical", "medium"}
}

Sua tarefa é:

  1. Analisar o nível de ameaça da primeira entrada
  2. Analisar o número máximo de zonas a serem pesquisadas da segunda entrada
  3. Usar loops aninhados com um break rotulado para pesquisar pelas zonas
  4. Quando encontrar o nível de ameaça alvo, imprimir "Threat found at zone [zone_number] position [position]" e sair imediatamente de ambos os loops usando o break rotulado
  5. Após encontrar a ameaça (ou se nenhuma ameaça for encontrada), usar uma instrução switch com fallthrough para exibir alertas de segurança baseados no nível de ameaça que você estava pesquisando

A instrução switch deve funcionar da seguinte forma:

  • Para "critical": Imprimir "CRITICAL: Lockdown initiated!" e usar fallthrough para imprimir o alerta high também
  • Para "high": Imprimir "HIGH: Security breach detected!" e usar fallthrough para imprimir o alerta medium também
  • Para "medium": Imprimir "MEDIUM: Increased monitoring active"
  • Para "low": Imprimir "LOW: Standard security protocols"

Se a ameaça não for encontrada após pesquisar o número especificado de zonas, imprima "Threat not found in searched zones" antes de exibir os alertas de segurança. Use indexação baseada em 0 para os números das zonas e posições dentro das zonas.

Experimente você mesmo

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Ler entrada
    var threatLevel string
    var maxZonesStr string
    fmt.Scanln(&threatLevel)
    fmt.Scanln(&maxZonesStr)
    
    // Converter o máximo de zonas para inteiro
    maxZones, _ := strconv.Atoi(maxZonesStr)
    
    // Dados das zonas de segurança
    zones := [][]string{
        {"low", "medium", "low"},
        {"medium", "high", "low"},
        {"critical", "medium", "high"},
        {"low", "critical", "medium"},
    }
    
    // TODO: Escreva seu código abaixo
    // Use loops aninhados com break rotulado para procurar pela ameaça
    // Imprima a localização da ameaça se encontrada, ou "Threat not found in searched zones" se não for encontrada
    // Em seguida, use switch com fallthrough para alertas de segurança
    
}

Todas as lições de Lógica & Fluxo