رياضيات و روبورو

ممکن است به نظر بيايد که "رياضيات و روبورو" ترکيب زياد جالبي نيست... وقتي آدم اسم رياضيات به گوشش ميخورد ممکن است حالش گرفته شود! .... اما زود قضاوت نکنيد، اولا اينکه روبورو با رياضياتش هم جذاب است و ثانيا اينکه رياضيات به خودي خود هم جذاب است، ببينم اصلا چه کسي گفته رياضيات جذاب نيست؟! ... نکنه شما جزو شاگردان تنبل کلاس هستيد؟ها؟

امروز ميخواهيم با چهار دستور کليدي رياضي روبورو آشنا بشويم. منتها قبل از آن يک کمي "اندر اهميت مقوله‌ي حساب" صحبت کنيم تا متوجه بشويد که چرا روبورو اين همه دستور رياضي لازم دارد!

در حقيقت رياضيات يک زبان بين المللي است، يک چيزي تو مايه هاي زبان انگليسي فقط يک کمي مشکل‌تر! يعني به صورت کلي قرار است دانشمندان به جاي اينکه بنشينند بيخودي هر کدام با زبان خودشان در مورد مسائل اظهار نظر کنند، بايد بيايند حرف هاي خودشان را با زبان رياضي بيان کنند. خوبي اين کار هم کاملا معلوم است، چون رياضي زباني است که پيچيدگي هاي زبان آدمي زادها را ندارد کاملا ميتواند مفهوم مورد نظر را انتقال دهد بدون اينکه آن مفهوم در معرض تغيير قرار بگيرد ... سخت شد نه؟ ... بگذاريد يک مثال بزنم، دانشمندان معمولا براي بيان نظراتشان مينشينند مقاله ميدهند، در در مورد علوم رياضي ( مثل مهندسي ها) و علوم پايه ( مثل فيزيک) همه از زبان رياضي استفاده ميکنند و هر کسي هم رياضي بلد باشد ميتواند تا حدودي متوجه است که نظر دانشمند نويسنده مقاله چه بوده اما در علوم انساني، مثلا جامعه شناسي، چون اين علوم به صورت کلاسيک و دانشگاهي کمتر از 100 سال است که به وجود آمده اند و بشر هنوز نتوانسته آن ها را به زبان رياضي در بياورد مقاله ها همينجوري به زبان معمولي است، اين باعث ميشود که مثلا شما در مورد يک موضوع 10 تا مقاله پيدا کنيد که هر کدام ساز خودشان را ميزنند و هيچ کدام هم با هم توافق ندارند!
البته اين انتظار که جامعه شناسي بايد حتما رياضي وار شود ممکن است کلا انتظار غلطي باشد، اما بالاخره تفاوت علومي که توانسته اند از رياضي استفاده کنند و علومي که هنوز جايگزيني براي رياضي در مسائل مربوط به خودشان پيدا نکرده اند از اينجا معلوم ميشود

خوب، همه اينها را گفتيم که بدانيد خود رياضي چه قدر مهم است!

علاوه بر اين اهميت، اصولا "روبوتيک" يک علم کاملا رياضي شده است. در دانشگاه و در مقطع ليسانس يک درس سه واحدي وجود دارد به نام "روبوتيک"، چيزي که در اين درس ياد دانشجو ميدهند اين است که رفتار روبات ها و انتظارات از آن ها را بتواند به زبان رياضي بيان کند و مسائل مربوط به روباتها را با رياضي حل کند. حالا با اين اوصاف به نظر شما ما اگر چهار تا دستور رياضي براي روبورو نميداشتيم يک کمي ضايع نبود؟!

دستوراتي که در روبورو داريم به ما اين امکان را ميدهد که دنياي اطراف روبورو، که به وسيله آن سه تا سنسور( حسگر) ديده ميشوند، را به زبان رياضي و اعداد بيان کنيم و آنها را ذخيره و استفاده کنيم. يک مثال ميزنم و قال قضيه را ميکنم:

فرض کنيد ميخواهيم با کمک روبورو يک ماز را حل کنيم، يادتان که مي آيد ماز چي بود؟ يک راه پيچ در پيچ که روبات بايد از يک طرفش وارد و از طرف ديگرش خارج شود. گفتيم که يک راه حل ساده اين است که ما يکي از ديوار ها را بگيريم و دنبال کنيم و همين جوري ادامه بدهيم، در برخي موارد به اين طريق ماز حل ميشود اما در برخي موارد هم حل نميشود. ميدانيد در چه حالتي؟ در حالتي که ما ديواري را انتخاب کرده باشيم که به خروجي وصل نباشد و ما همينجوري دور خودمان بچرخيم. در حقيقت مسئله به دو حالت کلي تقسيم ميشود، يا با دنبال کردن يک ديوار به خروجي ميرسيم يا بعد از طي مسافتي دوباره به سر جاي اولمان بر ميگرديم، کافي است تشخيص بدهيم که دوباره به سر جاي اولمان برگشته ايم يا نه و اگر برگشته بوديم ديوار مقابل را انتخاب کنيم و ادامه بدهيم!

