The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

العمليات على البيانات +ماي بلوك

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by eng.hd10, 2019-04-28 03:18:46

العمليات على البيانات +ماي بلوك

العمليات على البيانات +ماي بلوك

‫( انشاء بلوك خاص بي ‪ /‬العمليات على البيانات )‬

‫‪Lego mindestrom ev3‬‬

‫اعداد ‪ :‬مريم باعوين‬

‫‪١‬‬

‫كيفية انشاء بلوك جديد ‪:‬‬
‫بعض الأحيان يكون لديك امر مكرر طوال البرنامج و يتكون من عدد من البلوكات و العمليات‬

‫و تحب ان تختصر هذا الامر في بلوك جديد تستدعيه كلما اردت تكرار الامر في البرنامج‬
‫الكامل للروبوت ‪.‬‬

‫مثال تريد تصميم بلوك لتعيين زوايا اللف في كل مرة و ان يلتف الروبوت بعد عمليات‬
‫حسابية تجعل الالتفاف دقيقا سنرى هذا المثال بعد شرح العمليات الحسابية ‪.‬‬

‫مثال اخر ربما الروبوت في أماكن معينة من عمله ينتظهر ظهور لون معين ليلتف ثم يتوقف‬
‫عن الحركة كلون اسود سيكون البرمجة للتحرك الى ان نرى لون اسود كالتالي ‪:‬‬

‫اذا اردنا حفظ هذه البرمجة كبلوك واحد سنحدد البلوكات ماعدا بلوك التشغيل ‪:‬‬

‫ستصبح مظللة بلون ازرق فاتح عندما تحددها معا ثم نذهب للقائمة ‪ tools‬و نختار الامر‬
‫‪.my block builder‬‬

‫‪٢‬‬

‫من ثم سيظهر لنا التالي ‪:‬‬

‫تحديد اسم‬ ‫إضافة متغيير‬
‫للبلوك‬ ‫للبلوك‬

‫‪٣‬‬ ‫وصف للبلوك‬

‫اختيار‬
‫صورة تمثل‬

‫البلوك‬

‫لن نضيف الان المتغير فقط قم بالتسمية ليكن ‪ mblack‬اسما للبلوك‬

‫ستتحول الأوامر التي ظللتها للبلوك فالصوره أعلاه و اذا ضغطت عليه مرتين ستجد بداخله‬
‫الأوامر التي ظللتها سابقا ‪.‬و يمكنك تعديلها من هناك و سيكون هذا التعديل لكل مكان تضع‬

‫فيه البلوك الأزرق المختصر الجديد‪.‬‬
‫واذا ذهبت الى القائمة الأخيرة و التي تكون في بدء تشغيل البرنامج فارغة ستجده هناك و‬

‫بامكانك سحبه لوضعه في أي مكان من البرنامج عندما تكمل البرمجة‬

‫مثال ‪ :‬لنجعل الربوت ينتظر ‪ 5‬ثواني ثم يتحرك الروبوت بشكل مستمر الى ان يجد لونا اسود‬
‫فيلتف عنده ثم يصدر صوتا ستكون البرمجة كالتالي ‪:‬‬

‫الغرض في المثال بسيط و لكن عندما يكون برنامجك طويلا و يتكرر هذا الامر فيه كثيرا‬
‫ستجد ان البلوك مفيد لجعل الكود مختصرا و غير ممل في المراجعة و التعديل ‪.‬‬

‫‪٤‬‬

‫ماذا لو اضفنا بارامترا او لنقل متغيرا على ذات الأوامر السابقة ماذا سيحصل فالواقع عند‬
‫الضغط على ‪ +‬سيظهر لك اول متغير اسمه ‪ a‬يمكنك إضافة أي عدد تحتاجه منها‬

‫و يمكنك تحديد خواص هذا المتغير و طريقة التحكم بقيمته ‪:‬‬

‫الضغط هنا‬
‫سيتيح لك‬

‫اختيار رمز‬
‫للمتغير‬

‫‪٥‬‬

‫اعداد خواص‬
‫المتغير‬

‫اسم للمتغير‬

‫هل هو مدخل ليكون مشابها‬
‫لمتغير تحديد الطاقة في بلوك‬

‫التحريك أو هل هو مخرج‬
‫كمتغير نتائج العمليات في‬

