التحكم في تدفق البرنامج
في هذا الدرس سنتعلم كيفية التحكم في سير البرنامج باستخدام الجمل الشرطية والحلقات التكرارية. هذه الأدوات تجعل برامجنا ذكية وقادرة على اتخاذ القرارات وتكرار العمليات تلقائياً.
1️⃣ مقدمة في تدفق التحكم
في الوضع الطبيعي، يتم تنفيذ البرامج بشكل تسلسلي (سطراً تلو الآخر). ولكن لجعل البرامج ذكية وفعالة، نحتاج إلى "تدفق التحكم" الذي يسمح باتخاذ القرارات (Conditional Statements) أو تكرار عمليات معينة (Loops).
2️⃣ الجمل الشرطية (Conditional Statements)
تسمح الجمل الشرطية للبرنامج باتخاذ قرارات ديناميكية بناءً على شروط محددة (صواب True أو خطأ False).
أ. الجملة الشرطية البسيطة (If-Else)
تستخدم لتنفيذ كود إذا تحقق الشرط، وكود آخر إذا لم يتحقق.
💻 مثال تطبيقي: التحقق من حالة الطقس
temperature = 25
if temperature > 30:
print("It's hot outside!")
else:
print("It's a pleasant day.")
temperature = 25
# Ternary Operator - اختصار في سطر واحد
print("It's hot outside!") if temperature > 30 else print("It's a pleasant day.")
ب. الشروط المتعددة (If-Elif-Else)
تستخدم عندما يكون لدينا أكثر من احتمالين أو عدة شروط يجب التحقق منها بالتسلسل.
💻 مثال تطبيقي: نظام التقديرات الدراسية
score = 85
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "F"
print("Grade:", grade)
score = 85
# استخدام منطق مباشر أكثر احترافية
grade = "A" if score >= 90 else "B" if score >= 80 else "C" if score >= 70 else "F"
print(f"Grade: {grade}")
3️⃣ الشروط المتداخلة (Nested Conditions)
يمكن وضع جملة شرطية داخل أخرى للتعامل مع السيناريوهات المعقدة.
💻 مثال تطبيقي: فحص الرقم
num = 10
if num > 0:
print("Positive number")
if num % 2 == 0: # شرط داخل شرط
print("Even number")
num = 10
# دمج الشروط باستخدام 'and' لتجنب التداخل
if num > 0 and num % 2 == 0:
print("Positive and Even number")
4️⃣ الحلقات التكرارية (Loops)
تستخدم الحلقات لتقليل تكرار الكود وأتمتة المهام المكررة. وهناك نوعان رئيسيان: for و while.
أ. حلقة For Loop
تستخدم للمرور على تسلسل معين (مثل قائمة، نص، أو نطاق أرقام).
💻 مثال تطبيقي: قائمة الفواكه
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
fruits = ["apple", "banana", "cherry"]
# List Comprehension - طريقة احترافية
[print(fruit) for fruit in fruits]
ب. حلقة While Loop
تستمر في العمل طالما أن الشرط صحيح (True). مفيدة عندما لا نعرف عدد التكرارات مسبقاً.
💻 مثال تطبيقي: العد التنازلي
count = 5
while count > 0:
print(count)
count -= 1 # إنقاص العداد يدوياً
# العد التنازلي باستخدام range بشكل أنظف وأضمن
for count in range(5, 0, -1):
print(count)
5️⃣ التحكم في الحلقات (Break & Continue)
تستخدم لتعديل سير الحلقة الطبيعي:
- break: تنهي الحلقة تماماً
- continue: تتخطى الدورة الحالية وتنتقل للتالية
💻 مثال تطبيقي: البحث وتخطي القيم
# Break: إيقاف الحلقة عند الرقم 3
for num in range(5):
if num == 3:
break
print(num)
# Output: 0, 1, 2
# Continue: تخطي الأعداد الزوجية
for num in range(5):
if num % 2 == 0:
continue
print(num)
# Output: 1, 3
6️⃣ تطبيق عملي: لعبة تخمين الرقم
تطبيق يجمع بين الحلقات والشروط لإنشاء لعبة تفاعلية.
import random
secret = random.randint(1, 10)
guess = 0
# حلقة تستمر حتى يتم التخمين الصحيح
while guess != secret:
guess = int(input("Guess a number (1-10): "))
if guess == secret:
print("Correct! You won.")
else:
print("Try again!")
7️⃣ أفضل الممارسات (Best Practices)
لضمان كتابة كود نظيف وفعال:
- تجنب التداخل العميق (Deep Nesting): حاول ألا تضع جمل شرطية داخل بعضها بكثرة لأنها تجعل الكود صعب القراءة
- استخدم Break و Continue بحكمة: لا تفرط في استخدامها لأنها قد تجعل تتبع منطق البرنامج صعباً
- تحسين الحلقات: اختر نوع الحلقة المناسب (for للتسلسلات المعروفة، while للشروط غير المحددة)
- استخدم المعاملات المنطقية: (and, or, not) لدمج الشروط بدلاً من التداخل