الفصل 3: التحكم في التدفق
ما ستتعلم في هذا الفصل
- الجمل الشرطية:
إذا،وإلا - حلقات
بينماولكل - أوامر
توقفواستمر - مطابقة الأنماط:
طابق/عندما - الحلقات المتداخلة
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
نهاية
إذا (أولي)
اطبع(رقم + " ")
نهاية
نهايةملخص الفصل
| التركيب | الوصف | ينتهي بـ |
|---|---|---|
إذا (شرط) ... وإلا ... نهاية | شرطي | نهاية |
بينما (شرط) ... نهاية | حلقة شرطية | نهاية |
لكل عنصر في مجموعة ... نهاية | حلقة تكرارية | نهاية |
طابق (قيمة) عندما ...: ... نهاية | مطابقة أنماط | نهاية |
توقف | خروج من الحلقة | — |
استمر | تخطي التكرار | — |