خوب چطوري بفهميم که توي يک حلقه بينهايت افتاده ايم؟ من يک پيشنهاد دارم که اهميت رياضيات را هم روشن ميکند، کافي است دو تا عدد براي چهار جهت اصلي درنظر بگيريد، براي شمال و جنوب يک عدد و شرق و غرب هم يک عدد، حالا به ازاي هر سانتيمتر حرکت به سمت غرب، يکي به عدد "شرق وغرب" اضافه کنيد و به ازاي هر حرکت به شرق يکي از آن کم کنيد، براي عدد" شمال وجنوب" هم همينجور، براي هر سانتيمتر حرکت به شمال يکي به آن اضافه کنيد و براي حرکت به جنوب هم يکي از آن کم کنيد.
اگر از جايي شروع کرديد و هر دو عدد را صفر مقدار دهي کرديد، اگر دوباره صفر و صفر را ديديد بدانيد و آگاه باشيد که دوباره برگشته ايد سر جاي اولتان!!
ديديد رياضي چه اهميتي داشت و چه کمکي به ما کرد ...

در پاراگراف بالا چهار تا کلمه را پر رنگ نوشته ام، اين چهار تا همان چهار دستور رياضي روبورو هستند، يعني:

مقدار دهي
جمع
تفريق
مقايسه

حالا اين چهار تا را برايتان معرفي ميکنم:

1 – مقدار دهي(assignment):

با اين دستور ميتوانيد يک عدد را درون يک رجيستر بريزيد و آن را مقداردهي کنيد، رجيستر ها 10 تا هستند و در حقيقت جا هايي هستند که شما ميتوانيد در آن ها اعدادي را که دوست داريد، ذخيره کنيد.

همان طور که در تصوير هم ميبينيد اين دستور دو تا پارامتر دارد، اولي رجيستر مقصد است که بايد مقداردهي شود و دومي ميتواند يک رجيستر ديگر باشد يا ميتواند مثل تصوير بالا "..." باشد، يعني يک عدد. با اين دستور که الان نوشته شده عدد 12 را در رجيستر R06 ذخيره کرده ايم.

2 – جمع (ADD) :

اين دستور دو تا رجيستر يا يک رجيستر و يک عدد را با هم جمع ميکند و حاصل را درون يک رجيستر ديگر ميريزد.



همان طور که ميبيند سه تا پارامتر دارد، اولي پارامتر مقصد است که نتيجه عمل جمع در آن قرار ميگيرد و دومي و سومي هم دو تا رجيستر و يا يک رجيستر و يک عدد هستند که حاصل جمعشان قرار است محاسبه شود. در تصوير مقدار موجود در R06 با عدد 15 جمع شده و حاصل در رجيستر R04 قرار گرفته است. مقدار رجيستر R06 در ابتدا 12 بود، پس حالا مقدار R04 بايد برابر 12+15 يعني 27 باشد.

3 – تفريق (SUB):
اين دستور درست عين دستور جمع است، تصويرش را ببنيد:

در اين تصوير حاصل تفريق 8-R04 در رجيستر R01 ذخيره شده است، به نظر شما مقدار R01 الان چه قدر است؟


4 – دستور مقايسه يا "اگر رجيستر..." (if) :

با کمک اين دستور ميتوانيد مقدار دو رجيستر و يا يک رجيستر و يک عدد را با هم مقايسه کنيد و بر اساس جواب اين مقايسه يک بلوک شرطي(لينک به درس قبلي) بسازيد.

اين دستور سه تا پارامتر دارد، پارامتر اول و آخر ميتواند يک عدد و يا يک رجيستر باشند و پارامتر وسط يکي از چهار تا علامت ==، =!، > و => ميتواند باشد. بعد از بلوک شرطي هم همانجوري که قبلا ديديم بايد حتما يک End if قرار بگيرد.

"==" يعني "آيا اين دو مقدار برابر هستند؟" اگر جواب آري بود که برنامه وارد بلوک شرطي ميشود و اگر جواب نه بود برنامه از End if ادامه پيدا ميکند.

"=!" يعني " آيا اين دو عدد نا مساوي هستند؟" که اگر جواب آري بود وارد بلوک شرطي ميشويم و اگر نه بود نميشويم.

">" يعني " آيا پارامتر اول کوچکتر از پارامتر سوم است؟"

و "=>" هم يعني " آيا پارامتر اول کوچکتر يا مساوي پارامتر سوم است؟"

ممکن است اين سوال برايتان پيش بيايد که پس "<" و "=<" چي؟ ... جوابش خيلي ساده است، شما ميتوانيد با جا به جا کردن پارامتر ها با همين دستورات آن ها را هم تست کنيد!

کافي است براي تست کردن بزرگ بودن يک رجيستر از ديگري آن را در پارامتر سوم قرار بدهيم!!



آرمين سنقري (نويسنده مقالات رباتيک سايت تبيان: www.Tebyan.ir)

Asonghori@gmail.com

دانلود فايل Word همراه با شکل "رياضيات و روبورو"