القائمة الرئيسية

الصفحات

بايثون الدرس الخامس حلقات التكرار loops - كورس برمجة بايثون بالعربي

بسم الله الرحمن الرحيم




بايثون - حلقات التكرار

Python - Loops



بشكل عام، يتم تنفيذ التعليمات بالتتابع: يتم تنفيذ السطر الاول ثم السطر الثانى وهلم جرا
ولكن احيانا تحتاج الى تنفيذ كتله من الاكواد مراراً وتكراراً حتى الوصول لهدف معين 

حلقة التكرار (loops) تسمح لنا بتنفيذ مجموعه من الاكواد اكثر من مره والى ما لا نهايه.



مخطط ( التكرار - loops ):





الترتيبانواع دالة التكرار والوصف
1while loop 
تكرار سطر برمجى او مجموعة اسطر اذا كان الشرط صحيح. فإنه يختبر الشرط قبل تنفيذ حلقة التكرار while في بايثون.
2for loop 
تنفيذ سلسله من التعليمات بشكل متكرر مع استخدام متغير حلقة التكرار
3nested loops 
حلقة تكرار فرعية يمكنك استخدام حلقة تكرار او اكثر داخل حلقة تكرار اخرى بانواعها
 ( while, for or do..while loop.)

حلقة التكرار while في بايثون :


حلقة التكرار ( بينما - while ) في لغة البرمجة بايثون تنفذ مرارا وتكرارا محتواها البرمجى طالما شرط معين صحيح

بناء جملة حلقة التكرار while في بايثون :

while expression:
   statement(s).

هنا، قد يكون (statement(s سطر واحد او كتله من الاسطر البرمجيه.
والشرط expression اى قيمه صحيحه
عندما يصبح الشرط خطا تخرج من حلقة التكرار وتذهب للسطر التالى مباشرتاً.

في بيثون، تعتبر جميع التعليمات والاكواد التي تم تحديدها بنفس عدد المسافات البادئه بعد بناء البرمجة جزءا من كتلة واحدة من التعليمات البرمجية. يستخدم بيثون المسافة البادئة كوسيلة لتجميع البيانات.

بمعني اخر الكتلة ربما تكون دالة مثل دالة الشرط if - او حلقة تكرار الخ الخ, فعند كتابة دالة الشرط يجب تمييز كل سطر الى السطور الرئيسية ويتم تمييز الكتل في بايثون عبر اضافة اربع مسافات فارغة قبل السطر ليكون تابع للسطر الرئيسي التابع له ففي لغات البرمجة الاخري مثل جافا سيكربت تتميز الكتل بالاقواس اما في بايثون فيتم تمييز الكتل بالمسافات فعلي سبيل المثال اذا شرحناها بلغتنا البشرية سوف نقول.

في المثال التالي سوف نرمز لكل دالة بمعناها بالعربي حتي نبسط فكرة البرمجة اذا كنت تعرف معني كتل الاكواد تجاهل التالي:

- الرقم وهو متغير من النوع ارقام int وسوف نستخدمة لعد عدد التكرار فى كل مرة للتوقف عند رقم 5
- بينما وهي معني دالة حلقة التكرار while بالعربي
- اطبع وهي معني دالة الطباعة print بالعربي
- اضافة وهي بديل للسطر num +=1
- اذا وهي معني دالة الشرط if بالعربي
- غير وهي معني دالة else بالعربي
>>>> الاسهم هي عدد المسافات الفارغة حتي تكون ظاهرة لك الان

  • الرقم = 0
  • بينما الرقم اقل من 5:
  • >>>>اطبع الرقم
  • >>>>اضافة 1 الى الرقم 

لاحظ هنا سطر الطباعة والاضافة يبدا بـ اربع مسافات حتي ينسب الى كتلة بينما , ونفس الشىء مع الكتل الاخري والفرعية منها
مثل دالة الشرط اذا.


  • الرقم = 0
  • الاسم = احمد
  • بينما الرقم اقل من 5:
  • >>>>اطبع الرقم
  • >>>>اذا كان الاسم يساوي احمد:
  • >>>>>>>>اضافة 1 الى الرقم
  • >>>>غير:
  • >>>>>>>>اضافة 2 الى الرقم

لاحظ هنا كتلة الشرط اذا تبدا باربع مسافات لانها تتبع حلقة التكرار بينما وسطر اضافة يبدا بثمانية مسافات لانه يتبع دالة الشرط اذا.

الموضوع بسيط فقط ابدا بالممارسة وسوف تتقن ذالك.


مخطط التدفق

اذا كان الشرط صحيح تستمر حلقة التكرار اما اذا كان الشرط خطا يتم الخروج من حلقة التكرار
ويتم التوجه الى اول سطر برمجى بعد حلقة التكرار.

مثال على حلقة التكرار ( بينما - while ) في بايثون :



مراحل تنفيذ الكود السابق:


  • هنا قمنا بتعريف متغير الشرط بقيمة مبدئية صفر
  • ثم قمنا بانشاء حلقة التكرار بشرط ان يكون متغير الشرط اقل من 9
  • وداخل الحلقه اضفنا سطر ذيادة متغير الشرط 1 مع كل تكرار
  • وعند الوصول الى 9 يتم الخروج من الحلقه

تصبح الحلقه لا نهائيه اذا لم يتحول الشرط الى خطا
سوف تعمل باستمرار ولن يتم الخروج منها الا باغلاق الملف
قد تكون حلقة التكرار اللا نهائية مفيدة في برمجة العميل - الخادم حيث يحتاج الخادم إلى التشغيل بشكل مستمر بحيث يمكن لبرامج العميل التواصل معه عند الحاجة.

مثال:
تم عرض هذا المثال فى وضع عدم التشغيل اضغط زر التشغيل



قم بتشغيل المثال الاول ولاحظ انه يعمل حتى تحول الشرط الى خطا ثم يتوقف
اما فى المثال الثانى سوف تلاحظ ان زر التشغيل تحول الى زر الايقاف لان الملف قيد التشغيل وفى بيئة التشغيل الطبيعيه سوف يحتاج لـــ ctrl + c  للايقاف
والسبب فى هذا اننا لم نضع محرك للشرط
قم بتعديل الكود السابق اضف بعد السطر 11 مباشرتا وبنفس عدد المسافات البادئه
السطر التالى
var += 1
 ثم قم باعادة التشغيل وادخل اى رقم سوف تلاحظ ان حلقة التكرار لن تتكرر
وسوف يتم تشغيل السطر المعطل وهذا لاننا غيرنا قيمة الشرط الصحيحه الى قيمه مختلفه


استخدام تعليمة ( اخر - else ) مع ( حلقات التكرار - loops )

تدعم بيثون استخدام تعليمة else مع loops .
  • اذا تم استخدام else مع for يتم تنفيذ else عند الانتهاء من القائمه.
  • اذا تم استخدام else مع while يتم تنفيذ else اذا تحول الشرط الى خطا.
مثال:


 حلقة تكرار على سطر واحد في بايثون

 كما هو الحال مع تعليمة if ايضا while يمكن كتابتها على سطر واحد اذا كانت لا تحتاج الا لسطر واحد

مثال:

#!/usr/bin/python

flag = 1
 
while (flag): print 'Given flag is really true!'
 
print "Good bye!"

تحذير المثال السابق لن يتوقف اذا تم تشغيله  الا بــــ ctrl + c

تعليمة ( الى - for ):

لديها القدر على التكرار على اى تسلسل مثل ( نص - string ) او ( قائمه - list )

بناء جملة for في بايثون:

for iterating_var in sequence:
   statements(s)
مثلا اذا كان التسلسل نص يتم تعيين الحرف الاول فى النص الى متغير التكرار iterating_var 
ويتم تنفيذ كتلة البيانات الخاصه بــ for ثم يكرر العمليه مراراً  وتكراراً حتى الوصول لاخر حرف

مخطط التدفق


مثال:


فى المثال الاول قمنا بالتكرار على كلمة " بالعربى " ووضعنا داخل حلقة التكرار امر طباعة المتغير letter الذى يحمل مع كل تكرار الحرف التالى من النص

فى المثال الثانى قمنا بالتكرار على قائمة تحتوى على 3 عناصر من الفاكهه fruits ووضعنا داخل حلقة التكرار امر طباعة متغير الحلقه fruit كما سميناه


التكرار حسب مؤشر التسلسل (الفهرس index )

وهناك طريقة بديلة للتكرار من خلال رقم العنصر فى فهرس التسلسل. وفيما يلي مثال بسيط -



هنا، أخذنا مساعدة الداله المدمجه ( الطول - ()len ) ،
والتى توفر العدد الإجمالي للعناصر في قائمه وكذلك الداله المدمجه ( المدى ()range ) لتعطينا تسلسل فعلى.

عند تنفيذ دالة الطول على القائمه fruits ترجع لنا بقيمه 3 وهى عدد عناصر القائمه

ودالة المدى تقوم بالتكرار فى المدى المكتوب بين ()

اذاً دالة المدى اثناء عمل البرنامج سوف تكون هكذا
range(3)

دالة المدى تحتوى على ثلاث براميترات
range(start, stop, step)
start - بدء: بدء التسلسل من هذا الرقم.
stop - توقف: توليد أرقام تصل إلى هذا الرقم ، ولكن ليس بما في ذلك هذا الرقم.
step - الخطوة: الفرق بين كل رقم في التسلسل.

مثال :



قم بالتعديل على براميترات range ولاحظ الفرق يمكن الاستغناء عن البراميتر الثانى والثالث

استخدام else مع for في بايثون


تدعم بيثون استخدام تعليمة else مع loops .


  • اذا تم استخدام else مع for يتم تنفيذ else عند الانتهاء من القائمه.
  • اذا تم استخدام else مع while يتم تنفيذ else اذا تحول الشرط الى خطا.
مثال:



استخدام حلقة تكرار داخل حلقة تكرار اخرى 


لغة بايثون تسمح باستخدام حلقة تكرار داخل حلقه اخرى والامثله التاليه توضح ذالك

بناء جملة التكرار for داخل for في بايثون

for iterating_var in sequence:
   for iterating_var in sequence:
      statements(s)
   statements(s)

بناء جملة التكرار while داخل while في بايثون

while expression:
   while expression:
      statement(s)
   statement(s)

ملاحظه نهائيه يمكن وضع اى نوع من انواع حلقة التكرار داخل نوع اخر مثل اضافه for داخل while والعكس صحيح

مثال:
يستخدم البرنامج التالي متداخلة حلقة تكرار للعثور على الأعداد الأولية من 2 إلى 100 -





تعليمات التحكم فى حلقة التكرار


تستخدم للتحكم فى حلقة التكرار من كسر الحلقه - استمرار الحلقه - تمرير
وسوف نتعرف عليهم من خلال الامثله التاليه.


الترتيبتعليمة التحكم والوصف
1break كسر )
ينهى حلقة التكرار وينتقل مباشرتاً الى الكود التالى
2continue استمر )
بعد التحقق من الشرط تقوم باستكمال حلقة التكرار
3pass تمرير )
يتم استخدامه عندما يكون هناك حاجة إلى تعليمات برمجيه ولكنك لا تريد أي أمر أو كود للتنفيذ


