الحلقات المتداخلة - المهارات الرقمية - ثاني متوسط
الفصل الدراسي الأول
الوحدة الأولى: جمع المعلومات
الوحدة الثانية: مخطط المعلومات البياني
الوحدة الثالثة: البرمجة باستخدام لغة بايثون
الفصل الدراسي الثاني
الوحدة الأولى: تحليل البيانات
الوحدة الثانية: التواصل عبر الإنترنت
الوحدة الثالثة: البرمجة مع بايثون
الفصل الدراسي الثالث
الوحدة الأولى: إنتاج مقطع فيديو
الوحدة الثانية: المخططات البيانية
الوحدة الثالثة: برمجة الروبوت
رابط الدرس الرقمي www.ien.edu.sa ☐ الدرس الثاني: الحلقات المتداخلة لقد تعرّفت على الحلقات في الدرس السابق وتعلمت كيفية استخدام أنواعها المختلفة. في هذا الدرس ستتعلم كيفية وضع حلقة داخل حلقة أخرى، ويسمى هذا الإجراء بالتداخل (Nesting) كما تسمى هذه الحلقات بالحلقات المتداخلة Nested loops)، حيث يمكنك إدخال أي نوع من الحلقات في أي نوع آخر، وعلى سبيل المثال: يمكنك إدخال حلقة for في حلقة while أو العكس. وتعد حلقات for هي الحلقات المتداخلة الأكثر شيوعًا. وزارة التعليم Ministry of Education 2024-1446 الحلقة الخارجية الحلقة المتداخلة تُعني جملة حلقة داخل جملة حلقة أخرى. i القيم j 0 for i in range(3): for j in range(2): print("i= ",i,"j= ",j i= 0 j= 0 i= 0 j= 1 i= 1 j= 0 i= 1 j= 1 i= 2 j= 0 الحلقة الداخلية i= 2 j= 1 0 1 1 0 1 2 1 0 2 3 1 خطوات التنفيذ: 1. أ يحصل على القيمة ، ستتكرر الحلقة الداخلية مرتين: 1 = for j = 0 ، j. 2. الآن ارفع قيمة ، ثم 1 = for i، ستتكرر الحلقة الداخلية مرتين: 1 = for j = 0 ، j 3. الآن ارفع قيمة ، ثم 2 = for i، ستتكرر الحلقة الداخلية مرتين : 1 = for j = 0 ، j في النهاية، تكررت الحلقة الخارجية 3 مرات والحلقة الداخلية 6 مرات. 206
... a=4 مثال آخر للحلقات المتداخلة. while a<=12: for i in range(3): a= 4 i = 0 "" print("a= ,a,"i= ",i) a= 4 i= 1 a=a+3 a= 4 i= 2 a= 7 i= 0 a= 7 i= 1 وضع المسافة البادئة في الحلقات المتداخلة مهم جدًا، حيث تُحدد المسافة البادئة الأوامر التي يتم تضمينها في كل حلقة. a= 7 i= 2 a= 10 i= 0 a= 10 i= 1 a= 10 i= 2 وزارة التعد 20 Ministry of Education 2024-1446 .. البداية a=4 a<=12 خطأ ... النهاية صواب خطأ a=a+3 i=0 i<3 المخطط الإنسيابي للمقطع البرمجي صواب التكرارت الخارجية التكرارت الداخلية print("a=",a,"i=",i) i=i+1
وضع المسافة البادئة مهم للغاية ويغير المقطع البرمجي بأكمله في بايثون يمكنك أن ترى أنه إذا غيرت المسافة البادئة في المثال السابق، فإن النتيجة ستكون مختلفة. وزارة التعليم Ministry of Education 2024-1446 البداية a=4 a<=12 خطأ a=4 while a<=12: for i in range(3): print("a= a=a+3 صواب خطأ النهاية a, "i= ",i) a= 4 i= 0 a= 7 i= 1 a= 10 i= 2 i=0 i<3 المخطط الإنسيابي للمقطع البرمجي صواب التكرارت الخارجية التكرارت الداخلية print("a=",a, "i=",i) a=a+3 i=i+1 208
القواعد التي تنطبق على الحلقات المتداخلة: > يجب أن تكون كل حلقة داخلية مدمجة بالكامل داخل الحلقة الخارجية، ولا يمكن أن تتشابك الحلقات. > لا يمكن استخدام نفس المتغير كعدّاد لحلقتين متداخلتين أو أكثر. > الحلقة الداخلية يجب أن تكتمل أولًا. > الحلقة الداخلية تنفذ جميع تكراراتها لكل تكرار من تكرارات الحلقة الخارجية. ستتكرر الحلقة الخارجية 24 مرة. ستتكرر الحلقة الوسطى 60 مرة لكل تكرار واحد للحلقة الخارجية. سوف تتكرر الحلقة الداخلية 60 مرة لكل تكرار واحد للحلقة الوسطى. وزارة التعو20 Ministry of Education 2024-1446 مثال توضيحي الساعة الرقمية هي إحدى أمثلة الحلقات المتداخلة في العالم الحقيقي. في الساعة الرقمية، تحتاج إلى 3 حلقات > الحلقة الأولى ستتبع الساعات. > الحلقة الثانية ستتبع الدقائق. > الحلقة الثالثة ستتبع الثواني. for hour in range (24): for min in range (60): for sec in range (60): print (hour, ":",min, ":",sec) 0:0:0 0:0:1 0:0:2 • 23:59:59
وزارة التعليم Ministry of Education 2024-1446 مثال حساب درجات تقييم الطلبة المعلم يريد حساب درجات تقييم طلبته. يضم فصله 30 طالبًا، وخضع كل طالب لاختبارين وامتحان نهائي واحد. الدرجة النهائية لكل طالب هي متوسط تلك الدرجات الثلاث. الحلقة الخارجية للطلبة ال 30# for student in range(30): ( " اكتب اسم الطالب: ")name=input ابدأ بكتابة الدرجات الإجمالية لكل طالب # sumGrades=0 حلقة داخلية للدرجات الثلاث # for gr in range(1,4): ( " للطالب : ",gr, " اكتب الدرجة )print grade=int(input()) مجموع الدرجات الثلاث للطالب sumGrades=sumGrades+grade احسب الدرجة النهائية # finalGrade=sumGrades/3 (finalGrade, "هي" ,name, "الدرجة النهائية ل")print 81.66666666666667 اكتب اسم الطالب محمد اكتب الدرجة 1 للطالب 75 اكتب الدرجة 2 للطالب 80 اكتب الدرجة 3 للطالب 90 الدرجة النهائية ل محمد هي اكتب اسم الطالب: 210
أنماط الطباعة يمكنك استخدام بايثون لعرض الأنماط على الشاشة لطباعة أي نمط ، هناك هيكل عام عليك اتباعه حيث تحتاج إلى تحديد عدد الصفوف والأعمدة في النمط . تُخبرك الحلقة الخارجية بعدد الصفوف المستخدمة، تخبرك الحلقة الداخلية بعدد الأعمدة المستخدمة لطباعة النمط. بعض الأمثلة على الأنماط الرقمية: 1 2 2 3 3 3 4444 55555 استخدام end بهذه الطريقة يختم النص المطبوع بمسافة فارغة بدلًا من الانتقال إلى صف جديد. for num in range (1,6): for j in range (num): print(num, end="") الانتقال لصف جديد # print(" ") في المثال أعلاه الحلقات الخارجية والداخلية من نوع حلقة for حيث تعمل الحلقة الخارجية في النطاق (1,6) و تعمل الحلقة الداخلية داخل النطاق المحدد للحلقة الخارجية. سيتم عرض الرقم الأول مرة واحدة في الصف الأول، والرقم الثاني مرتين في الصف الثاني، والرقم الثالث ثلاث مرات في الصف الثالث وهكذا. وزارة التعدده Ministry of Education 2024-1446 for num in range (1,6): for j in range (1,num+1): print(j,end=" ") جرب بنفسك الانتقال لصف جديد # print(" ") 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 جرب المقطع البرمجي التالي واكتب النتيجة التي تظهر على الشاشة. for num in range (8,-1,-1): for j in range (0, num): print(num, end=" ") الانتقال لصف جديد # print()
في المثال التالي، سترى أنه يمكنك طباعة أنماط هرمية من النجوم ستطبع نجمة واحدة في الصف الأول، ونجمتين في الصف الثاني وتستمر بالطباعة حتى الصف الخامس. تريد تنفيذ الحلقة المتداخلة عدد مرات أ، لذا فأنت بحاجة إلى 1 + i في دالة النطاق. for i in range(0, 5): for j in range(0, i+1): print("*",end=" ") print() * * * * * * * * * * * * * * رسم مثلث باستخدام النجوم، حيث ستستخدم 4 حلقات for حلقتين داخليتين مخصصتين لتكرار العمود، وحلقتين يمكنك أيضًا خارجيتين لتكرار الصف. * * * for i in range(6): for j in range(i): print ("*", end=" ") print() for i in range(6,0,-1): for j in range(i): print("*", end=" ") print() * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * جرب بنفسك وزارة التعليم Ministry of Education 2024-1446 * جرب المقطع البرمجي التالي، واكتب النتيجة التي تظهر على الشاشة. for i in range(6, 0, -1): for j in range(0, i 1): print("*", end=" ") print() 212
وزارة التعد21 Ministry of Education 2024-1446 x=2 C=5 while c>0: for i in range (7,12,2): x=x+3 print(i,x) C=C-3 print(x,c) A. 4 B. 5 C. 12 D. 24 E. 32 لنطبق معًا تدريب 1 شغل المقطع البرمجي التالي وأكمل الجدول. الشاشة i جدول القيم C 5 LO 7 5 7 2 7 14 7 -1 20 X 2 5 تدريب 2 شغل المقطع البرمجي التالي وتحقق من عدد الصف المطبوعة. for i in range(4): for j in range(8): print(i, j)
214 تدريب 3 • اكتب مقطعًا برمجيًا لعرض جدول الضرب لجميع الأرقام من 1 إلى 10. تدريب 4 ما وظيفة المقطع البرمجي التالي؟ وما مخرجاته؟ الناتج for i in range(3): for j in range(3): if j == i: break print(i, j) وزارة التعليم Ministry of Education 2024-1446
وزارة التعلم Ministry of Education 2024-1446 5 4 3 2 1 4 3 2 1 3 2 1 2 1 1 تدريب 5 • اكتب المقطع البرمجي الذي يطبع النمط التالي: المقطع البرمجي: