آنها یاد گرفتند که آن را برای کارهای بعدی تنظیم کنند. حالا بیایید مستقیماً با استفاده از دستورات ساده به سراغ کامپایل الگوریتم‌های ربات برویم.

اگر اطلاعاتی را در قالب آموزش های ویدیویی ترجیح می دهید، سایت دارای یک آموزش تصویری است

هر اجرا کننده باید یک سیستم فرمان داشته باشد ( اسکیسیستم فرماندهی مجری). سیستم فرماندهی مجری- مجموعه تمام دستوراتی که اجرا کننده می تواند اجرا کند. به عنوان مثال، یک سگ آموزش دیده را در نظر بگیرید. او می داند که چگونه برخی از دستورات را اجرا کند - "بنشین"، "دراز بکش"، "بعدی"، و غیره. این سیستم فرمان او است.

دستورات ربات ساده

ربات ما یک سیستم فرمان نیز دارد. امروز نگاه خواهیم کرد ساده دستورات ربات . در کل 5 عدد وجود دارد:

  • بالا
  • به سمت چپ
  • درست
  • رنگ کردن

نتیجه اجرای این دستورات از نام آنها مشخص است:

  1. بالا- ربات را یک سلول به بالا ببرید
  2. راه پایین- ربات را یک سلول به پایین ببرید
  3. به سمت چپ- ربات را یک سلول به سمت چپ حرکت دهید
  4. درست- ربات یک سلول را به سمت راست حرکت دهید
  5. رنگ کردن- روی سلول فعلی (سلولی که ربات در آن قرار دارد) نقاشی کنید.

این دستورات را می توان از صفحه کلید نوشت یا می توانید از کلیدهای داغ استفاده کنید (با فشار دادن آنها دستورات به طور خودکار وارد می شوند):

  • بالا - فرار، بالا (فلش بالا)
  • پایین - فرار، پایین (فلش پایین)
  • چپ - فرار، چپ (فلش چپ)
  • راست - فرار، راست (پیکان سمت راست)
  • رنگ کردن - فرار، فضا (فضا)

لطفاً توجه داشته باشید که باید ترکیب مورد نظر از کلیدهای داغ را شماره گیری کنید نه به روش معمول!ما عادت داریم که کلیدها را همزمان فشار دهیم، اما در اینجا به آنها نیاز است به صورت متوالی فشار دهید. به عنوان مثال، برای وارد کردن دستور up، باید Escape را فشار دهید، آن را رها کنید و سپس فلش رو به بالا را فشار دهید. این را باید به خاطر داشت.

اکنون آماده نوشتن اولین الگوریتم برای Robot هستیم. من پیشنهاد می کنم با یک ساده شروع کنید - یک مربع با ضلع 3 سلول بکشید. برو!

ما Idol را راه اندازی می کنیم. آیا می توانم شروع به نوشتن برنامه کنم؟ البته که نه! ما نیستیم! بیایید آن را انجام دهیم. پیشنهاد میکنم از این یکی استفاده کنید:

حالا همه چیز آماده است. بیایید شروع به نوشتن برنامه کنیم. تا زمانی که او اینگونه به نظر می رسد

حذف نماد "|" و الگوریتم ما را "مربع" بنامیم

من پیشنهاد می کنم یک مربع بکشید که در جهت عقربه های ساعت حرکت می کند. ابتدا با دادن دستور روی سلول فعلی رنگ کنید رنگ کردن. سپس یک قدم به سمت راست برمی داریم و دوباره روی سلول نقاشی می کنیم. و یک بار دیگر به سمت راست بروید و رنگ کنید.

بیایید سعی کنیم برنامه را اجرا کنیم و ببینیم چه اتفاقی می افتد. برای راه اندازی فشار دهید F9یا دکمه روی نوار ابزار

در نتیجه باید چیزی شبیه به این را ببینیم

اگر چنین پنجره رباتی ندارید، روی نوار ابزار کلیک کنید " نمایش پنجره رباتیا در منوی Robot مورد را انتخاب کنید نمایش پنجره ربات". بیشتر ادامه می دهیم.