‫العمليات الحسابية‬

‫نوع المتغير هل تريده رقما ام‬ ‫طرق عرض‬
‫نصا ام متغيرا منطقيا ام‬ ‫المتغير‬

‫مصفوفة عددية ام مصفوفة‬
‫منطقية ‪.‬‬

‫القيمة المبدئية‬
‫للمتغير‬

‫سأجعل المتغيير ‪ a‬من نوع عددي و سيكون مدخلا و سأتحكم من خلالة بطاقة التحرك في‬
‫كل مرة اضع فيها البلوك في أماكن مختلفة من البرنامج ‪:‬‬

‫سيظهر لنا المتغيير هكذا و سنققل القيم داخل المتغيير منه‬
‫لتكون طاقة التحرك في البلوك الأول‬

‫‪٦‬‬

‫تم ربط القيمة بالموضع المطلوب لها داخل البلوك‬

‫اما شكل البلوك عندما تستخدمه فالبرنامج من القائمة الأخيرة سيكون كالتالي ‪:‬‬
‫لان ‪ a‬كان من نوع مدخل بامكانك تغيير القيمة كما تغييرها في البلوكات الأساسية سواء‬

‫بوضع القيمة مباشرة فيه او سحبها من بلوك اخر اليه كاحدى الطرق التالية‪:‬‬

‫‪٧‬‬

‫ماذا لو جعلنا المتغيير مخرجا ‪:‬‬
‫لنقل باننا سنقوم دوما بطرح ‪ 10‬من قراءه حساس المسافة و نجعل هذه العمليه في بلوك‬

‫واحد و ناتج الطرح سيكون متغيرا مخرجا نربطه لاحقا بما نشاء فالبرنامج ‪:‬‬

‫سيظهر لنا المتغيير في نهاية البرمجة لندخل له القيمة داخل البلوك كالتالي‬

‫و سيكون شكل البلوك كالتالي ‪:‬‬

‫*لاحظت الفرق بين المتغيرات في حالة كانت مدخلا اومخرجا للقيم ( ‪ ) input / output‬؟‬
‫‪٨‬‬

