اگر و آنگاه


سقراط و افلاطون در بخش روبوتيک مدرسه اينترنتي!
امروز مي‌خواهيم در باره يکي ديگر از ابزار هاي الگوريتم نويسي صحبت کنيم: «اگر و آنگاه» منتها قبل از اينکه برويم سراغ اين مبحث جديد بد نيست يک بار ديگر تمام آن‌چيزي را که تا به حال ياد گرفته‌ايم، مرور کنيم. اينجوري بچه هايي که تازه از اينجا به ما پيوسته اند هم مي‌توانند به خانواده روبوتيک تبيان اضافه شوند … نظرتان چيست؟بياييد از روش سقراط و افلاطون براي مرور دانسته هاي قبلي استفاده کنيم، روش آنها اين جور بود که صبح به صبح مي رفتند يک گوشه اي در آتن مي نشستند و با هم گفتمان مي‌کردند، سقراط استاد افلاطون بود، گاهي اوقات افلاطون سوال مي‌کرد و استاد جواب مي‌داد گاهي هم سقراط مي رفت و يک سري از جوانان آتن را با سوالهايش سر کار مي‌گذاشت و افلاطون گفتگو ها را ياداشت مي‌کرد، قضيه هم مال حدود 2500 سال پيش است:

رساله‌‌اي در باب حقيقت روباتهااثر افلاطون

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

اما و اگر هاي روباتي

خوب اين هم از مرور درسي به شيوه تاريخي! … برگرديم به الگوريتم ها، قرار شد امروز در باره «اگر و آنگاه» صحبت کنيم.همانطور که سقراط هم چند خط بالاتر اشاره کرد، روباتها داراي سنسور هايي هستند که اطلاعاتي از محيط پيرامونشان به آنها مي‌دهد. بعدا روباتها بايد براي اين اطلاعات تصميم گيري کنند. مثلا فرض کنيد يک روبات رنگرز دارم، از اينها که توي کارخانه هاي اتومبيل سازي بدنه اتومبيل ها را رنگ مي کنند. فرض کنيم اين جناب روبات يک سنور دارد که وقتي بدنه اتومبيل درست سر جايش قرار گرفت روشن ميشود. يک الگوريتم خيلي ساده براي اين روبات مي‌تواند الگوريتم زير باشد:
1:اگر سنسور روشن شدشروع به رنگ کردن کنپايان قسمت «اگر» برو به خط 1
مطمئنا دستوري به نام «شروع به رنگ کردن کن» نداريم، در حقيقت «شروع به رنگ کردن کن» يک سري دستور پشت سر هم است که با اين اسم آنها را صدا ميکنيم. در حقيقت اين الگوريتم آن قدر منتظر ميماند تا يک بدنه ماشين در جاي مناسب قرار بگيرد و بعد شروع به رنگ کردن آن ميکند.با ديدن اين برنامه به فکر اين موضوع افتاديد که چرا يک دستور اضافه داريم؛» پايان قسمت اگر»؟خوب اين دستور دستور مفيدي است، فرض کنيد شرطي که توي دستور اگر نوشته ايم درست نباشد، آن وقت چه کار بايد بکنيم؟ دستور» پايان قسمت اگر» درست براي چنين مواقعي طراحي شده است. اگر شرط درست نبود مي‌پريم به پايان شرط.بياييد يک الگوريتم ديگر را بررسي کنيم. خرس گيريزلي مطلب قبلي را يادتان هست؟ يادتان مي‌آيد خودمان براي او يک الگوريتم نوشتيم تا وقتي که بهار مي آيد بيدار شود؟ بياييد يک بار ديگر آن الگوريتم را مرور کنيم:

1 :بخواب!اگر بهار آمده باشد بيدار شو 2: برو دنبال غذا برو به 2پايان قسمت اگربرو به 1
البته اين يکي يک کمي پيچيده تر از الگوريتم دفعه پيش شد!ببينيد داخل بخش اگر ما يک حلقه بينهات ديگر ساختيم و اينجوري اگر بهار بيايد خرس مورد نظر ما از خواب بيدار مي شود و تا «ابد» به دنبال غذا و شکار مي رود! … سزاي همه خرس هاي تنبل همين است!دلم براي خرس گيريزلي سوخت، بگذاريد الگوريتمش را کامل کنم!

