المتغيرات والتكرارات - التقنية الرقمية 1 - أول ثانوي
القسم الأول
الوحدة الأولى: أساسيات علم الحاسب
الوحدة الثانية: العمل عبر الإنترنت
الوحدة الثالثة: البرمجة باستخدام لغة ترميز النص التشعبي
القسم الثاني
الوحدة الأولى: معالجة الصور المتقدمة
الوحدة الثانية: التقنية والحياة
الوحدة الثالثة: البرمجة باستخدام لغة ترميز النص التشعبي (HTML)
القسم الثالث
الوحدة الأولى: مستندات ونماذج وتقارير الأعمال
الوحدة الثانية: شبكات الحاسب
الوحدة الثالثة: البرمجة بواسطة المايكروبت
الدرس الثاني المتغيرات والتكرارات رابط الدرس الرقمي www.ien.edu.sa بعد أن تعرفت في الدرس السابق على بيئة مايكروسوفت ميك كود ستتعلم في هذا الدرس كيفية إجراء العمليات الرياضية باستخدام الأرقام، وكيفية التعامل مع الإحداثيات، كما ستتعرف على كيفية تنفيذ التكرار أثناء البرمجة، وعملية التكرار من المزايا الموجودة في معظم لغات البرمجة. الحسابات والأرقام يمكنك استخدام بايثون لإجراء أي نوع من العمليات الرياضية، ولكن يجب ملاحظة أن العمليات مثل: الجمع والطرح والضرب والقسمة تكتب في البرمجة بطريقة مختلفة عن تلك التي تُكتب بها في العمليات الرياضية (الحسابية)، حيث تستخدم المعاملات الرياضية التالية لتمثيل العمليات الحسابية الأساسية. العمليات الحسابية الجمع الطرح الضرب القسمة الأس على سبيل المثال، يجب أن تتم كتابة المعادلة الرياضية التالية: x = a2 + 2ab + b2 في بايثون كما يلي: x=a**2+2*a*b+b**2 بلغة بايثون رياضيا 4+2 4+2 4-2 4-2 4×2 4*2 4:2 4/2 x2 ***2 يتم تنفيذ عوامل التشغيل بالترتيب من اليسار إلى اليمين. 429 وزارة التعليم Ministry of Education 2024-1446
الحسابات والأرقام
مثلًا يُحدد ترتيب العمليات في بايثون سابقًا، وتنطبق عليها نفس القواعد التي سبق أن تعلمتها في مايكروسوفت إكسل بشأن استخدام الأقواس. يتم حساب عمليات الضرب والقسمة قبل عمليات الجمع والطرح، وهذا يعني أن ناتج 4 + 2 * 5 هو 14 وليس 30. في حال أردت تغيير أولوية العمليات الحسابية، يتعين عليك استخدام الأقواس. يظهر ترتيب العمليات الحسابية كما في الجدول المجاور، حيث يتم تنفيذ المعاملات في نفس المستوى بالترتيب من اليسار إلى اليمين. يمكنك العثور على المعاملات الرياضية في مايكروسوفت ميك كود في فئة حساب .(Math) أنشئ مقطعأ برمجيًا في مايكروسوفت ميك كود بايثون يجمع رقمين عند اهتزاز أولوية العمليات الحسابية ( ) ** 1* -+ الأقواس الأس الضرب والقسمة الجمع والطرح المايكروبت. لإضافة عملية الجمع > من فئة Variables متغيرات اسحب وأفلت أمر 0 = item العنصر (0) اكتب اسم المتغير add (إضافة). الإدخال)، اسحب وأفلت دالة run code on Gesture.Shake فئة > من 2.(Gesture.Shake is run code) اكتب الأمر global add إضافة عامة). > من فئة Variables المتغيرات) ، اسحب وأفلت أمر المساواة واكتب add (إضافة) على الجانب الأيسر . @ > من فئة Math حساب اسحب وأفلت أمر الجمع داخل الجملة البرمجية ثم اكتب الأرقام التي تريد .جمعها. © > من فئة Basic أساسي)، اسحب وأفلت أمر show number إظهار الرقم)، واكتب add إضافة داخل الأقواس © Python 1 add = 0 2 3 def on_gesture_shake(): global add 1 2 4 3 6 5 add = 5+10 5 4 6 basic.show_number(add) 7 input.on_gesture (Gesture. SHAKE, on_gesture_shake) | يُطلق على الرموز التي تساعدك على إجراء العمليات الرياضية اسم المعاملات الرياضية. وزارة التعليم Ministry of Education 2024-1446 A O اضغط على زر (Shake) للتحقق من نتيجة المقطع البرمجي. SHAKE B D 2 3V GND 430
يحدد ترتيب الحسابات في بايثون مسبقا
الإحداثيات في بايثون يتم تمثيل مصابيح Led الموجودة في مايكروبت على شكل شبكة إحداثيات بمحور سيني (( أفقي ومحور صادي (۷) عمودي، وتحتوي هذه الشبكة على خمسة صفوف وخمسة أعمدة من المصابيح . يختلف نظام التمثيل هذا عن نظام الإحداثيات الديكارتي المعتاد المستخدم في الرياضيات، حيث يشبه نظام إحداثيات مقلوبة. توجد النقطة (0،0) في الزاوية اليسرى العلوية وتسمى نقطة الأصل التي تُمكنك من تحديد موضع مصابيح Led باستخدام الإحداثيات الثنائية. وتتراوح قيم إحداثيات x بين 0 إلى 4 تمامًا كما هو الحال في شبكة الإحداثيات المستخدمة في الرياضيات، وتزداد قيمها من اليسار إلى اليمين. بينما إحداثيات y تتراوح قيمها بين 0 إلى 4 وتزداد قيمها من الأعلى إلى الأسفل. تقع نقطة الأصل (0,0) في الزاوية العلوية اليسرى. 0 X axis 1 2 3 0 4 1 2 3 A y axis 4 B 0 1 2 3V GND أوامر اللعب حان الوقت لتتعرف على كيفية إنشاء لعبة بسيطة باستخدام المايكروبت. ستكون "شخصية" لعبتك هي كائن ضوئي، ويتم تحديد موقعه والتحكم في حركته باستخدام نظام الإحداثيات. ستنشئ مقطعًا برمجيًا يتحرك فيه الكائن إلى اليسار عند الضغط على الزر A. 431 وزارة التعليم Ministry of Education 2024-1446 لمحة تاريخية يُعد رينيه ديكارت (1596-1650) الفيلسوف وعالم الرياضيات الفرنسي أول من طور نظام الإحداثيات المستخدم في أيامنا هذه، وقد حدث ذلك حين كان مستلقيًا على سريره وأراد إيجاد طريقة دقيقة لتحديد موضع الذبابة التي لاحظها على سقف الغرفة.
الإحداثيات في بايثون
أوامر اللعب
يعتبر رينيه ديكارت الفيلسوف وعالم الرياضيات الفرنسي أول من طور نظام الإحداثيات المستخدم في أيامنا هذه
وزارة التعليم Ministry of Education 2024-1446 لإنشاء الكائن الرسومي > من فئة Variables متغيرات) اسحب وأفلت أمر 0 = item العنصر ، واكتب player (لاعب على الجانب الأيسر. 1 > اضغط على فئة Advanced (مقدم) من فئة Game) (اللعبة)، اسحب وأفلت الأمر :1:20 :2 create sprite at إنشاء كائن رسومي في 2 x و 2: 0 > اضبط موضع اللاعب على إحداثيات ( من شاشة LED 0 (4, 2) Search... Basic O Input Music Blocks Python a 1 player = 0 1 Blocks CLoops Python Game Logic Variables 3 create sprite at x: 2 y: 2 Math ▲ Advanced 2 Creates a new LED sprite pointing to the right. f(x) Functions Arrays T Text Game more delete sprite Deletes the sprite from the game engine. The sprite will no longer appear on the screen or interact with other sprites. is sprite deleted Images Blocks Loops Logic Variables Math Python game.create_sprite(x, y) 1 player = game.create_sprite (4, 2) 4+ ? 432
لإنشاء الكائن الرسمي
433 لجعل الكائن الرسومي يتحرك في شاشة LED > من فئة Input (الإدخال)، اسحب وأفلت أمر run code on button pressed عندما يكون زر run code مضغوط 1 من فئة Game (اللعبة)، اسحب وأفلت أمر 1 sprite move by نقل الكائن الرسومي بمقدار (1) ، واكتب player (لاعب) على الجانب الأيسر وأضف القيمة -1 داخل الأقواس 3 > اضغط على زر A في المحاكي للتحقق من النتيجة . Search... Blocks C Loops Logic Variables Basic O Input more Blocks a 2 1 4 Python 1 player game.create_sprite (4, 2) 3 def on_button_pressed_a(): pass ? 5 input.on_button_pressed (Button. A, on_button_pressed_a) Python is sprite deleted Reports whether the sprite has been deleted from the game engine. Math 2 sprite move by 1 ^ Advanced fx) Functions Arrays T Text Game Move a certain number of LEDs in the current direction 4, 2) on.A, on_button_pressed_a) sprite turn direction by (°) game.LedSprite.move(leds) 45 Turn the sprite Blocks C Loops XLogic Python ? 1 player game.create_sprite (4, 2) 2 3 def on_button_pressed_a(): player.move(-1). 5 input.on_button_pressed(Button.A, on_button_pressed_a) 3 4 Variables في كل مرة يتم الضغط على زر A يتحرك اللاعب بمقدار موضع ناحية اليسار حتى يصل إلى الطرف الأيسر من مصابیح LED وزارة التعليم Ministry of Education 2024-1446 4 0 3V GND تحريك الكائن بقيمة محددة من مصابيح LED
لجعل الكائن الرسومي يتحرك
434 التكرارات تحتاج أحيانًا إلى تكرار جزء من المقطع البرمجي عدة مرات في البرمجة، ولهذا السبب فإن معظم لغات البرمجة توفر دوال مختلفة خاصة بالتكرارات البرمجية. تسمح لك التكرارات بتنفيذ سطر واحد أو مجموعة من التعليمات البرمجية لعدة مرات. توفر بايثون عددًا من أوامر التكرار التي تساعدك على تجنب إعادة كتابة أوامر التعليمات البرمجية، وتدعم بايثون نوعين من التكرارات: تكرار for وتكرار .while الفرق بين تكرار for وتكرار while هو أنه في تكرار for يكون عدد التكرارات التي يتعين إجراؤها محدد بالفعل ويستخدم للحصول على نتيجة محددة بينما يعمل الأمر أثناء تكرار while حتى يتم الوصول إلى حالة معينة ويتم إثبات العبارة خاطئة. التكرارات في مايكروبت بلغة بايثون لاحظ أنه يجب كتابة : بعد التعبير التكراري تکرار for تکرار for تکرار while for loop_variable in range(x): statements while condition: statements يتم استخدام تكرار for إذا أردت تكرار مجموعة من الأوامر لعدد محدد من المرات. يتم تحديد عدد التكرارات في نطاق .(range) for loop_variable in range(): statements هنا يتم تحديد عدد التكرارات يجب تضمين الجمل البرمجية التي سيتم تكرارها وزارة التعليم Ministry of Education 2024-1446
التكرارات
تكرار for
كن حذرًا عند استخدام المسافة البادئة. تعدّ المسافة البادئة مهمة جدًا في بايثون وهي إضافة مسافة (فراغ) قبل العبارة. وتشبه ترقيم صفحات الكتاب بالنسبة للقارئ، فبدون أرقام الصفحات لا يعرف القارئ مكان مواصلة القراءة وقد يختلط عليه الأمر. بنفس الطريقة يعمل بايثون، فبدون المسافة البادئة لا يعرف أي عبارة تالية سيقوم بتنفيذها أو أي عبارة تنتمي إلى أي لبنة ولن يتم تنفيذ المقطع البرمجي. -> def on_forever(): -- for i in range (10): ---> basic.show.number(i) basic.forever(on_forever) المصدر المسافة البادئة من المستوى الأول المسافة البادئة من المستوى الثاني المسافة البادئة من المستوى الأول المسافة البادئة من المستوى الثاني المصدر 435 وزارة التعليم Ministry of Education 2024-1446
كن حذرا عند استخدام المسافة البادئة
مثال برمجي: سقوط المطر تعرفت في الدرس السابق على مثال يحرك به اللاعب كائنًا يسارًا بالضغط على الزر .A سترى في هذا المثال كيف يمكنك تطبيق تكرار for لجعل الكائن يبدو كأنه يسقط من الأعلى. ستنشئ مقطعًا برمجيًا يُمثل سقوط المطر على شاشة المايكروبت. لإنشاء كائن رسومي للمطر من فئة Basic أساسي) ، اسحب وأفلت دالة run code forever للأبد run code > عرّف متغير باسم rain (مطر) ومن فئة Game) (اللعبة)، اسحب وأفلت 2: 2:create sprite at x (إنشاء كائن رسومي في (2 و 2: على الجانب الأيمن. 2 من فئة Math حساب اسحب وأفلت أمر randint وعيّن القيم داخل الأقواس كالتالي (0,(04)) 0 Blocks Python Microsoft Led 2 1 1 def on_forever(): all Radio 2 rain = game.create_sprite (randint(0, 4), e) 3 basic.forever (on_forever) C Loops 3 XLogic Variables Math ^ Advanced f(x) Functions Arrays T Text Game سيظهر الكائن rain (مطر) أعلى الشاشة في موقع عشوائي لمحور السينات (x) مما سيجعل موقع كل نقطة مختلفا يتيح لك تكرار "للأبد" (forever) تشغيل جزء من البرنامج بشكل مستمر في الخلفية. وفي كل تكرار يسمح بتشغيل المقاطع البرمجية الأخرى في نفس الوقت حيث أن المقطع البرمجي الموجود داخل تكرار للأبد" (forever) سينتج عن المقطع الآخر الموجود في برنامجك. وزارة التعليم Ministry of Education 2024-1446 436
مثال برمجي: سقوط المطر
437 وزارة التعليم Ministry of Education 2024-1446 اتبع الخطوات التالية لإكمال المقطع البرمجي لسقوط المطر. لإنشاء الكائن الرسومي باستخدام التكرارات > اضغط على فئة Loops .(حلقات). 1 حدد دالة for وضعها داخل دالة run code forever للأبد run code). > من فئة Game ،(اللعبة)، اسحب وأفلت 1 sprite change property by تغيير خاصية الكائن الرسومي بمقدار (1)، واضبط الكائن إلى rain مطر) و property خاصية إلى .. > من فئة Basic أساسي)، اسحب وأفلت أمر (pause (ms إيقاف مؤقت (مللي ثانية)) واضبط time (الوقت) إلى 200 © من فئة Game ،(اللعبة)، اسحب وأفلت أمر delete sprite ( حذف الكائن الرسومي) واضبط الكائن الرسومي إلى rain (مطر). عند الضغط على زر التشغيل سيظهر كائن المطر في موضع عشوائي أعلى شاشة LED وسيبدأ في التحرك لأسفل. ستستمر حركة كائن المطر إلى أن يتم الضغط على زر الإيقاف Blocks Python Microsoft 1 def on_forever(): Radio 2 rain game.create_sprite (randint(0, 4), 0) 2 C Loops X Logic 1 4 34 5 Variables 56900 for i in range(4): rain.change (LedSprite Property.Y, 1) basic.pause(200) 4 rain.delete() 7 basic.forever (on_forever) 8 3 Math ^ Advanced f(x) Functions Arrays I Text c. Game Untitled تحتاج إلى بعض الوقت لترى كل لن يظهر الكائن بعد الآن على الشاشة A C 0 3V GND من خلال تغيير قيمة المحور، فإنك تنشئ انطباعًا بأن المطر يتساقط حركة لكائن المطر بوضوح الشرط خطأ صواب للأبد الخروج من التكرار
اتبع الخطوات التالية لاستكمال برنامج سقوط المطر
438 يتم استخدام تكرار for عندما يكون عدد التكرارات محددًا منذ البداية. ماذا تفعل عندما يكون هذا الرقم غير معروف ويعتمد التكرار على شرط ؟ في مثل هذه الحالا يقدم بايثون لك تكرار while. تکرار While يتم استخدام تكرار while عندما يكون عدد التكرارات غير معروف (أو محدد) سابقًا. كلما كان الشرط متحققا يستمر التكرار في عمله لفحص الحالة بصورة مستمرة بعد كل تكرار، وعند عدم تحقق الشرط، فإن التكرار يتوقف ليمرر التحكم في المقطع البرمجي إلى السطر الذي يلي التكرار. أما عند عدم تحقق الشرط منذ البداية، فإن عبارات التكرار لن يتم تنفيذها إطلاقًا. while condition: statements مخطط المقطع البرمجي يجب إضافة مسافة بادئة لجمل التكرار خطأ تحقق الشرط صواب الخروج من التكرار جملة شرطية لتلق نظرة على مثال مع تكرار while سيظهر في هذا المثال الحرف "A" على الشاشة طالما استمر المستخدم بالضغط على الزر A، وسينتهي التكرار عند توقف المستخدم عن الضغط على زر A. def on_forever(): while input.button_is_pressed (Button.A): basic.show_string("A") basic.show_icon (IconNames.NO) basic.forever(on_forever) إذا لم يتم الضغط على الزر باستمرار، فلن يكون الشرط متحققا وبالتالي لن يتم تنفيذ الأوامر داخل التكرار وزارة التعليم Ministry of Education 2024-1446
يتم استخدام تكرار for
تكرار while
التكرار اللانهائي حلقة التكرار اللانهائي في بايثون هي حلقة شرطية متكررة ومستمرة يتم تنفيذها حتى يتدخل عامل خارجي في عملية التنفيذ مثل: الذاكرة غير الكافية أو الضغط على زر الإيقاف. إذا لم تصبح حالة تكرار while غير متحققة، يصبح لديك تكرار لا نهائي، وهو التكرار الذي لا يتوقف أبدًا. عند استخدام تكرار while يجب عليك تضمين أمر أو مجموعة من الأوامر التي تغير حالة الشرط من متحقق إلى غير متحقق. لتطبق الجملة البرمجية التالية، ما الذي تلاحظه؟ while True: basic.show_string("TRUE") basic.show_string("FALSE") ستعرض الشاشة ما يلي: TRUE المثال السابق ستعرض الرسالة TRUE بشكل مستمر إلى الأبد، بينما لن تعرض رسالة FALSE على الشاشة نهائيًا. مخطط المقطع البرمجي حالة تكرار (while) خطأ صواب صواب عرض الرسالة "TRUE" عرض الرسالة "FALSE" 439 وزارة التعليم Ministry of Education 2024-1446
التكرار اللانهائي
وزارة التعليم Ministry of Education 2024-1446 لنطبق معًا تدريب 1 احسب نتيجة العمليات الحسابية على الورق أولا ثم طبق هذه العمليات في بايثون. في بايثون على الورق <- 5 + 6/3 * 12 ←-- 3* 60-3 * 20 (20+5)/4 تدريب 2 أنشئ بعض التعليمات البرمجية التي تجعل الكائن يتحرك إلى اليمين عند الضغط على الزر B. ما القيمة التي يجب وضعها للأمر ( )player.move ( يتحرك. اللاعب)؟ 440
تدريب 3 املأ الفراغات في العبارات التالية بالكلمات المناسبة مما يلي مع ملاحظة أنه يمكن استخدام بعض الكلمات عدة مرات True False لانهائية while for النطاق التكرارات مرات الشرط 1. عندما تريد تكرار مجموعة من الأوامر، يتم استخدام عدد محدد من تحديد عدد 2. عندما يكون عدد الشرط في معلمات .() الحلقة ........ ...... غير معروف سابقًا، يتم استخدام الحلقة فإن الحلقة تتكرر. بعد كل تكرار يتم فحص طالما أن عندما تصبح الحالة ، يتوقف التكرار ويمر التحكم في المقطع البرمجي إلى السطر الذي يلي الحلقة. 6........ فلن يتم تنفيذ عبارات حلقة while على الإطلاق. 3. إذا كان الشرط مبدئيًا 4. إذا لم يصبح ..... الحلقة while فسوف ينتهي بك الأمر بحلقة .. ... الحلقة اللانهائية هي حلقة لا تنتهي أبدًا. 5. عند استخدام حلقة while ، يجب عليك تضمين أمر أو مجموعة أوامر من شأنها تغيير الحالة من إلى .. تم 441 وزارة التعليم Ministry of Education 2024-1446
442 تدريب 4 جرب المقطع البرمجي التالي، واكتب ما يظهر على الشاشة ومتى يحدث ذلك. تدريب 5 def on_forever(): while input.is_gesture(Gesture.SHAKE): basic.show_string("Earthquake!") basic.show_icon(IconNames.SQUARE ) basic.forever(on_forever) كم مرة سينفذ الأمر ( )basic.show_number اختر الإجابة الصحيحة def on_forever(): for index in range(5): basic.show_number(index) basic.forever(on_forever) def on_forever(): for index in range(3): index = 0 basic.show_number(index) basic.forever(on_forever) لن يعمل المقطع البرمجي لأن بناء جملة الأوامر غير صحيح. تعرض "1" و "2" و "3" و "4" و "5" على الشاشة. تعرض "0" و "1" و "2" و "3" و "4" على الشاشة. تعرض "o" على الشاشة. تعرض "0" و "1" و "2" و "3" على الشاشة. ه تعرض "O" و "3" على الشاشة. وزارة التعليم Ministry of Education 2024-1446
تدريب 6 شغل المقطع البرمجي وصف وظيفته. تدريب 7 player = game.create_sprite(0, 0) for i in range(5): for j in range(5): player.set(LedSprite Property.Y, i) player.set(Led Sprite Property.X, j) basic.pause(400) اكتب مقطعًا برمجيًا يعرض باستمرار رمز البطة على الشاشة، كما يعرض الرسالة "Quack" عند الضغط على الزر B. 443 وزارة التعليم Ministry of Education 2024-1446