Skip to content

الفصل 3: التحكم في التدفق

📖 المستوى: مبتدئ  |  ⏱ الوقت المقدّر: 50 دقيقة  |  📝 تمارين: 8

ما ستتعلم في هذا الفصل

  • الجمل الشرطية: إذا، وإلا
  • حلقات بينما و لكل
  • أوامر توقف و استمر
  • مطابقة الأنماط: طابق / عندما
  • الحلقات المتداخلة

3.1 الجملة الشرطية إذا

sad
متغير درجة = 85

إذا (درجة >= 90)
    اطبع_سطر("ممتاز! 🌟")
وإلا
    إذا (درجة >= 80)
        اطبع_سطر("جيد جداً 👍")
    وإلا
        إذا (درجة >= 70)
            اطبع_سطر("جيد")
        وإلا
            إذا (درجة >= 60)
                اطبع_سطر("مقبول")
            وإلا
                اطبع_سطر("راسب ❌")
            نهاية
        نهاية
    نهاية
نهاية

شروط مركبة

sad
متغير عمر = 22
متغير لديه_تأشيرة = صحيح
متغير لديه_جواز = صحيح

إذا (عمر >= 18 و لديه_تأشيرة و لديه_جواز)
    اطبع_سطر("يمكنه السفر ✈️")
وإلا
    اطبع_سطر("لا يمكنه السفر")
نهاية

3.2 حلقة بينما

تُكرر تنفيذ الكود ما دام الشرط متحققاً:

sad
# العد من 1 إلى 5
متغير عداد = 1
بينما (عداد <= 5)
    اطبع_سطر("العدد: " + عداد)
    عداد = عداد + 1
نهاية

مثال: البحث عن رقم

sad
متغير أرقام = [4، 8، 15، 16، 23، 42]
متغير المطلوب = 16
متغير فهرس = 0
متغير وُجد = خطأ

بينما (فهرس < طول(أرقام))
    إذا (أرقام[فهرس] == المطلوب)
        اطبع_سطر("وُجد في الفهرس: " + فهرس)
        وُجد = صحيح
        توقف
    نهاية
    فهرس = فهرس + 1
نهاية

إذا (ليس وُجد)
    اطبع_سطر("الرقم غير موجود")
نهاية

3.3 حلقة لكل

تمر على كل عنصر في مجموعة:

sad
# المرور على مصفوفة
متغير فواكه = ["تفاح"، "برتقال"، "موز"، "عنب"]

لكل فاكهة في فواكه
    اطبع_سطر("🍎 " + فاكهة)
نهاية

المرور على نطاق أرقام

sad
# طباعة الأرقام من 1 إلى 10
لكل رقم في 1..10
    اطبع_سطر(رقم)
نهاية

⚠️ ملاحظة مهمة

النطاق 1..10 شامل — يعطي الأرقام 1, 2, 3, ..., 10 (بما في ذلك 10).

المرور على خريطة

sad
متغير عواصم = {
    "السعودية": "الرياض"،
    "مصر": "القاهرة"،
    "المغرب": "الرباط"
}

لكل مفتاح في عواصم
    اطبع_سطر(مفتاح + ": " + عواصم[مفتاح])
نهاية

3.4 أوامر التحكم في الحلقات

توقف — الخروج من الحلقة

sad
# البحث عن أول رقم سالب
متغير أرقام = [3، 7، -2، 5، -8، 1]

لكل رقم في أرقام
    إذا (رقم < 0)
        اطبع_سطر("أول رقم سالب: " + رقم)
        توقف
    نهاية
نهاية

استمر — تخطي التكرار الحالي

sad
# طباعة الأرقام الزوجية فقط
لكل رقم في 1..20
    إذا (رقم % 2 != 0)
        استمر
    نهاية
    اطبع_سطر(رقم)
نهاية

3.5 مطابقة الأنماط طابق

بديل أنيق لسلاسل إذا/وإلا الطويلة:

sad
متغير يوم = "الأحد"