1 :بخواب! اگر بهار آمد بيدار شو 2: برو دنبال غذا!اگر زمستان آمد بخواب! برو به 1 پايان قسمت اگر برو به 2پايان قسمت اگربرو به 1
همان طور که مي‌بيند داخل بخش اگر، ما مي‌توانيم همه چيزي بنويسيم، حتي يک اگر ديگر! دوباره با دقت به الگوريتم بالا نگاه کنيد، رنگ ها به شما کمک مي کنند تا پيچيدگي الگوريتم را متوجه شويد.

اين هم از خرس گيريزليبرگرديم به سراغ شبيه ساز خودمان

همان طور که تا به حال ديديد، روبات شبيه سازي شده ما يک دستور مهم دارد به نامIf sensor که وقتي آن را انتخاب مي‌کنيد بايد پارامتر هاي آن را هم تنظيم کنيد. منظورم از پارامترها عبارات عجيب و غريبي است که با انتخاب if sensor کنار آن ظاهر مي‌شود، عباراتي مثلWSU،WSD و …
اينکه يک روبات چه سنسور هايي داشته باشد بستگي به محيط پيرامون آن دارد. بياييد ببينيم ربات شبيه‌سازي شده ما چند تا سنسور دارد. مي‌دانيم که توي زمين مسابقه ممکن است به چه چيز هايي موجه بشويم… ديوار و خط. روبات شبيه سازي شده ما هم به اين دو تا چيز حساسيت نشان مي دهد. ( روبورو هم به اين دو تا چيز حساسيت دارد … البته عجله نکنيد وقتش که بشود سراغ آن هم مي‌رويم!)
روبات ما چهار سنسور دارد که در چهار طرفش نصب شده اند و به ديوار ها حساس هستند:

WSU: Wall Sensor Up : سنسور حساس به ديوار جلوييWSD: Wall Sensor Down: سنسور حساس به ديوار عقبيWSL: Wall Sensor Left: سنسور حساس به ديوار سمت چپWSR: Wall Sensor Right: سنسور حساس به ديوار سمت راست

و همين طور پنج سنسور دارد که به خط حساس است ( يکي بشتر از سنسور هاي ديوار … چون ممکن است ما روي خط باشيم ولي هيچ وقت نمي شود روي ديوار برويم! … روبات ما، از ديوار مردم بالا نمي رود!)

LSU: Line Sensor Up : سنسور حساس به خط جلوييLSD: Line Sensor Down: سنسور حساس به خط عقبيLSL: Line Sensor Left: سنسور حساس به خط سمت چپLSR: Line Sensor Right: سنسور حساس به خط سمت راستLSS: Line Sensor :سنسور حساس به خط زير

پارامتر آخر هم درباره روشن بودن يا خاموش بودن آنها صحبت مي کند. مثلا:If Sensor (WSU is ON) then يعني اگر سنسور ديوار جلويي روشن بود( يعني ديوار وجود داشت) آنگاه…و If Sensor (WSU is OFF) then يعني اگر سنسور حساس به ديوار جلويي خاموش بود( ديواري وجود نداشت) آنگاه …همان طور هم که قبلا گفتم به ازاي هر دستور IF Sensor بايد يک دستور End If هم بنويسيد تا معلوم شود اگر شرط برقرار نبود بايد به کجا پرش نمود. فعلا تا همين را داشته باشيد تا هفته بعد باز هم بيشتر درباره اگر و آنگاه صحبت کنيم. پس فعلا …در ضمن صفحه بعد را هم ببينيد … مسابقه اين هفته آنجا توضيح داده شده است.

سوالهاي اين هف تهدرس بدون تمرين هيچ کيفي ندارد

1 – برنامه اي بنويسيد که روبات يک خط مستقيم را دنبال کند. راهنمايي مي کنم، همان جور که در شبيه ساز مي بينيد روبات درست پايين خط ايستاده است. برنامه اي بنويسيد که اگر سنسور خط جلويي روشن بود روبات يکي جلو برود. اين جوري روبات شما تا وسط هاي خط جلو خواهد رفت!
2 – برنامه اي بنويسيد که روبات خط را تعقيب کند ( اين يکي يک کمي سخت است … شما روي آن کار کنيد تا هفته آينده با هم حل کاملش را ببينيم)

  1. هنوز دیدگاهی داده نشده است.
  1. No trackbacks yet.

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s

%d وب‌نوشت‌نویس این را دوست دارند: