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

الاستمرار في حلقة محددة

جزء من قسم المنطق وتدفق التنفيذ في رحلة GO على Coddy. الدرس 3 من 68.

تمامًا كما يمكنك استخدام التسميات مع break للخروج من loop محددة، تتيح لك Go أيضًا استخدام التسميات مع عبارة continue. تتخطى عبارة continue ذات التسمية iteration الحالية من loop المحددة وتنتقل إلى iteration التالية فيها.

يكون هذا مفيدًا بشكل خاص في nested loops عندما تريد تخطي بقية iteration الحالية من loop outer من داخل loop inner، بدلًا من مجرد متابعة loop inner.

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

في هذا المثال، عندما تكون i == 1 && j == 0، تتخطى عبارة continue outer بقية iteration الحالية من outer loop، بما في ذلك inner loop ورسالة "End of outer loop iteration". ثم ينتقل البرنامج مباشرةً إلى iteration التالية من outer loop حيث تصبح قيمة i هي 2.

challenge icon

التحدي

سهل

في هذا التحدي، ستتدرّب على استخدام عبارات continue ذات labeled للتحكم في تنفيذ nested loop. أنت تبني نظامًا لمعالجة data يحتاج إلى تخطي بعض تكرارات outer loop استنادًا إلى الشروط الموجودة في inner loop.

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

  • سلسلة نصية تمثل عدد الصفوف المراد معالجتها (مثلًا: "4")
  • سلسلة نصية تمثل skip condition number (مثلًا: "3")

يُ提供 لك 2D data array التالي:

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

مهمتك هي:

  1. تحليل عدد الصفوف من input الأول لتحديد عدد الصفوف التي ستتم معالجتها
  2. تحليل skip condition number من input الثاني
  3. استخدام nested loops مع labeled continue لمعالجة data
  4. التحقق من قيمة كل عمود في كل صف
  5. إذا عثرت على skip condition number في أي عمود من صف، فاستخدم labeled continue لتخطي بقية معالجة ذلك الصف والانتقال إلى الصف التالي
  6. بالنسبة إلى الصفوف التي لا تحتوي على skip condition number، اطبع "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"
  7. بالنسبة إلى الصفوف التي تحتوي على skip condition number، اطبع "Skipping row [row_number] due to condition"

يجب الإبلاغ عن أرقام الصفوف باستخدام الفهرسة المعتمدة على الصفر (الصف الأول هو 0). عالج فقط عدد الصفوف المحدد في input الأول، وتحقق فقط من الأعمدة الخمسة الأولى في كل صف.

جرّب بنفسك

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // اقرأ المدخلات
    var rowsInput string
    var skipConditionInput string
    fmt.Scanln(&rowsInput)
    fmt.Scanln(&skipConditionInput)
    
    // حلل المدخلات
    numRows, _ := strconv.Atoi(rowsInput)
    skipCondition, _ := strconv.Atoi(skipConditionInput)
    
    // مصفوفة البيانات ثنائية الأبعاد المقدمة
    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: اكتب الكود الخاص بك أدناه
    // استخدم حلقات متداخلة مع labeled continue لمعالجة البيانات
    // تحقق من كل صف بحثًا عن رقم شرط التخطي
    // اطبع الرسائل المناسبة بناءً على ما إذا تم العثور على الشرط
    
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم Go عبر الإنترنت