الفصل الخامس: التحكم في سير البرنامج – الشروط والتكرار
مقدمة الفصل
حتى الآن، كانت برامجنا تنفذ الأوامر سطرًا تلو الآخر بالترتيب. لكن القوة الحقيقية للبرمجة تكمن في قدرة البرنامج على اتخاذ القرارات وتكرار المهام. في هذا الفصل، ستتعلم كيف تجعل برامجك أكثر ذكاءً وفعالية باستخدام أداتين أساسيتين:
- الشروط (Conditional Statements): لجعل البرنامج ينفذ أجزاء معينة من الكود فقط إذا تحقق شرط ما.
- الحلقات (Loops): لتكرار تنفيذ نفس الكود عدة مرات دون الحاجة لإعادة كتابته.
1. الشروط: اتخاذ القرارات في الكود
تمامًا كما تتخذ قرارات في حياتك اليومية (“إذا كان الجو ممطرًا، سآخذ مظلتي”)، يمكن لبرنامجك اتخاذ قرارات باستخدام جملة if
.
أ. بنية if
الأساسية
تُستخدم if
لتنفيذ كتلة من الكود فقط إذا كان الشرط المحدد صحيحًا (True
).
age = 20
# Check if the age is 18 or greater
if age >= 18:
print("You are eligible to vote.") # أنت مؤهل للتصويت
print("Please make sure you are registered.")
- لاحظ أن الأسطر التابعة لـ
if
تبدأ بمسافة بادئة. هذا ضروري في بايثون.
ب. إضافة else
للحالة المعاكسة
تُستخدم else
لتنفيذ كتلة من الكود في حال كان شرط if
غير صحيح (False
).
temperature = 15
# Check if the temperature is high
if temperature > 25:
print("It's a hot day!") # هذا يوم حار
else:
print("The weather is cool.") # الطقس بارد
ج. الشروط المتعددة مع elif
إذا كان لديك أكثر من شرطين، يمكنك استخدام elif
(اختصار لـ “else if”) لاختبار شروط إضافية بالترتيب.
score = 85
if score >= 90:
print("Grade: A")
elif score >= 80:
print("Grade: B")
elif score >= 70:
print("Grade: C")
else:
print("Grade: F")
د. عوامل المقارنة والعوامل المنطقية
لتكوين شروطك، ستستخدم هذه العوامل:
العامل | المعنى | العامل | المعنى |
---|---|---|---|
== |
يساوي | and |
و (يجب أن يتحقق الشرطان) |
!= |
لا يساوي | or |
أو (يكفي تحقق أحد الشرطين) |
> |
أكبر من | not |
ليس (يعكس الحالة المنطقية) |
< |
أصغر من | ||
>= |
أكبر من أو يساوي | ||
<= |
أصغر من أو يساوي |
# مثال على استخدام العوامل المنطقية
user_age = 25
is_citizen = True
# Check if the user is an adult citizen
if user_age >= 18 and is_citizen == True:
print("User is an adult citizen.") # المستخدم مواطن بالغ
2. الحلقات: تكرار المهام
الحلقات تسمح لك بتنفيذ نفس كتلة الكود عدة مرات، مما يوفر عليك الكثير من الوقت والجهد.
أ. حلقة while
تستمر حلقة while
في تكرار الكود طالما أن شرطها لا يزال صحيحًا (True
).
# طباعة الأعداد من 1 إلى 5
count = 1
while count <= 5:
print(count)
count = count + 1 # خطوة مهمة جدًا لمنع الحلقة اللانهائية
تحذير: تأكد دائمًا من وجود شرط يجعل حلقة while
تتوقف في النهاية، وإلا ستدخل في “حلقة لانهائية” (infinite loop).
ب. حلقة for
تُستخدم حلقة for
للتكرار على سلسلة من العناصر (مثل قائمة من الأرقام أو الحروف في نص). إنها الخيار الأفضل عندما تعرف عدد مرات التكرار مسبقًا.
-
التكرار باستخدام
range
: دالةrange
تولد سلسلة من الأرقام.range(5)
تعني الأرقام من 0 إلى 4.# Repeat the loop 5 times (from 0 to 4) for number in range(5): print(f"Repeating... number {number}")
-
التكرار على سلسلة نصية:
for char in "Python": print(char)
ج. التحكم في الحلقات: break
و continue
break
: تُستخدم لإيقاف الحلقة والخروج منها فورًا.continue
: تُستخدم لتخطي الدورة الحالية فقط والانتقال إلى الدورة التالية.
# مثال على break: توقف عند الرقم 7
for i in range(10):
if i == 7:
break
print(i) # سيطبع الأرقام من 0 إلى 6
# مثال على continue: تخطى الرقم 5
for i in range(10):
if i == 5:
continue
print(i) # سيطبع كل الأرقام ما عدا 5
3. مشروع تطبيقي: التحقق من كلمة المرور
لنطبق ما تعلمناه في هذا الفصل لبناء برنامج بسيط يتحقق من كلمة مرور. البرنامج سيمنح المستخدم 3 محاولات فقط لإدخال كلمة المرور الصحيحة.
# The correct password is saved in a variable
secret_password = "password123"
is_correct = False
# Give the user 3 attempts
print("You have 3 attempts to enter the password.")
for attempt_number in range(3):
# Ask the user for input
user_input = input(f"Attempt {attempt_number + 1}: Enter the password: ")
# Check if the input matches the secret password
if user_input == secret_password:
print("Access granted!") # تم الدخول بنجاح
is_correct = True
break # Exit the loop immediately if correct
else:
print("Incorrect password. Try again.") # كلمة مرور خاطئة، حاول مجددًا
# After the loop finishes, check if the user was successful
if is_correct == False:
print("Access denied. You have run out of attempts.") # تم رفض الدخول
هذا المشروع يوضح كيف يمكن دمج حلقة for
مع جملة if-else
واستخدام break
للتحكم في سير البرنامج بناءً على مدخلات المستخدم.
4. خلاصة الفصل
- جمل
if
,elif
, وelse
هي أدواتك لاتخاذ القرارات في الكود. - حلقة
while
تستمر طالما أن شرطها صحيح، بينما حلقةfor
مثالية للتكرار على سلسلة محددة من العناصر. - يمكنك التحكم بسير الحلقات بدقة باستخدام
break
وcontinue
. - بدمج الشروط مع الحلقات، يمكنك بناء برامج معقدة وذكية.
ماذا بعد؟
الآن بعد أن أصبحت قادرًا على التحكم في سير برنامجك، سننتقل في الفصل السادس إلى واحد من أهم مفاهيم البرمجة المنظمة: الدوال (Functions)، حيث سنتعلم كيف نقسم الكود إلى وحدات قابلة لإعادة الاستخدام.