اکنون به سمت پایین حرکت می کنیم و سمت راست مربع را رنگ می کنیم:

راه پایین

رنگ کردن

راه پایین

رنگ کردن

سپس به سمت چپ برویم و حاشیه پایین مربع را رنگ کنیم

به سمت چپ

رنگ کردن

به سمت چپ

رنگ کردن

یک سلول رنگ نشده باقی مانده است. بیایید روی آن نقاشی کنیم

بالا

رنگ کردن

همه چیز آماده است! در نتیجه، برنامه ما به شکل زیر است:

از ربات استفاده کنید

alg مربع

زود

رنگ کردن

درست

رنگ کردن

درست

رنگ کردن

راه پایین

رنگ کردن

راه پایین

رنگ کردن

Robot performer یک سیستم فرمان دارد. در نظر گرفتن دستورات ساده ربات. در کل 5 عدد وجود دارد:

    بالا- ربات را یک سلول به بالا ببرید

    راه پایین- ربات را یک سلول به پایین ببرید

    به سمت چپ- ربات یک سلول را به سمت چپ حرکت دهید

    درست- ربات یک سلول را به سمت راست حرکت دهید

    رنگ کردن

تمرین 1.مربعی با ضلع 3 خانه رسم کنید.

راه اندازی Kumir

حذف نماد "|" و الگوریتم ما را "Square" (در کنار کلمه سرویس) صدا بزنید algنوشتن مربع)

رنگ کردن

رنگ کردن

رنگ کردن

برنامه رو اجرا کن ببین چی میشه برای راه اندازی فشار دهید F9یا دکمه روی نوار ابزار اجرای برنامه

اگر چنین پنجره رباتی ندارید، روی نوار ابزار کلیک کنید " نمایش پنجره رباتیا در منوی Robot مورد را انتخاب کنید نمایش پنجره ربات". ادامه می دهیم:

راه پایین

رنگ کردن

راه پایین

رنگ کردن

سپس به سمت چپ برویم و حاشیه پایین مربع را رنگ کنیم

به سمت چپ

رنگ کردن

به سمت چپ

رنگ کردن

یک سلول رنگ نشده باقی مانده است. بیایید روی آن نقاشی کنیم

بالا

رنگ کردن

همه چیز آماده است! در نتیجه، برنامه ما به شکل زیر است:

از ربات استفاده کنید

میدان alg

رنگ کردن

رنگ کردن

رنگ کردن

رنگ کردن

رنگ کردن

رنگ کردن

رنگ کردن

رنگ کردن

وظیفه 2.استفاده كردن دستورات ساده ربات،برنامه ای بنویسید که یک حرف بکشد P، R، W، W، T، N.

حلقه مشروط

اجراکننده ربات چند شرط دارد: بالا رایگان پایین رایگان چپ رایگان راست رایگان دیوار بالا دیوار پایین

دیوار چپ دیوار راست

وظیفه 3.

قرعه کشی خط عمودیاز سمت چپ به سمت راست فیلد از یک حلقه با شرط استفاده می کنم. در ابتدا، ربات در گوشه سمت چپ بالا قرار دارد.

منبعبرنامه Robot ما چیزی شبیه به این خواهد بود:

از ربات استفاده کنید

alg

زود

رنگ کردن

nc در حالی که حق رایگان است

درست

رنگ کردن

kts

باهم

در نتیجه اجرای این برنامه تصویر زیر را مشاهده خواهیم کرد:

وظیفه 4برنامه ای بنویسید که بدون توجه به اندازه ربات، یک فریم در اطراف میدان کاری ربات ایجاد کند. البته با استفاده از حلقه های شرطی. در نتیجه، باید اینگونه باشد:


کل فرآیند شامل دو مرحله است: مونتاژ و برنامه نویسی. برای جمع آوری ربات خوبدانش مکانیک الزامی است برای برنامه ریزی یک ربات برای اعمال خاص، باید زبانی را بدانید که قابل درک باشد مادربردیا بلوک برنامه دانش مدرسه در علوم کامپیوتر در اینجا کافی نیست.

مواد را از کجا تهیه کنیم؟

ابتدا باید تصمیم بگیرید که چگونه می خواهید ربات را مونتاژ کنید: از کیت های آماده یا خودتان مواد را انتخاب کنید. مزیت کیت این است که نیازی نیست به دنبال قطعات جداگانه بگردید. اغلب، چندین دستگاه را می توان از یک مجموعه مونتاژ کرد.

سازه ای که از یک مجموعه آماده مونتاژ نشده باشد نامیده می شود سیستم باز. این همچنین مزایای خود را دارد: ربات شما یک فرد خواهد بود و شما خودتان می توانید طراحی را بهبود بخشید. اما قطعا زمان و تلاش بیشتری را صرف خواهید کرد.

ربات از چه ساخته شده است؟

مسکن - فلز یا پلاستیک "بدن"، که بقیه قطعات به آن وصل شده است. هر ربات دارای یک منبع انرژی است - باتری یا یک باتری. بسته به اینکه ربات چه وظیفه ای را انجام می دهد، حسگرها انتخاب می شوند: آنها می توانند رنگ و نور را تشخیص دهند و به لمس پاسخ دهند.

برای حرکت دادن ربات به موتور نیاز دارید. "سر"از کل مکانیسم - مادربرد یا بلوک برنامه. با کمک آنها، ربات به کامپیوتر متصل می شود و مجموعه ای از وظایف را دریافت می کند.

چگونه او را وادار به انجام کاری کنیم؟

برای اینکه ربات عملی را انجام دهد، باید ایجاد کنید برنامه کامپیوتری. پیچیدگی این مرحله به مونتاژ بستگی دارد. اگر ربات از یک مجموعه مونتاژ شود لگو Mindstormsیا mBot، حتی کودکان نیز می توانند نرم افزار خود را مدیریت کنند.

اگر خودتان در حال ساخت ربات هستید، باید اصول برنامه نویسی و زبانی که قرار است برنامه را با آن بنویسید، مانند C ++ را یاد بگیرید.

چرا ربات نمی تواند برنامه را اجرا کند؟

با رسیدن به یک مکان جدید، او می تواند به بیراهه رفته و برنامه را به اشتباه اجرا کند. برای اینکه ربات همه چیز را به درستی انجام دهد، لازم است سنسورها را تنظیم کنید. به عنوان مثال، نور بیش از حد روشن می تواند در تشخیص رنگ کافی اختلال ایجاد کند. بسته به سطحی که ربات روی آن حرکت می کند، قدرت موتورها تنظیم می شود.

آیا می توانم نحوه اسمبل کردن و برنامه نویسی را در مدرسه یاد بگیرم؟

علیرغم این واقعیت که رباتیک در برنامه درسی مدرسه گنجانده نشده است، معلمان فیزیک و علوم کامپیوتر می توانند به کودک نحوه مونتاژ و برنامه ریزی را آموزش دهند. در بلگورود، برخی از مدارس دایره هایی دارند که در آن ربات می سازند.

«بعد از درس هایی که با معلمان فیزیک و علوم کامپیوتر داشتیم، برنامه نویسی را یاد می گیریم. ما قبلاً می دانیم که چگونه در LegoMindstorms و Robolab کار کنیم ( نرم افزاربرای روبات ها - تقریبا ویرایش). دانش‌آموزان مدرسه شبانه روزی جوانان مهندسی بلگورود و شرکت‌کنندگان RoboFest-2018 می‌گویند که ما گاهی اوقات یاد می‌گیریم که چگونه از قطعات نقاشی‌های سه بعدی بسازیم. آنتون پرشینو دیمیتری چرنوف.

به جز مدرسه، کجا می توان رباتیک شد؟

دانشکده مهندسی BelSU کلاسی دارد که در آن نحوه مونتاژ و برنامه ریزی روبات ها را آموزش می دهند. در سال 2017، Quantorium در بلگورود افتتاح شد، جایی که دانش آموزان مدرسه از سن 9 سالگی رباتیک آموزش می بینند.