طابق (يوم)
    عندما "السبت":
        اطبع_سطر("🏖️ عطلة نهاية الأسبوع")
    عندما "الأحد":
        اطبع_سطر("🌅 بداية الأسبوع")
    عندما "الجمعة":
        اطبع_سطر("🕌 يوم الجمعة")
    افتراضي:
        اطبع_سطر("📅 يوم عمل عادي")
نهاية

مطابقة نطاقات

sad
متغير درجة = 85

طابق (درجة)
    عندما 90..100:
        اطبع_سطر("ممتاز")
    عندما 80..89:
        اطبع_سطر("جيد جداً")
    عندما 70..79:
        اطبع_سطر("جيد")
    عندما 60..69:
        اطبع_سطر("مقبول")
    افتراضي:
        اطبع_سطر("راسب")
نهاية

مطابقة بدائل

sad
متغير لون = "أحمر"

طابق (لون)
    عندما "أحمر" || "برتقالي":
        اطبع_سطر("🔴 لون دافئ")
    عندما "أزرق" || "أخضر":
        اطبع_سطر("🔵 لون بارد")
    افتراضي:
        اطبع_سطر("لون آخر")
نهاية

3.6 الحلقات المتداخلة

sad
# جدول الضرب
لكل ي في 1..9
    متغير سطر = ""
    لكل ج في 1..9
        متغير حاصل = ي * ج
        سطر = سطر + حاصل + "\t"
    نهاية
    اطبع_سطر(سطر)
نهاية

3.7 أنماط عملية شائعة

نمط التحقق من المدخلات

sad
متغير كلمة_السر = "abc123"

إذا (طول(كلمة_السر) < 8)
    اطبع_سطر("❌ كلمة السر قصيرة جداً")
وإلا
    اطبع_سطر("✅ كلمة السر مقبولة")
نهاية

نمط العدّ والإحصاء

sad
متغير درجات = [95، 82، 67، 91، 58، 74، 88]
متغير ناجحون = 0
متغير راسبون = 0

لكل درجة في درجات
    إذا (درجة >= 60)
        ناجحون = ناجحون + 1
    وإلا
        راسبون = راسبون + 1
    نهاية
نهاية

اطبع_سطر("الناجحون: " + ناجحون)
اطبع_سطر("الراسبون: " + راسبون)

تمارين

تمرين 1: FizzBuzz

اطبع الأرقام من 1 إلى 30. إذا كان الرقم يقبل القسمة على 3 اطبع "Fizz"، وإذا يقبل على 5 اطبع "Buzz"، وإذا يقبل على كليهما اطبع "FizzBuzz".

💡 الحل
sad
لكل ن في 1..30
    إذا (ن % 15 == 0)
        اطبع_سطر("FizzBuzz")
    وإلا
        إذا (ن % 3 == 0)
            اطبع_سطر("Fizz")
        وإلا
            إذا (ن % 5 == 0)
                اطبع_سطر("Buzz")
            وإلا
                اطبع_سطر(ن)
            نهاية
        نهاية
    نهاية
نهاية

تمرين 2: الأعداد الأولية

اطبع جميع الأعداد الأولية بين 2 و 50.

💡 الحل
sad
لكل رقم في 2..50
    متغير أولي = صحيح
    متغير قاسم = 2
    بينما (قاسم * قاسم <= رقم)
        إذا (رقم % قاسم == 0)
            أولي = خطأ
            توقف
        نهاية
        قاسم = قاسم + 1
    نهاية
    إذا (أولي)
        اطبع(رقم + " ")
    نهاية
نهاية

ملخص الفصل

التركيبالوصفينتهي بـ
إذا (شرط) ... وإلا ... نهايةشرطينهاية
بينما (شرط) ... نهايةحلقة شرطيةنهاية
لكل عنصر في مجموعة ... نهايةحلقة تكراريةنهاية
طابق (قيمة) عندما ...: ... نهايةمطابقة أنماطنهاية
توقفخروج من الحلقة
استمرتخطي التكرار

مُرخَّص بموجب رخصة MIT