‫الحالة‬ ‫المدخلات و نوعها‬ ‫النتيجة و نوعها دائما منطقي‬ ‫العمليات ( القائمة الحمراء )‪:‬‬
‫رقمية‬ ‫المقارنة ‪:‬‬
‫‪Equal To‬‬
‫‪Not Equal To‬‬ ‫صح اذا كان )‪ (A = B‬والا خطأ ‪A, B‬‬ ‫مثال ‪:‬‬

‫‪Greater Than‬‬ ‫‪A, B‬‬
‫‪Less Than‬‬ ‫صح )‪ (A ≠ B‬و الا فالناتج خطأ‬
‫‪Greater Than or Equal‬‬ ‫اذا كان‬
‫‪To‬‬
‫‪Less Than or Equal To‬‬ ‫صح اذا كان)‪ (A > B‬والا خطأ ‪A, B‬‬

‫صح اذا كان)‪ (A < B‬والا خطأ ‪A, B‬‬

‫صح اذا كان)‪ (A ≥ B‬والا خطأ ‪A, B‬‬

‫صح اذا كان )‪ (A ≤ B‬و الاخطأ ‪A, B‬‬

‫‪٩‬‬

‫الناتج‬ ‫المدخلات‬ ‫الأمر‬ ‫العمليات المنطقية ( المجموعات )‪:‬‬
‫نوعها‬ ‫‪and‬‬
‫صواب اذا كان ‪ a ,b‬كلاهما‬ ‫منطقي‬
‫صواب و الا سيكون الناتج خطأ‬ ‫‪a‬و‪b‬‬ ‫‪or‬‬
‫‪Xor‬‬
‫صواب اذا كان ‪ a‬او ‪ b‬او كلاهما‬ ‫‪b a‬و‬
‫صواب و يكون الناتج خطأ اذا‬
‫كان ‪ a‬و ‪ b‬كلاهما خطأ‬ ‫‪a‬و ‪b‬‬

‫صواب اذا كان ‪ a‬او ‪ b‬صواب ‪.‬‬
‫خطأ اذا كان ‪ a‬و ‪ b‬كلاهما صواب‬

‫‪.‬‬
‫خطأ اذا كان ‪ a‬و ‪ b‬كلاهما خطأ ‪.‬‬

‫خطأ اذا كان ‪ a‬صواب‬ ‫‪a not‬‬
‫صواب اذا كان ‪ a‬خطأ‬

‫بطبيعة الحال مدخلات و ناتج هذه العملية بيانات منطقية ( صواب ‪/‬‬
‫خطأ ) ( ‪) true /false‬‬

‫امثلة ‪ :‬تتبع الخط بحساسي لون الحساسان مركبان بحيث لا تفصل بينهما مسافة و استخدام‬
‫أوامر منطقية (لاتنسى وضع الأوامر داخل لوب تكراري)‪:‬‬

‫هل يمكنك تفسير الأوامر السابقة و هل يمكن ان تكمل على نفس الوتيرة بأربعة حساسات‬
‫؟؟؟؟‬

‫‪١٠‬‬

‫مثال ( لا تنسى و ضع الأوامر داخل لوب تكراري)‪:‬‬

‫مثال ‪ :‬جعل الروبوت يلتف ‪ 90‬درجة يسارا و يتباطئ في اللف كلما اقترب من اكمال اللف‬
‫الى ان يتوقف ‪.‬‬

‫فكر لمذا الأرقام التالية‬ ‫اللف ‪ 90‬يمينا ‪:‬‬
‫و مادورها ؟‬

‫‪١١‬‬

‫الثوابت و المتغيرات ‪:‬‬
‫لإجراءات العمليات الحسابية و المنطقية نحتاج بادئا لوجود بيانات سواء كانت ثابتة او‬
‫متغيرة او مصفوفات ‪ ...‬ستكون هذه الأرقام و العمليات فيما بعد طريقتك للجعل الروبوت اكثر‬

‫ذكاءا و اكثر كفاءه ‪.‬‬
‫كما نعلم في الرياضيات ( مثلا باي عدد ثابت ‪ ،‬و س متغير ) كذلك الامر في البرمجة‬
‫فسيكون لدينا اما ثوابت لن يحدث تغيير في قيمتها طوال البرنامج أو متغيرات تقبل التعديل‬

‫في قيمها اثناء البرنامج ‪.‬‬
‫أنواع البيانات في البرنامج ( ارقام ‪ ،‬حروف (او نصوص) ‪ ،‬منطق (صح او خطا))‬

‫في القائمة الحمراء بالبرنامج نجد البلوكات التالية ‪:‬‬

‫الثابت ‪:‬‬
‫قيمة لن يتم تغيرها طوال البرنامج كالقيمة المعروفة لباي مثلا لذلك بعد تحديد القيمة لن يكون‬

‫لديك خيار سوى قراءة هذه القيمة و نقلها لاماكن أخرى فالبرنامج يأتي العمل كالتالي ‪:‬‬

‫هنا يدرج قيمة الثابت‬

‫هنا تختار نوع الثابت ( نص ‪ ،‬رقم ‪،‬‬
‫منطقي ‪ ،‬مصفوفة ارقام ‪ ،‬او مصفوفة‬

‫منطقية )‬

‫‪١٢‬‬

‫اسم المتغيير‬ ‫المتغيرات ‪:‬‬
‫قيم المستشعرات تتغير حول الروبوت و هذا اهم تطبيق لمعالجة‬

‫هذه القيم او تخزينها ‪.‬‬

‫ادخال او اخراج القيم‬
‫وكتابتها للمتغيير‬

‫بالنقر هنا ستظهر إمكانية إضافة تغيير و بالنقر عليها يمكنك تسمية هذا‬
‫المتغيير ليصبح لديك القدر الذي تشاء من المتغيرات‬

‫ستجد ان لديك خيارين هما قراءه قيمة المتغير او كتابة قيمة جديدة للمتغير‬

‫تحديد وضعية المتغير ( هل سنقرأ قيمة مخزنه به ‪ ،‬ام سنغيير قيمته )‬
‫الوضع ‪ write‬لتغيير قيمة المتغيير بالكتابة مباشرة فيه او عن طريق‬

‫نقل قيمة من مستشعر او عملية حسابية بالاسلاك اليه‬
‫الوضع ‪ Read‬لقراءه المتغيير و نقلها عبر سلك او عملية حسابية او‬

‫إخراجها في الشاشة او عبر الموتور‬

‫هنا تختار نوع المتغيير ( نص ‪ ،‬رقم‬
‫‪ ،‬منطقي ‪ ،‬مصفوفة ارقام ‪ ،‬او‬
‫مصفوفة منطقية )‬

‫‪١٣‬‬

‫العمليات الحسابية ‪:‬‬
‫تجرى العمليات فالوضع المباشر للبلوك على عددين بحد اقصى و العمليات المتاحة فالوضع‬
‫المباشر للبلوك هي ( الجمع و الطرح و الضرب و مطلق العدد و الجذر التربيعي للعدد و رفع‬
‫العدد لقوة معينة ) و تجد اخر خيار خيار ‪ ADV‬أي العمليات المتقدمة بالضغط عليه سيصبح‬

‫بامكانك تنفيذ عمليات أخرى غير السابقة و العمليات السابقةولكن على ‪ 4‬اعداد و ليس‬
‫عددين ‪:‬‬

‫بالضغط هنا تظهر قائمة‬
‫العمليات المباشرة و في اسفلها‬
‫اختيار العمليات المتقدمة ‪ADV‬‬

‫ستكون عملية الجمع المباشرة منها و الطرح و القسمة و الضرب بين عددين هما ‪a, b‬‬
‫و يمكنك اخذ الناتج وربطه بالموتورات او المتغيرات بشكل عادي‬

‫‪١٤‬‬

‫حساب الجذر التربيعي لعدد‬ ‫حساب مطلق العدد‬

‫ضع هنا القيمة التي‬ ‫اخراج الناتج‬ ‫ضع هنا‬ ‫اخراج الناتج‬
‫تريد حساب الجذر‬ ‫القيمة التي‬
‫تريد حساب‬
‫التربيعي لها‬
‫مطلقها‬

‫رفع عدد لقوة معينة‬

‫ضع هنا قيمة الأساس‬ ‫اخراج الناتج‬

‫ضع هنا قيمة الأس‬

‫تمارين ‪:‬‬

‫‪ -1‬اعرض على الشاشة مربع العدد ‪ 4‬باستخدام بلوك العمليات الحسابية ‪.‬‬
‫‪ -2‬اعرض عل الشاشة ناتج اجراء عملية الجذر التربيعي للعدد ‪ 81‬باستخدام العمليات الحسابية داخل الروبوت ‪.‬‬

‫‪ -3‬اعرض على الشاشة حاصل الفرق بين قرائتي سنسرين مسافة احدهم في مقدمة الروبوت و الآخر في جهته‬
‫الخلفية ‪.‬‬

‫‪١٥‬‬

‫العمليات في الوضع المتقدم ( ‪:) adv‬‬

‫الميزة كما ذكرت سابقا سيصبح لديك ‪ 4‬اعداد لاجراء العمليات عليها في ذات البلوك و تتيح‬
‫لك عمليات حسابية أخرى بالإضافة للموجود في الوضع المباشر للبلوك ‪.‬‬

‫‪Add‬‬ ‫العمليات المتاحة في الوضع المتقدم ( ‪:) adv‬‬
‫‪subtract‬‬ ‫جمع‬
‫‪Multiply‬‬ ‫طرح‬
‫ضرب‬
‫‪divide‬‬ ‫قسمة‬
‫‪modulo‬‬
‫‪exponent‬‬ ‫باقي القسمة‬
‫‪negate‬‬ ‫أس‬

‫‪floor‬‬ ‫عكس‬
‫‪ceil‬‬ ‫تقريب للاسفل (صحيح العدد)‬

‫‪round‬‬ ‫تقريب للاعلى‬
‫‪absolute‬‬ ‫تقريب‬
‫مطلق‬
‫‪log‬‬
‫‪ln‬‬ ‫لوغاريتم‬
‫‪sin‬‬ ‫لوغاريتم طبيعي‬
‫‪cos‬‬
‫‪tan‬‬ ‫جيب الزاوية‬
‫‪Asin‬‬ ‫جيب تمام الزاوية‬
‫‪Acos‬‬
‫‪Atan‬‬ ‫مماس‬
‫‪Square root‬‬ ‫معكوس جيب الزاوية‬

‫معكوس جيب التمام‬
‫معكوس الظل‬
‫جذر‬

‫‪١٦‬‬

‫أمثلة على اجراء العمليات و استخدام المتغيرات ‪:‬‬
‫مثال ‪:‬‬

‫من اشهر الطرق لتصحيح سير الروبوت في خط مستقيم استخدام العمليات الحسابية مع‬
‫حساس الجايرو و ذلك بالطبع بعد ان تتأكد بان حساس الجايرو موضوع في مركز الروبوت و‬

‫بأن الروبوت متزن تماما حول هذا المركز ‪.‬‬

‫لاحظ باننا بدأنا بعملية تصفير حساس الجايرو و من ثم نقل قيمة القراءه فيه لتكون هي‬
‫قيمة ‪ b‬في العملية الحسابية و ضربها في العدد ‪( 0.8‬قد تحتاج لتعديل هذا الرقم حسب‬
‫روبوتك بالزياده او النقصان ) و من ثم جعل ناتج العملية هو القيمة المحدده لاتجاه سير‬

‫الروبوت في البلوك الأخير ‪.‬‬

‫مثال ‪ :‬لاستخدام المتغيرات مع العمليات الحسابي‪:‬‬
‫سنعرف ‪ 3‬متغيرات و نضع لها قيم ( بالإمكان ان تكون هذه القيم قادمة من قراءه احد‬
‫الحساسات ) و من ثم ندخل هذه المتغيرات داخل بلوك العمليات الحسابية في الوضع المتقدم‬
‫و ننفذ عليها العمليات التي نشاء و ناخذ الناتج ليكون مخرجا في احد المحركات او ناتجا على‬
‫شاشة العرض و ربما اذا اردنا تخزينه في متغير اخر ‪ .‬هنا نخزنه في متغير ثم نعرض‬

‫المتغيير على الشاشة ‪.‬‬

‫‪١٧‬‬

‫مثال ‪:‬‬
‫تحديد زاوية معينة للالتفاف بدقة و ببلوك واحد وعملية واحده سواء يمينا او يسارا‬
‫قبل هذا نحتاج لمعرفة مقدار الخطأ في حساس الجايرو الخاص بنا عند اللف لليمين او لليسار‬
‫سنجعل الروبوت مقترنا الكمبيوتر لقراءه قيمة الحساس فالبرنامج و نطبق البرمجية البسيطة‬

‫التالية ‪:‬‬

‫عند تطبيقها وجدت ان الروبوت توقف فعليا عند قيمة الزاوية ‪ 106‬ما يعني وجود مقدار‬
‫خطا ‪ 16‬درجة مع التكرار وجدتها ‪ 124‬في مرة تالية لذا سأقدر مقدار الخطأ ب ‪ 20‬و‬
‫استخدم البرنامج التالي و في اتجاه اللف الاخر قدرتها ‪ 10‬وهذا الرقم ستقدره بنفسك بناء‬

‫على روبوتك‪:‬‬

‫(مطلق ‪b+ (a‬‬
‫‪ b‬تمثل مقدار الخطأ لحساس‬

‫الجايرو في حالة اللف‬

‫‪١٨‬‬

‫اخراج قيمة عشوائية ‪:‬‬
‫اما ان تقوم بعملية الاختيار العشوائي من بين ارقام صحيحة او قيم منطقية ( صواب و خطأ)‬

‫في حالة الإخراج من بين قيم رقمية ستحدد اعلى قيمة و ادنى قيمة يتم سحب القيمة‬
‫العشوائية من بينها‬

‫التهيئة التلقائية لهذا الامر هي الاختيار لعدد صحيح من بين ‪ 1‬و ‪ 10‬و تكون احتمالية‬
‫ظهور عدد ما من بينها هي ( ‪ُ ) 10/1‬عشر ( احتمال ظهور حدث ما = (عدد عناصر الحدث‬
‫‪ /‬عدد عناصر فضاء الإمكانات ) و هكذا فالامر التلقائي فالبرنامج سيكون فيه احتمالية ظهور‬
‫أي عدد من بين ‪ 1‬الى ‪ 10‬متساوية حيث لا تكرار بين القيمة الواحدة‪ ،‬و لو وضعنا المدى‬
‫من ‪ 1‬الى ‪ 6‬لاصبح الاختيار العشوائي مطابق لعملية القاء حجر نرد منتظم ذو ستة أوجه‪.‬‬

‫الخيار الاخر و هو اخراج قيمة عشوائية من نوع منطقي‬

‫الامر يشبه القاء قطعة نقد لها وجهان ( صورة و كتابة ) فالامر التلقائي ستكون احتمالية‬
‫ظهور احدهما ‪ % 50‬و هذا ما يمثله الرقم ‪ 50‬في البلوك و يقصد به فعليا نسبة ظهور‬
‫الصواب فلو اردت ان يتم السحب من بين المجموعة ( صواب ‪ /‬خطأ) سيكون الرقم ‪50‬‬
‫المكتوب تلقائيا هو النسبة الصحيحة ‪ ،‬اما اذا اردت السحب مثلا من بين ( صواب ‪ ،‬صواب ‪،‬‬
‫صواب ‪ ،‬خطأ) هنا نسبة الصواب ‪ % 75‬عليك بالتالي تغيير الرقم الى القيمة ‪ 75‬كالتالي ‪:‬‬

‫‪١٩‬‬

‫مثال ‪ :‬لابد انك قد شاهدت فاليوتيوب الروبوت الذ يلعب معك (حجره ورقة مقص )‬

‫سنستخدم حساس مسافة ليتعرف الروبوت على انك اخترت احد خياراتك (حجرة ورقة او‬
‫مقص ) و ‪ 3‬موتورات على كل موتور سنثبت بيم عليه صورة احداها ( حجرة ورقة قص )‬

‫عندما يشعر الروبوت بوجود يدك يقوم بتحريك احد الموتورات عشوائيا‬

‫ستكون البرمجة كالتالي ‪:‬‬

‫ليكن الاختيار العشوائي من ‪ 1‬الى ‪ 3‬و ليكن الرقم واحد لتحريك الموتور ‪ A‬و الرقم ‪2‬‬
‫لتحريك الموتور ‪ B‬و ليكن ‪ 3‬لتحريك الموتور ‪C‬‬

‫السلسلة النصية ‪:‬‬
‫يمكنك ترتيب عدد من المتغيرات داخل السلسلة النصية و عرضها في شاشة الروبوت مترتبه سترى هذا‬

‫فالمثال التالي لعرض نتائج بلوك التقريب ‪ ،‬منظمة و على الترتيب اذا فهذا الامر سيسمح لك بعرض ‪3‬‬
‫متغيرات في نفس اللحظة على الشاشة دون ان يستدعي منك الامر ترتيب مواقع العرض لكل متغيير منها ‪.‬‬

‫بلوك التقريب ‪ :‬استخراج قيم الحساسات و اجراء عمليات حسابية عليها يعطيك نواتج تكون في حاجة الى‬
‫التقريب او تقليل الأرقام العشرية بعد الفاصلة سيتيح لك هذا البلوك العملية حسب الخيارات التالية ‪:‬‬

‫التقريب للعدد الصحيح بغض‬ ‫عملية التقريب العادية‬
‫النظر عن قيمة الأرقام بعد‬
‫الفواصل ( صحيح العدد)‬

‫‪٢٠‬‬

‫عدد الخانات العشرية التي تريد الإبقاء عليها‬ ‫التقريب للعدد الصحيح الأكبر التالي‬
‫(صفر تعني ان الناتج سيكون ‪ 4‬فقط و لو كتبنا‬ ‫بغض النظر عن قيمة الأرقام بعد‬
‫بدل ‪ 0‬العدد ‪ 1‬سيكون الناتج الرقم ‪ 4.7‬و لو‬
‫الفاصلة‬
‫كتبنا بدل ‪ 0‬العدد ‪ 2‬سيبقى الرقم ‪4.75‬‬

‫مثال ‪ :‬سنعرض على الشاشه سلسلة البيانات تمثل نواتج عملية التقرييب في ‪ 3‬طرق ‪.‬‬
‫البرنامج كالتالي ‪ ( :‬هل يمكنك توقع الأرقام المعروضه على الشاشه ؟)‬

‫‪٢١‬‬


Click to View FlipBook Version