Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملخص - التحكم المتقدم في الحلقات

جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 5 من 68.

challenge icon

التحدي

سهل

في هذا التحدي، ستجمع بين بيانات break المسماة (labeled) مع switch و fallthrough لإنشاء نظام مراقبة أمني. يقوم النظام بالبحث عبر مناطق أمنية متعددة عن التهديدات ويصنفها بمستويات تنبيه متتالية.

ستتلقى مدخلين:

  • سلسلة نصية تمثل مستوى التهديد المراد البحث عنه (على سبيل المثال، "high")
  • سلسلة نصية تمثل الحد الأقصى للمناطق المراد البحث فيها (على سبيل المثال، "3")

يتم تزويدك ببيانات المناطق الأمنية التالية:

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

مهمتك هي:

  1. تحليل مستوى التهديد من المدخل الأول
  2. تحليل الحد الأقصى للمناطق المراد البحث فيها من المدخل الثاني
  3. استخدام حلقات متداخلة مع break مسمى للبحث عبر المناطق
  4. عندما تجد مستوى التهديد المستهدف، اطبع "Threat found at zone [zone_number] position [position]" واخرج فوراً من كلتا الحلقتين باستخدام الـ break المسمى
  5. بعد العثور على التهديد (أو إذا لم يتم العثور على أي تهديد)، استخدم بيان switch مع fallthrough لعرض التنبيهات الأمنية بناءً على مستوى التهديد الذي كنت تبحث عنه

يجب أن يعمل بيان switch على النحو التالي:

  • بالنسبة لـ "critical": اطبع "CRITICAL: Lockdown initiated!" وانتقل (fall through) لطباعة تنبيه high أيضاً
  • بالنسبة لـ "high": اطبع "HIGH: Security breach detected!" وانتقل (fall through) لطباعة تنبيه medium أيضاً
  • بالنسبة لـ "medium": اطبع "MEDIUM: Increased monitoring active"
  • بالنسبة لـ "low": اطبع "LOW: Standard security protocols"

إذا لم يتم العثور على التهديد بعد البحث في عدد المناطق المحدد، اطبع "Threat not found in searched zones" قبل عرض التنبيهات الأمنية. استخدم الفهرسة القائمة على الصفر (0-based indexing) لأرقام المناطق والمواقع داخل المناطق.

جرّب بنفسك

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // قراءة المدخلات
    var threatLevel string
    var maxZonesStr string
    fmt.Scanln(&threatLevel)
    fmt.Scanln(&maxZonesStr)
    
    // تحويل الحد الأقصى للمناطق إلى عدد صحيح
    maxZones, _ := strconv.Atoi(maxZonesStr)
    
    // بيانات مناطق الأمن
    zones := [][]string{
        {"low", "medium", "low"},
        {"medium", "high", "low"},
        {"critical", "medium", "high"},
        {"low", "critical", "medium"},
    }
    
    // TODO: اكتب الكود الخاص بك أدناه
    // استخدم الحلقات المتداخلة مع كسر مسمى (labeled break) للبحث عن التهديد
    // اطبع موقع التهديد إذا تم العثور عليه، أو "Threat not found in searched zones" إذا لم يتم العثور عليه
    // ثم استخدم switch مع fallthrough للتنبيهات الأمنية
    
}

جميع دروس Logic & Flow