برای تبدیل شدن به یک روباتیک واقعی، می توانید وارد دانشکده رباتیک شوید. هنوز چنین افرادی در بلگورود وجود ندارند، اما در BSTU im. شوخوف دارای بخش سایبرنتیک فنی است. شاگردان او در مسابقات روسی در رشته رباتیک جوایزی کسب می کنند.

آیا می توانید خودتان یاد بگیرید؟

آره. منابع زیادی در اینترنت وجود دارد که می توانید یاد بگیرید که چه چیزی بسازید و چگونه یک ربات را برنامه ریزی کنید.

آیا ربات مفید خواهد بود؟

می توان آن را برای کارهای روزمره تطبیق داد و در خانه دستیار ساخت. نمونه های زیادی در اینترنت وجود دارد که نشان می دهد مخترعان خانگی چگونه ربات هایی را برای پختن پنکیک یا نظافت یک آپارتمان می سازند.

چگونه موفقیت خود را در ایجاد ربات تایید کنیم؟

در مسابقاتی مانند RoboFest شرکت کنید. بسته به سن و کارگردانی نامزدهای مختلفی وجود دارد. اساساً، هر نوع ربات دارای مسیری است که بر روی آن وظایفی را انجام می دهد: گرفتن یک مکعب یا کشیدن یک خط. همچنین سیستم های استاتیکی وجود دارد که در آن داوران ارائه پروژه و عملکرد مکانیزم ها را ارزیابی می کنند.

به عنوان یک قاعده، شرکت کنندگان به مسابقات می آیند با مونتاژ شده توسط روبات هاو در آماده سازی فقط برای کالیبراسیون سنسورها و تنظیم برنامه وقت می گذارند.

ویراستاران از کمک در ایجاد مطالب شرکت کنندگان RoboFest-2018 سپاسگزار هستند. دیمیتری آگافونوف, دیمیتری چرنوف, آنتون پرشینو دانیلا میگرینا.

ناتالیا مالیهینا

ربات کنترل مجری در سیستم کومیر

ربات در یک محیط خاص (فیلد شطرنجی مستطیلی) وجود دارد. دیوارها را می توان بین برخی از سلول های میدان قرار داد. برخی از سلول ها ممکن است سایه دار باشند (شکل 3.11).

ربات دقیقاً یک سلول از میدان را اشغال می کند.

در دستورات بالا، پایین، چپ و راست، ربات به سلول بعدی در جهت مشخص شده حرکت می کند. اگر دیواری در راه باشد، خرابی رخ می دهد - پیامی در مورد عدم امکان اجرای دستور بعدی نمایش داده می شود.

با دستور رنگ آمیزی، ربات روی سلولی که در آن قرار دارد نقاشی می کند. اگر سلول قبلاً رنگ آمیزی شده باشد، مجدداً رنگ آمیزی می شود، اگرچه هیچ تغییر قابل مشاهده ای رخ نخواهد داد.

ربات فقط می تواند دستورات نوشته شده را به درستی اجرا کند. اگر به جای دستور down یادداشت کنید، ربات این ورودی را متوجه نمی شود و بلافاصله خطا را گزارش می کند.

O
خطاها: 1 نحوی. 2. منطقی

توضیحات صحنه در آن ذخیره می شود فایل های متنیفرمت خاص (. فرمت fil).

جاری- محیطی که ربات در آن قرار دارد این لحظه(از جمله اطلاعات در مورد موقعیت ربات).

صفحه اصلی- محیطی که ربات به اجبار در ابتدای اجرای برنامه با استفاده از Robot در آن قرار می گیرد.

رویه عملیاتی:


  1. پرسیدن محیط شروعبا توجه به وظیفه:
ابزارهای منو ← تغییر محیط شروع ربات (محیط را با توجه به شرایط کار ترسیم کنید، نام بگذارید، در پوشه Personal ذخیره کنید)

2. پیمانکار را مشخص کنید:

درج منو → استفاده از ربات

3. الگوریتمی برای حل مسئله بنویسید.

4. الگوریتم را اجرا کنید (منو اجرا → اجرای مداوم / F9)

سیستم دستورات ربات مجری در سیستم KUMIR


تیم

عمل

بالا

ربات 1 سلول به بالا حرکت می کند

راه پایین

ربات 1 سلول به پایین حرکت می کند

به سمت چپ

ربات 1 سلول را به سمت چپ حرکت می دهد

درست

ربات 1 سلول را به سمت راست حرکت می دهد

رنگ کردن

ربات سلولی را که در آن قرار دارد رنگ می کند

حق رایگان

ربات اجرای مربوطه را بررسی می کند سادهمقررات

آزاد گذاشت



بالا شل



پایین شل



سلول سایه دار است



قفس تمیز



الگوریتم های چرخه ای

چرخهسازماندهی اقدامات تکراری تا زمانی که یک شرط خاص درست باشد .

بدنه حلقه -مجموعه ای از اقدامات قابل تکرار

وضعیت -عبارت بولی (ساده یا پیچیده (ترکیب))
انواع چرخه:

1.حلقه "تکرار n بار" 2. حلقه "بای"
nc n بار nts خداحافظ
. . بدنه حلقه. . بدنه حلقه
kts kts

مثال: nts خداحافظحق رایگان


نمای کلی چرخه "تکرار n بار:

تکرار n بار

پایان
kts

نمای کلی حلقه while:

در حالی که برای انجام

پایان
شرایط مرکباز یک یا چند تشکیل شده است شرایط سادهو کلمات خدماتی و، یا، نه.


وضعیت مرکب الف و ب(که در آن A، B شرایط ساده هستند) زمانی ارضا می شود که هر یک از دو شرط ساده موجود در آن برآورده شود.

اجازه دهید A - رایگان در بالا AT - رایگان در سمت راستسپس شرط مرکب الف و ب- رایگان در بالا و رایگان در سمت راست.


شرایط مرکب A OR B زمانی ارضا می شود که حداقل یکی از دو شرط ساده موجود در آن برآورده شود: رایگان بالا یا حق رایگان
وضعیت مرکب نه A- زمانی که شرط الف برآورده نشده باشد برآورده می شود.

مثال:بگذارید A یک سلول سایه دار باشد (شرایط ساده).

پ بررسی شرایط ترکیبی NOT A:

الف) A - انجام شده، نه A (نه سایه دار) - انجام نشده است.

ب) A - انجام نشده، NOT A (NOT shaded) - انجام شده است.


فرمان شعبه

انشعاب -شکلی از سازماندهی اقدامات که در آن، بسته به تحقق یا عدم تحقق یک شرط خاص، یک یا آن توالی از اقدامات انجام می شود.

نمای کلی دستور IF:

اگر سپس در غیر این صورت

پایان

به زبان کومیر:

انشعاب کامل: انشعاب جزئی:
اگر سپس اگر سپس

در غیر این صورت

همه همه

الگوریتم کمکی- الگوریتمی که برخی از مسائل فرعی مسئله اصلی را حل می کند.

در سیستم KUMIR، الگوریتم های کمکی در انتهای برنامه اصلی (بعد از کلمه رسمی باهم) با نام برای اجرا در برنامه اصلی فراخوانی می شوند.

AT نظرسنجی و تکالیف

1. تمام الگوریتم های سه دستوری را که ربات را از موقعیت اصلی خود به سلول B منتقل می کند، ارائه دهید.

آیا الگوریتمی برای این کار وجود دارد که در طی آن ربات انجام دهد:

الف) دو مرحله ب) چهار مرحله؛ ج) پنج مرحله؛ د) هفت قدم؟


  1. پتیا الگوریتمی ساخت که ربات را از سلول A به سلول B با چند سلول رنگ آمیزی شده منتقل می کند. برای بدست آوردن الگوریتمی که ربات را از B به A می برد و همان خانه ها را پر می کند، کولیا باید با این الگوریتم چه کار کند؟


7. دو تا معلوم است الگوریتم های کمکیربات

ترسیم کنید که وقتی ربات الگوریتم های اساسی زیر را انجام می دهد چه اتفاقی می افتد:


آ)

nc 5 بار


الگوی_1

درست؛ درست؛


ب)

nc 7 بار


الگوی_2

درست؛ درست


که در)
درست؛ درست؛ درست

بالا بالا

درست؛ درست؛ درست

راه پایین؛ راه پایین


ز)
درست؛ درست
درست؛ درست

8. الگوریتم هایی ایجاد کنید که تحت آن ربات روی سلول های مشخص شده نقاشی می کند:



9. مشخص است که جایی در سمت راست ربات دیواری وجود دارد. الگوریتمی بسازید که تحت کنترل آن ربات روی تعدادی سلول تا دیوار نقاشی می کند و به موقعیت اصلی خود باز می گردد.

10. مشخص است که جایی در سمت راست ربات یک سلول سایه دار وجود دارد.

از جانب الگوریتمی را ترک کنید که تحت کنترل آن ربات تعدادی سلول را تا سلول سایه دار رنگ می کند و به موقعیت اصلی خود باز می گردد.

11. مشخص است که ربات در نزدیکی ورودی سمت چپ به راهرو افقی قرار دارد.

12. معلوم است که ربات جایی در راهرو افقی است. هیچ یک از سلول های راهرو رنگ آمیزی نشده است.

الگوریتمی بسازید که تحت کنترل آن ربات تمام سلول های این راهرو را نقاشی می کند و به موقعیت اصلی خود باز می گردد.


13. در یک ردیف ده سلولی در سمت راست ربات، برخی از سلول ها سایه دار هستند.

از جانب الگوریتمی که سلول ها را رنگ می کند را ترک کنید:

الف) زیر هر سلول سایه دار؛

ب) بالا و پایین هر سلول سایه دار.


14. در مورد درستی قطعه زیر از الگوریتم چه می توان گفت؟

nts خداحافظسلول سایه دار است

اگرحق رایگان سپس

درست؛ رنگ کردن

به
ج

15. برنامه ای بنویسید که با آن ربات بتواند در هر سه پیچ و خم به سلول B برسد.


16. برنامه ای بنویسید که به دنبال آن ربات می تواند در امتداد راهرو از گوشه سمت چپ پایین میدان به سمت راست بالا حرکت کند. راهرو دارای عرض یک سلول است و در جهت از چپ - پایین - راست - بالا کشیده شده است. نمونه ای از یک راهروی ممکن در شکل نشان داده شده است.

دبلیو

adachi GIA


  1. راهرو 1. ربات جایی در راهروی عمودی است. هیچ یک از سلول های راهرو رنگ آمیزی نشده است. الگوریتمی ایجاد کنید که بر اساس آن ربات تمام سلول های این راهرو را نقاشی می کند و به موقعیت اصلی خود باز می گردد.

  1. به
    ضروری است

    داده شده
    راهرو 2. این ربات در سلول بالایی یک راهرو عمودی باریک قرار دارد. عرض راهرو یک سلول است، طول راهرو می تواند دلخواه باشد.

یک نوع احتمالی از مکان اولیه ربات در شکل نشان داده شده است (ربات با حرف "P" نشان داده شده است)

الگوریتمی برای ربات بنویسید که تمام سلول های داخل راهرو را پر کرده و ربات را به موقعیت اصلی خود برگرداند. به عنوان مثال، برای تصویر بالا، ربات باید روی سلول های زیر نقاشی کند (تصویر را ببینید):


  1. یک دیوار افقی بلند در میدان بی پایان وجود دارد. طول دیوار مشخص نیست. ربات در یکی از قفس ها دقیقا بالای دیوار است. موقعیت اولیه ربات نیز مشخص نیست. یکی از موقعیت های ممکن:
اچ


ضروری است

داده شده
الگوریتمی برای ربات بنویسید که تمام سلول های بالا و مجاور دیوار را بدون توجه به اندازه دیوار و موقعیت اولیه ربات رنگ می کند. به عنوان مثال، برای طراحی داده شده، ربات باید روی سلول های زیر نقاشی کند:

موقعیت نهایی ربات می تواند دلخواه باشد. هنگام اجرای الگوریتم، ربات نباید از بین برود.



  1. یک دیوار عمودی طولانی در میدان بی نهایت وجود دارد. طول دیوار مشخص نیست. ربات در یکی از قفس هایی است که مستقیماً در سمت راست دیوار قرار دارد. موقعیت اولیه ربات نیز مشخص نیست. یکی از موقعیت های احتمالی ربات در شکل نشان داده شده است (روبات با حرف "P" مشخص شده است): یک الگوریتم برای کار بنویسید که تمام سلول های مجاور دیوار را رنگ می کند: در سمت چپ، از بالا شروع کنید. بدون رنگ و از طریق یکی; در سمت راست، شروع از پایین سایه دار و از طریق یکی. ربات باید فقط سلول‌هایی را که برآورده می‌کنند رنگ کند این شرایط. به عنوان مثال، برای شکل بالا، ربات باید خانه های زیر را پر کند (شکل را ببینید): مکان نهایی ربات می تواند دلخواه باشد. الگوریتم باید مشکل را برای اندازه دیوار دلخواه و هر موقعیت اولیه معتبر ربات حل کند. هنگام اجرای الگوریتم، ربات نباید سقوط کند.


الگوریتمی برای Robot بنویسید که تمام سلول های واقع در سمت چپ دیوار عمودی و بالای دیوار افقی و مجاور آنها را رنگ آمیزی کند. ربات باید فقط سلول هایی را رنگ کند که این شرایط را دارند. برای مثال، برای تصویر بالا، ربات باید روی سلول های زیر نقاشی کند (تصویر را ببینید).


اچ الگوریتمی برای ربات بنویسید که سلول‌های مجاور دیوار را از بالا و پایین رنگ می‌کند، از سمت چپ و از طریق یکی. ربات باید فقط سلول هایی را رنگ کند که این شرایط را دارند. به عنوان مثال، برای شکل داده شده الف) ربات باید سلول های زیر را نقاشی کند (شکل ب را ببینید).

موقعیت نهایی ربات می تواند دلخواه باشد. الگوریتم باید مشکل را برای اندازه دیوار دلخواه و هر موقعیت اولیه معتبر ربات حل کند.



آر

  1. یک دیوار عمودی طولانی در میدان بی نهایت وجود دارد. طول دیوار مشخص نیست. ربات در یکی از قفس هایی است که مستقیماً در سمت چپ دیوار قرار دارد. موقعیت اولیه ربات نیز مشخص نیست. یکی از موقعیت های احتمالی ربات در شکل نشان داده شده است (روبات با حرف "P" مشخص شده است):
الگوریتمی را برای کار بنویسید که تمام سلول های مجاور دیوار را نقاشی می کند:

  • همه در سمت چپ؛

  • در سمت راست، شروع از بالا بدون رنگ و از طریق یکی.
ربات باید فقط سلول هایی را رنگ کند که این شرایط را دارند.

ب
1102_GIA2011

دو دیوار افقی در میدان بی نهایت وجود دارد. طول دیوارها مشخص نیست. فاصله بین دیوارها مشخص نیست. ربات بالای دیواره پایینی در قفسی واقع در لبه سمت چپ آن قرار دارد. الگوریتمی برای ربات بنویسید که تمام سلول های واقع در بالای دیوار پایین و زیر دیوار بالا و مجاور آنها را رنگ آمیزی کند. ربات باید فقط سلول هایی را رنگ کند که این شرایط را دارند. به عنوان مثال، برای ترسیم بالا، ربات باید سلول های زیر را پر کند (شکل را ببینید):

مکان نهایی ربات می تواند دلخواه باشد. الگوریتم باید برای اندازه میدان دلخواه و هر مکان مجاز دیوارها در داخل یک میدان مستطیلی مشکل را حل کند. هنگام اجرای الگوریتم، ربات نباید سقوط کند.


AT
1103_GIA_2011


یک دیوار افقی در میدان بی نهایت وجود دارد. طول دیوار مشخص نیست. از انتهای سمت راست دیوار، یک دیوار عمودی به سمت پایین امتداد می یابد که طول آن نیز نامشخص است. این ربات بالای یک دیوار افقی در قفسی واقع در لبه سمت چپ آن قرار دارد. شکل یکی از راه های ممکنمحل دیوارها و ربات (ربات با حرف "P" نشان داده می شود).

الگوریتمی برای Robot بنویسید که تمام سلول های واقع در بالای دیوار افقی و سمت راست دیوار عمودی و مجاور آنها را رنگ آمیزی کند. ربات باید فقط سلول هایی را رنگ کند که این شرایط را دارند. برای مثال، برای تصویر بالا، ربات باید روی سلول های زیر نقاشی کند (تصویر را ببینید).

ربات اجرا کننده در یک میدان مستطیل شکل وجود دارد که به سلول هایی تقسیم شده است که بین آنها دیوارهایی وجود دارد و کاملاً در یک سلول قرار می گیرد. ربات می تواند در اطراف زمین حرکت کند، روی سلول ها نقاشی کند، دما و تشعشع را اندازه گیری کند. ربات نمی تواند از دیوارها عبور کند، اما می تواند بررسی کند که آیا دیواری در کنار آن وجود دارد یا خیر.

سیستم فرمان مجری "ربات" شامل موارد زیر است:

  • 5 دستوری که باعث اعمال روبات می شود (چپ، راست، بالا، پایین، رنگ کردن روی)
  • 10 دستور بررسی شرایط:
  • 8 دستور مانند [چپ/راست/پایین/بالا] [دیوار/رایگان]
  • 2 فرمان مانند cage [shaded/clean]
  • 2 دستور اندازه گیری (دما، تابش)

دستورات عمل

دستورات را بررسی کنید

تیم شرح
ورود به سیستم آزاد باقی مانده است اگر ربات بتواند به سمت چپ حرکت کند، بله را برمی‌گرداند، در غیر این صورت خیر.
ورود در سمت راست رایگان است اگر ربات بتواند به سمت راست حرکت کند، بله را برمی‌گرداند، در غیر این صورت خیر.
ورود به سیستم رایگان اگر ربات بتواند به سمت بالا حرکت کند، بله را برمی‌گرداند، در غیر این صورت خیر.
آزادانه وارد زیر شوید اگر ربات بتواند پایین بیاید، بله را برمی‌گرداند، در غیر این صورت خیر.
دیوار چپ چوب اگر دیواری در سمت چپ ربات وجود داشته باشد، بله را برمی‌گرداند، در غیر این صورت خیر.
ورود به سیستم دیوار سمت راست اگر دیواری در سمت راست ربات وجود داشته باشد، بله را برمی‌گرداند، در غیر این صورت خیر.
دیوار بالای چوب اگر دیواری بالای ربات وجود داشته باشد بله برمی‌گرداند، در غیر این صورت خیر.
دیوار پایین تنه اگر دیواری در زیر ربات وجود داشته باشد بله برمی‌گرداند، در غیر این صورت خیر.
سلول ورود به سیستم سایه دار است اگر سلول پر شود، بله و اگر سلول پر نشود، خیر را برمی‌گرداند.
ورود سلول تمیز اگر سلول پر شود، خیر و اگر سلول پر نشده باشد، بله را برمی‌گرداند.

دستورات اندازه گیری

اجازه دهید لازم باشد از سلول سمت چپ دیوار به سلول سمت راست دیوار منتقل شود:

الگوریتم ممکن است به شکل زیر باشد:

از ربات استفاده کنید
alg مثال 1
زود
. راه پایین
. درست
. بالا
باهم

اگر سعی کنید ربات را از دیوار عبور دهید، شکست رخ می دهد. ربات به دیوار برخورد می کند و دیگر نمی تواند دستورات بیشتری را دنبال کند.


بیایید یک الگوریتم برای ربات بنویسیم که پیچ و خم را از نقطه A به B عبور دهد:

از ربات استفاده کنید
alg از A تا B
زود
. درست

. بالا بالا درست ؛ راه پایین ؛ راه پایین ؛ درست
. بالا بالا درست ؛ راه پایین ؛ راه پایین ؛ درست
باهم

دستورات برای عبور هر بخش را می توان در یک خط گروه بندی کرد - این رکورد الگوریتم را کوتاه می کند و آن را قابل درک تر می کند. برای نوشتن دستورات در یک خط، باید با نقطه ویرگول از هم جدا شوند.