الحلقات - المهارات الرقمية - ثاني متوسط
الفصل الدراسي الأول
الوحدة الأولى: جمع المعلومات
الوحدة الثانية: مخطط المعلومات البياني
الوحدة الثالثة: البرمجة باستخدام لغة بايثون
الفصل الدراسي الثاني
الوحدة الأولى: تحليل البيانات
الوحدة الثانية: التواصل عبر الإنترنت
الوحدة الثالثة: البرمجة مع بايثون
الفصل الدراسي الثالث
الوحدة الأولى: إنتاج مقطع فيديو
الوحدة الثانية: المخططات البيانية
الوحدة الثالثة: برمجة الروبوت
196 الوحدة الثالثة: البرمجة مع بايثون ستتعرف في هذه الوحدة على الحلقات (loops) وكيفية استخدامها في بايثون، وستستخدم الحلقات المتداخلة (nested loops) من أجل طباعة الأنماط. ستتعلم كيفية تجميع مجموعة من التعليمات البرمجية وإنشاء الدوال. أخيرًا، ستتعلم كيفية التعامل مع ملف إكسل باستخدام بايثون. أهداف التعلم ستتعلم في هذه الوحدة: > استخدام الحلقات في بايثون. > إيقاف الحلقة باستخدام عبارة الإيقاف. > آلية استخدام الحلقات المتداخلة. > إنشاء أنماط باستخدام الحلقات. > ماهية الدالة في لغة البرمجة. > بناء دوال جديدة . > التعامل مع معاملات الدالة. > تمييز المتغيرات المحلية والعامة. > استخدام التعليمات البرمجية لمعالجة جداول البيانات. الأدوات > إصدار بيئة التواصل باي تشارم (PyCharm Community Edition) وزارة التعليم Ministry of Education 2024-1446
الدرس الأول: الحلقات رابط الدرس الرقمي www.ien.edu.sa ستحتاج في بعض الأحيان إلى تكرار مجموعة من الأوامر عدة مرات في النص البرمجي، وسيتطلب هذا التكرار الكثير من الوقت والجهد. لذلك، توفر جميع لغات البرمجة تقريبًا بنية تحكم تسمى حلقة (loop). ستسمح لك هذه الدالة بتنفيذ صف واحد أو مجموعة من المقاطع البرمجية عدة مرات. ويمكنك تحديد عدد التكرارات برقم معين أو أن تعتمد على شرط معين. يدعم بايثون نوعين من الحلقات : حلقة for وحلقة while. حلقة for for loop_variable in range(): statements while condition: statements الحلقات في بايثون حلقة for حلقة while تُستخدم حلقة for لتكرار مجموعة من الأوامر لعددٍ محددٍ من المرات، ويكون عدد التكرارات محدَّدًا في قيم دالة النطاق (()range). for loop_variable in range(): statements يمكنك استخدام دالة النطاق لتحديد عدد مرات تنفيذ حلقة for المسافة البادئة في الحلقات " يجب أن تُسبق البيانات المتكررة بمسافة بادئة. كما تعلمت سابقًا، فإن استخدام المسافة البادئة (Indentation) العبارات IF الشرطية، هو أمر مهم جدًا في بايثون. يتعرّف المقطع البرمجي على العبارات المضمنة في الحلقة والتي يتم تنفيذها في كل تكرار لها، من خلال المسافة البادئة، لذلك إذا لم تترك مسافة بادئة في مقطعك البرمجي، فستتلقى رسالة خطأ. وزارة التعد19 Ministry of Education 2024-1446
دالة النطاق تُستخدم دالة النطاق ( )range ) مع الحلقة لتحديد عدد التكرارات، ويسمى المتغير الذي يحسب التكرار العداد (counter). في دالة النطاق يبدأ العداد بالعد من ، يزيد بمقدار 1 وينتهي العد قبل الوصول إلى الرقم المحدد. مثال على ذلك: يطبع قيمة i # for i in range(5): print(i) 0 1 2 3 4 يمكن تحديد مقدار البداية بإضافة قيمة. على سبيل المثال، النطاق ،(2,5) ، يعني أن العداد يبدأ من 2 وينتهي عند 4 (القيمة 5 غير مدرجة). يطبع قيمة i # for i in range(2,5): print(i) 2 3 234 القيمة التلقائية للزيادة في دالة النطاق هي ،1 ، ولكن يمكن تحديد مقدار الزيادة بإضافة قيمة ثالثة على سبيل المثال، النطاق (1,5,2)، يعني أن العداد يبدأ في العد من ،1 وينتهي عند 4 ويزداد بمقدار 2. وزارة التعليم Ministry of Education 2024-1446 يطبع قيمة i # for i in range(1,5,2): print(i) يطبع قيمة i # ut the valu range(1,5,2): (i) 13 القيمة الثالثة في دالة النطاق يسمى الخطوة .(the step) يمكن أن تكون الخطوة عددًا سالبًا، ويصبح العد بشكل عكسي. for i in range(10,5,-2): print(i) 10 8 6 198
جرب المقطع البرمجي التالي واكتب القيم التي تظهر على الشاشة. for i in range(4,0,-1): print (i) for i in range(0,10,2): print (i) جرب بنفسك مثال درجات تقييم الطلبة لقد عملت سابقًا على مثال لحساب درجات تقييم الطلبة، حيث يتحقق المقطع البرمجي من اجتياز الطالب للامتحانات. ستتعلم كيف يمكنك تطبيق حلقة for لقد تحققت في المثال السابق من درجات طالب واحد فقط، لتفترض أن عليك التحقق من درجات صف کامل مكون من 15 طالبًا. لقراءة اسم كل طالب. for st in range (0,15): ) "الرجاء إدخال اسم الطالب: ")print ( "الرجاء إدخال درجة الطالب: ")print name=input() g=int(input()) if g>50: if g<=70: elif g<=90: ) اجتاز الامتحانات.",print(name حصل على ..",print(name "حصل على print(name,".B else: "حصل على print(name,".A else: ) "لم يجتز الامتحانات.",print(name لا تنس ترك مسافة. تُستخدم حلقة for عند معرفة عدد التكرارات المراد قبل بداية التكرار. ماذا يحدث عندما يكون الرقم غير معروف والتكرار يعتمد على شرط معين ؟ في مثل هذه الحالات تُقدم بايثون حلقة while الشرطية. وزارة التعوو Ministry of Education 2024-1446
200 حلقة while الشرطية تُستخدم حلقة while عندما لا يكون عدد التكرارات معروفًا سابقًا. طالما أن الحالة صحيحة، فإن الحلقة تتكرر وتفحص بعد كل تكرار للتأكد من صحتها. عندما تُصبح الحالة خطأ، يتوقف التكرار وينتقل المقطع البرمجي إلى الصف التالي بعد الحلقة. أما إذا كانت حالة الشرط خطأ في البداية، فلن يتم تنفيذ الحلقة على الإطلاق. while condition: statements يجب أن تُسبق الأوامر المتكررة بمسافة بادئة. انظر إلى مثال حلقة while الشرطية، يُدخل المستخدم قيمة للمتغير x ، وتنتهي الحلقة عندما يُدخل المستخدم 0 كقيمة للمتغير x . ) ( أدخل قيمة :x=int(input(" :x while x!= 0 : print(x) ) ( أدخل قيمة : ")x=int(input "نهاية الحلقة.")print أدخل قيمة x 5 5 أدخل قيمة x: 6 6 أدخل قيمة x: 10 10 أدخل قيمة x: 0 نهاية الحلقة. وزارة التعليم Ministry of Education 2024-1446
يُمكنك استخدام حلقة while الشرطية للتحقق من مدخلات المستخدم في متغير معين. مثال درجات تقييم الطلبة في هذا المثال، سيطلب المقطع البرمجي من المستخدم إدخال درجة الطالب، ويجب أن تكون هذه الدرجة أكبر من أو تساوي ، وأقل من أو تساوي 20 في حال أدخل المستخدم قيمة خارج هذا النطاق، فسيعرض المقطع البرمجي رسالة خطأ ويطلب من المستخدم إدخال درجة صالحة. يجب أن تكون درجات الطلبة أكبر من أو تساوي 0 # وأقل من أو تساوي 20 # ) ( أدخل درجة الطالب " grade=int(input while grade<0 or grade>20: ( درجة غير صالحة، أدخل درجة من 20-0. print ) ( أدخل" درجة صالحة : " grade=int (input grade"درجتك هي: ") print أدخل درجة الطالب: 67 درجة غير صالحة، أدخل درجة من 20-0. أدخل درجة صالحة: 18 درجتك هي: 18 جرب المقطع البرمجي التالي واكتب ما يظهر على الشاشة. i=1 while i<6: i=i+1 if i == 3: ("مرحبا")print print(i) جرب بنفسك وزارة التعام2 201 Ministry of Education 2024-1446
حلقة لا نهائية إذا لم يُصبح شرط حلقة while خطأ، فسينتهي بك الأمر بحلقة لا نهائية Infinite loop) ، وهي حلقة لا تنتهي أبدًا. عندما تستخدم حلقة while الشرطية، يجب أن تتضمن أمرًا، أو مجموعة من الأوامر التي ستغير الحالة من صواب (True) إلى خطأ وزارة التعليم Ministry of Education 2024-1446 جرب بنفسك i=1 while i<6: print(i) .(False) جرب المقطع البرمجي التالي. ماذا تلاحظ ؟ في المثال السابق قيمة المتغير أ لا تتغير، لذلك سيتم تكرار المقطع البرمجي إلى الأبد. لإيقاف تكرار الحلقة اضغط على Ctrl + C في نافذة Python shell. 202
عبارة الإيقاف في بعض الأحيان تريد إنهاء حلقة قبل أن تصبح حالتها خطأ في مثل هذه الحالات، ستستخدم عبارة الإيقاف (Break statement). تُنهي عبارة الإيقاف الحلقة التي تحتوي عليها ، وينتقل المقطع البرمجي إلى الصف المتواجد بعد الحلقة. يمكن استخدام عبارة الإيقاف في حلقة for أيضًا. عادة ما يكون هناك العديد من الطرق المختلفة لأداء نفس المهمة. تُفضل إحدى الطرق على الأخرى بناءً على عدة عوامل أهمها سرعة تشغيل المقطع البرمجي ومساحة التخزين المطلوبة. المبرمج يُحدد أفضل طريقة. while True: ( " اكتب كلمة: ")word=input : "إيقاف"==if word ) "لقد استخدمت عبارة الإيقاف. ")print break ( " اكتب كلمة مختلفة ")print اكتب كلمة : سيارة إن السلاسل النصية في بايثون حساسة لحالة الأحرف، لذلك عند التحقق من قيمة متغير عليك أيضًا التحقق مما إذا كانت هناك مسافات زائدة؛ لأن المسافة تُعتبر حرفًا في بايثون أيضًا. اكتب كلمة مختلفة اكتب كلمة : طائرة اكتب كلمة مختلفة اكتب كلمة : دراجة اكتب كلمة مختلفة اكتب كلمة : دراجة هوائية اكتب كلمة مختلفة اكتب كلمة : إيقاف لقد استخدمت عبارة الإيقاف. وزارة التعد 20 Ministry of Education 2024-1446
وزارة التعليم Ministry of Education 2024-1446 لنطبق معًا تدريب 1 • كم مرة سينفذ أمر الطباعة (()print)؟ اختر الإجابة الصحيحة اختر الإجابة الصحيحة لن ينفذ؛ لأن تنسيق الأوامر غير صحيح. ينفذ مرتان. ينفذ 3 مرات. ينفذ 5 مرات. عدد المرات غير معروف. ينفذ 4 مرات. ينفذ 5 مرات. عدد المرات غير معروف. ينفذ 4 مرات. for i in range (0,5,3): print(i) for i in range (10,1,-2): print(i) i=5 while i>1: print(i) i=i-1 204
تدريب 2 • اكتب مقطعًا برمجيًا يعرض الأرقام من 10 إلى -1 باستخدام حلقة for. تدريب 3 • اكتب مقطعًا برمجيًا يعرض الأرقام ،100 ،95، 90،...، 0 على الشاشة. تدريب 4 • اكتب مقطعًا برمجيًا باستخدام حلقة while لعرض أول 13 عدد من مضاعفات العدد 7. تدريب 5 • اكتب مقطعًا برمجيًا لحساب مجموع جميع الأرقام من 1 إلى رقم معطى. > اطلب من المستخدم إدخال رقم > احسب مجموع جميع الأرقام من 1 إلى الرقم المعطى. > على سبيل المثال، إذا أدخل المستخدم ،8 فيجب أن يكون الناتج ++++++++ + 4 + 5 + 6 + 7 + 8). وزارة التع205 Ministry of Education 2024-1446