دعونا نتعرف عليهم واحده تلو الاخرى

تعليمة ( كسر break ):


تعليمة break تعمل على ايقاف حلقة التكرار والخروج منها الى السطر التالى خارج الحلقه

يمكن استخدامها مع while و for

اذا استخدمتها مع حلقه داخل حلقه سوف تنهى الحلقه الاعمق وتبدا من السطر التالى خارج كتلة الحلقه
كل هذا سوف تتعرف عليه مع التجربه والمثال

بناء جملة التوقف break في بايثون:

break 


مخطط التدفق


مثال:


لاحظ فى حلقة التكرار الاولى توقفت الحلقه عند العثور على حرف ع ولم يتم طباعته
وفى حلقة التكرار الثانيه توقفت عند العثور على رقم 5 ولم يتم طباعته


تعليمة continue استمر ):


تعليمة continue تعيد التحكم لبداية الحلقه وترفض جميع البيانات المتبقيه فى التكرار الحالى
وتحرك السيطره الى الجزء العلوى من الحلقه

يمكن استخدام continue مع while و for

بناء جملة الاستمرار continue في بايثون

continue

مخطط التدفق

مثال:


لاحظ فى حلقة التكرار الاول تم طباعة جميع الحروف ما عدا الحرف ع ولكن هنا لم تتوقف الحلقه عن العمل حتى النهايه
نفس الامر مع الحلقه الثانيه طباعة جميع الارقام ما عدا رقم 5

تعليمة pass تمرير ):


يتم استخدامه عندما يكون هناك حاجة إلى تعليمات برمجيه ولكنك لا تريد أي أمر أو كود للتنفيذ


بناء الجمله
pass

مثال:


لاحظ هنا تم طباعة جميع الحروف بسبب تعليمة pass التى تخرج من دالة الشرط دون اى تاثير

الى هنا انتهى درس loops
وتعلمنا كيفية انشاء حلقات التكرار وكيفية ادارتها

لا تنسي التعليق ومشاركة الموضوع حتي تعم الفائدة وشكراً لزياراتك


تعليقات

التنقل السريع