چگونه یک حلقه بی پایان در یک بت بسازیم. اجرای الگوریتم های چرخه ای بر اساس سیستم "بت". دستورات ربات ساده

مشکل را در نظر بگیرید:

ورودی برنامه یک عدد طبیعی است که از 2 * 10 9 تجاوز نمی کند. مجموع ارقام این عدد را مشخص کنید.

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

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

چرخه خداحافظی

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

  • nc تا الان وضعیت
  • cycle_body

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

حلقه به صورت زیر اجرا می شود:

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

مهم! در بدنه حلقه، در حال حاضر، باید تغییری در مقداری مرتبط با شرط وجود داشته باشد تا از پایان حلقه اطمینان حاصل شود، در غیر این صورت، ممکن است حلقه برای همیشه به پایان برسد.

حالا بیایید از یک حلقه while برای حل مشکل خود استفاده کنیم.

  • شماره ورودی
  • nc while num> 0
  • مجموع: = جمع + مد (تعداد، 10)
  • تعداد: = div (تعداد، 10)
  • مبلغ برداشت

بنابراین، در طی هر اجرای بدنه حلقه، آخرین رقم عدد به مقدار مجموع اضافه می شود، سپس عدد 10 برابر کاهش می یابد. بدیهی است که در نهایت num به 0 تبدیل می شود و پس از آن حلقه به پایان می رسد.

چرخه "تا آن زمان"

در Kumir نسخه دیگری از یک حلقه با یک شرط وجود دارد که تا آن زمان حلقه نامیده می شود که فرمت زیر را دارد:

  • cycle_body
  • kts در شرایط

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

تا آن زمان، چرخه به صورت زیر عمل می کند:

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

وظیفه. برنامه دنباله ای از اعداد صحیح را دریافت می کند که به صفر ختم می شوند. تعداد اعداد منفی دنباله را بیابید. تضمین می شود که دنباله حداقل یک عدد صحیح غیر صفر داشته باشد.

(بخشی از کد برنامه)

  • شماره ورودی
  • اگر شماره 0
  • سپس k: = k + 1
  • kts در عدد = 0
  • رنگ صورتی

سخنرانی 4. عبارات حسابی

عبارات حسابی و قوانین نوشتن آنها. الگوریتم های بازخورد فرمان خداحافظ شرایط در زبان الگوریتمی... دستورات if و Choice. تیم های کنترل ارائه "بصری" دستورات. انحراف: قوانین و شکل نوشتن عبارات حسابی در فرترن قرن بیست و یکم.

شماره روزنامه

سخنرانی 1. اهداف اصلی دوره. روش شناسی ساخت دوره. رویکرد مشکل ساز تئوری از طریق تمرین آموخته می شود. سیستم Kumir یک پشتیبانی موثر برای مفاهیم سنتی زبان های برنامه نویسی رویه ای و روش های سنتی اشکال زدایی است. نمونه هایی از استفاده از "کومیر" در دوره های پیش حرفه ای.

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

سخنرانی 3. روش های ضبط "بصری" الگوریتم. کنترل برنامه ریزی شده ربات چرخه ” nیک بار". استفاده از الگوریتم های کمکی الگوریتم های نوشتن به زبان الگوریتمی

کار امتحانی شماره 1.

سخنرانی 4. عبارات حسابی و قوانین برای نوشتن آنها. الگوریتم های بازخورد فرمان خداحافظ شرایط در یک زبان الگوریتمی دستورات if و Choice. تیم های کنترل ارائه "بصری" دستورات. انحراف: قوانین و شکل نوشتن عبارات حسابی در فرترن قرن بیست و یکم.

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

کار آزمایشی شماره 2.

سخنرانی 6. روش های الگوریتم سازی. روابط عود. روش تکرار چرخه ثابت بازگشت.

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

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

کار نهایی

در حالی که دانش آموز در حال "مونتاژ" برنامه در "PiktoMir" است، او عملاً نیازی به تسلط بر برخی "دنیای رایانه ای" جدید و غیرمعمول ندارد. البته، کودک باید یاد بگیرد که با ماوس کار کند تا نتیجه دلخواه را از رایانه به دست آورد، اما رابط به طور کلی مبتنی بر مفاهیم و اقدامات آشنا برای کودک است، "شفاف" است و نیازی به تمرکز کودک ندارد. بیش از حد در فرآیند تعامل با کامپیوتر. در این لحظه، دانش آموز تقریباً 100٪ تلاش خود را (یا بهتر بگوییم "حجم توجه") روی الگوریتم حل مسئله متمرکز می کند. اما به محض انتقال از برنامه نویسی گرافیکی به متن سنتی تر، دانش آموز با "دنیای متفاوت" روبرو می شود که قوانین آن با قوانین معمولی که قبلاً در مدرسه مطالعه شده است متفاوت است. این در درجه اول در مورد نوشتن عبارات حسابی است، دانش آموز ده ها ساعت را صرف تسلط بر مهارت های دستکاری آنها در درس های ریاضیات در مدرسه کرد و به خودکارسازی خاصی دست یافت.

در اولین وظایف کنترل ربات، کامپیوتر قابلیت های خود را به عنوان یک ماشین کنترلی و نه به عنوان یک ماشین محاسباتی نشان می دهد. اما پس از آن یک چرخه N بار ظاهر می شود، و در هنگام حل برخی از مسائل، دانش آموز ممکن است نیاز داشته باشد که عددی را که در نتیجه محاسبه ای ظاهر می شود، به عنوان N در نظر بگیرد، مثلاً تعداد سلول های یک فیلد با اندازه 9؟ 14. معلوم می شود که اصلاً لازم نیست تعداد کل سلول های چنین فیلدی را خودتان (در ذهن خود، روی کاغذ یا با ماشین حساب) محاسبه کنید و نتیجه را وارد برنامه کنید. معلوم می شود که خود رایانه به محض اینکه به آن بگوییم (آن را در برنامه بنویسیم) می تواند تمام محاسبات لازم را انجام دهد. یعنی، به طور کلی، برای حل یک مشکل در رایانه، آنقدر لازم نیست که بدانید "چند عدد دو برابر خواهد شد"، بلکه بتوانید به رایانه بگویید که باید نتیجه انجام عملیات را بگیرید " دو بار دو» یا عملیات «9 بار در 14».

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

واقعیت این است که وقتی روی کاغذ و تخته سیاه کار می کنیم، فرمول های ریاضی - ریشه ها، کسرها، درجات و شاخص ها - را "رسم" می کنیم و این بسیار راحت است. و در زبان‌های برنامه‌نویسی سنتی، یک عبارت حسابی را نمی‌توان ترسیم کرد، بلکه باید با فشار دادن دکمه‌های روی صفحه‌کلید رایانه «رمزگذاری» شود. به همین دلیل، سنت نمادگذاری ساده و به اصطلاح "خطی" فرمول ها در برنامه نویسی ایجاد شده است که دانش آموز در آغاز قرن بیست و یکم باید به آن عادت کند و با آن سازگار شود. (احتمالاً تا اواسط قرن این کار انجام نشود، برنامه را در پایین سمت راست ببینید.) بنابراین، هنگام وارد کردن فرمول های مورد نیاز (عبارات حسابی) در برنامه، باید از صفحه کلید کامپیوتر استفاده کنیم و این فرمول ها را به روش خاصی رمزگذاری (رمزگذاری) کنید. مانند هر مشکلی در رمزگذاری یا رمزگذاری اطلاعات، این مشکل فنی ساده ممکن است برای برخی از دانش آموزان (از کنترل ربات خسته شده اند) جذاب باشد. هنگام حل این مشکل، معلوم می شود که یک نماد نقطه روی صفحه کلید وجود دارد، اما علامت ضرب "؟" وجود ندارد، و نقطه نیز اصلا به عنوان نماد ضرب عمل نمی کند. همچنین معلوم می شود که نوشتن فرمول های حسابی شکل 8 (2 + 3) با علامت ضرب مفقود مرسوم نیست. یک کامپیوتر (به طور دقیق تر، یک کامپایلر یک زبان برنامه نویسی) می تواند چنین فرمول هایی را درک کند، اما به طور سنتی از انجام این کار خودداری می کند و نیاز به وارد کردن یک ستاره در فرمول دارد - علامت ضرب: 8 * (2 + 3). اما کامپیوتر، به عنوان یک قاعده، دو ستاره متوالی را به عنوان نشانه ای از قدرت درک می کند.

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

کودکان، به عنوان یک قاعده، اشتباه نمی کنند، به استثنای یک مورد گسترده: کسری از فرم

و به جای علامت صحیح (3 + 5) / 2 و (3 * 5) / 2 به صورت 3 + 5/2 و 3 * 5/2 بدون پرانتز نوشته می شوند.

قوانین نوشتن عبارات حسابی در فرترن قرن بیست و یکم

در طول قرن‌های گذشته، ریاضی‌دانان زبان فرمول‌های ریاضی را تمرین می‌کنند، که ثابت کرده است که ابزاری مؤثر برای بیان مفاهیم ریاضی و روش‌های دستکاری اشیاء ریاضی است. هنگامی که رایانه ها در اواسط قرن گذشته ظاهر شدند، اولین ویرایشگرهای متن رایانه و اولین زبان های برنامه نویسی، معلوم شد که آنها قادر به کار با زبان فرمول های ریاضی کار شده در ریاضیات نیستند. با گذشت زمان، وضعیت فرمول های ریاضی در اسناد متنی بهبود یافته است. ریاضی دانان و برنامه نویسان راه هایی را برای وارد کردن فرمول های ریاضی در اسناد متنی ابداع و استاندارد کردند، اما برنامه نویسان در برنامه های خود به استفاده از فرمول خطی غیر قابل بیان فرمول های نوشتن به شکل رشته ای از کاراکترهای وارد شده از صفحه کلید استاندارد ادامه دادند.

در قرن بیست و یکم، وضعیت شروع به تغییر کرد. به دستور ارتش ایالات متحده، متخصصان SUN زبان Fortress را توسعه دادند که در ابتدا برای استفاده از نمادهای ریاضی پذیرفته شده در متون برنامه در نظر گرفته شده بود. بر در حال حاضرفقط اولین قدم ها در این راستا برداشته شده است، اما در زبان قلعه از قبل می توان از حروف یونانی استفاده کرد:

بالانویس ها / زیرنویس ها و کسرها:

فرمول هایی با علائم ضرب حذف شده:

فرمول هایی که آرگومان های توابع ابتدایی در داخل پرانتز قرار نمی گیرند:

تنظیم علائم عملیات

و این تازه آغاز است، در چند دهه آینده متون برنامه های مورد استفاده دانشمندان و مهندسان ظاهرشبیه کتاب های درسی ریاضیات ابتدایی و عالی هستند.

الگوریتم های بازخورد فرمان خداحافظ

تا به حال با ربات به سبک گرافیک لاک پشت در لوگو یعنی دستور داده شده بدون هیچ بازخوردی کار کرده ایم. بنابراین، کاری که ما انجام دادیم (از نظر روش شناختی) می توانست با همان موفقیت، مثلاً در همان LOGO انجام شود. الگوریتم های کمکی (با یا بدون آرگومان) را می توان با استفاده از Robot یا Turtle یاد گرفت.

در ابتدا، هنگام جمع‌آوری برنامه‌ها برای ربات (یا برای Vertun)، به عنوان یک قاعده، از قبل اطلاعات جامعی در مورد وضعیت ربات داشتیم. اما ربات (و Vertun)، از نقطه نظر روش شناختی، بسیار غنی تر از لاک پشت است، زیرا دارای دستورات بازخورد است. و با استفاده از این دستورات، یک مرد می تواند به سرعت اطلاعاتی در مورد وضعیت اطراف یک ربات از راه دور از خود به دست آورد، و یک کامپیوتر می تواند به سرعت اطلاعات را هنگام اجرای یک برنامه دریافت کند. به عنوان مثال، با اجرای دستور "رایگان به سمت چپ"، مهم نیست که از چه کسی آمده است، ربات بخشی از اطلاعات را در مورد وضعیتی که در آن لحظه در آن قرار دارد، به اشتراک می گذارد. اطلاعات دیگری را می توان با پرسیدن از ربات به دست آورد که آیا سلولی که در آن قرار دارد رنگ آمیزی شده است یا خیر.

هنگام استفاده از کنترل از راه دور نشان داده شده در بالا، فرد پاسخ های ربات را از روی تخته به صورت متنی می خواند. یک کنترل از راه دور ارزانتر می تواند پاسخ ربات را با روشن کردن یک لامپ (LED) تقلید کند. هنگامی که ربات توسط یک کامپیوتر کنترل می شود، پاسخ ربات به سطوح سیگنال الکتریکی تبدیل می شود. اما ماهیت فرآیند یکسان است: هنگامی که فرمان بازخورد اجرا می شود، اطلاعات نه تنها به ربات می رود، بلکه در جهت مخالف، از ربات به کامپیوتر یا انسان نیز منتقل می شود. از این رو اصطلاح بازخورد. از نظر تئوری، تنها با یک دستور سؤال از هر جفت از نوع امکان پذیر بود: حق آزاد - راست دیوار. با این حال، این امر نوشتن الگوریتم را پیچیده می کند، زیرا مستلزم معرفی نفی است، که در مراحل اولیه آموزش از نظر روش شناختی غیر قابل توجیه است، و قوانین نوشتن و اجرای برنامه ها را پیچیده می کند. به جای نماد طبیعی "در بالای دیوار"، باید چیزی مانند "بالا آزاد نیست" بنویسید، که نوعی دوگانگی را نشان می دهد، و اگر چیزی غیر از دیوار وجود داشته باشد چه؟

مبلمان ربات چیست؟

محیط ربات یک میدان مستطیل شکل است که توسط یک حصار احاطه شده و به سلول هایی تقسیم شده است و با مقادیر زیر توصیف می شود: 1) اندازه فیلد - تعداد ردیف ها (از 1 تا 10) و تعداد ستون ها (از 1) تا 16)؛ 2) برای هر سلول: وجود دیوارهای اطراف سلول. نشانه سایه؛ مقدار تابش (اندازه گیری شده در واحدهای دلخواه، می تواند هر مقدار واقعی را از 0 تا 100 بگیرد). دما (در درجه سانتیگراد اندازه گیری می شود، می تواند هر مقدار واقعی را از 273- تا 233+ بگیرد). توجه داشته باشید. کمترین دمای ممکن (تقریبا) صفر مطلق (0 درجه کلوین) است. دمای بالا دمایی است که در آن کتاب ها سوزانده می شوند (451 درجه فارنهایت). این درجه حرارت برای همه خوانندگان داستان معروف ری بردبری "فارنهایت 451" شناخته شده است.

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

ربات دارای سه گروه از دستورات بازخورد است. گروه اول به شما امکان می دهد وجود یا عدم وجود دیوارها را از بالا، پایین، راست و چپ تجزیه و تحلیل کنید. گروه دوم شامل دو دستور-سوال کاملاً متضاد "آیا قفس رنگ شده است؟" و "آیا قفس تمیز است؟"

اگر دستورات دو گروه اول "بله" یا "خیر" را به عنوان پاسخ برگردانند، دستورات گروه آخر یک عدد واقعی را به عنوان پاسخ برمی‌گردانند. با کمک این دستورات می توانید متوجه شوید که در قفسی که ربات در آن قرار دارد، دما چقدر است و تابش چقدر است. با توجه به تیم های گروه سوم، دنیای ربات به طرز محسوسی غنی تر می شود. به لطف این تیم ها، ما می توانیم طیف وسیع تری از وظایف را برای کنترل ربات و جمع آوری اطلاعات در زمینه Robot تنظیم و حل کنیم. علاوه بر این، وظایف دما و تشعشع در زمینه Robot می تواند جایگزین برخی از وظایف سنتی پردازش آرایه ها شود. «تجهیز» یک ربات به «دماسنج» و «شمارگر گایگر» یک رویکرد روش‌شناختی خوب برای مطالعه مسائلی است که معمولاً برای آرایه‌ها فرمول‌بندی می‌شوند. وظایف سنتی برای پردازش آرایه ها مانند "حداقل عنصر"، "شاخص عنصر حداکثر"، "مجموع عناصر"، "میانگین حسابی" و غیره، می توانند به عنوان وظایف جمع آوری اطلاعات در فیلد Robot و در عین حال دوباره فرموله شوند. زمان یک تفسیر بسیار طبیعی دریافت می کند ...

یک ردیف افقی از پنج خانه با یک تابش معین در هر سلول (10، 10، 30، 20 و 40) شبیه یک جدول خطی از اعداد واقعی پنج عنصر است. و تقریباً هر مسئله صفحه‌گسترده خطی را می‌توان به‌عنوان یک مسئله روبات فرموله کرد. در چنین فرمولی، روشن تر خواهد شد که چرا چنین مشکلی به وجود آمده و چرا باید حل شود. بیایید تصور کنیم که در زمین ربات در سمت راست دیواری وجود دارد که مردم باید به آن بروند - شاید امدادگران. ابتدا باید دریابید که عبور در امتداد راهرو برای سلامتی چقدر خطرناک است، میزان تشعشع چقدر است. اگر افراد با سرعت تقریباً ثابتی حرکت کنند، دوز تابشی که دریافت می‌کنند متناسب با مجموع سطوح تشعشع در تمام سلول‌های گذرگاه به دیوار خواهد بود. بنابراین، تجزیه و تحلیل درجه خطر این گذرگاه برای زندگی امدادگران را می توان به عنوان مشکل محاسبه کل تشعشع در سلول های گذر دوباره فرموله کرد. این مشکل یافتن مجموع عناصر جدول است که بر اساس کنترل ربات فرموله شده است. به طور مشابه، می توانید تقریباً هر وظیفه ای را برای پردازش جداول (آرایه ها) دوباره فرموله کنید.

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

بنابراین، بیایید ببینیم کدام یک از فرمول‌های مسئله برای دانش‌آموز جذاب‌تر است: 1) شاخص‌های حداقل عنصر یک جدول مستطیلی را پیدا کنید. 2) در مستطیل فیلد Robot، سلولی با حداقل تشعشع پیدا کنید و ربات را به این سلول (برای استراحت) منتقل کنید.

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

همانطور که می بینید، الگوریتم Sum of Elements از حلقه “bye” استفاده می کند که هنوز آن را معرفی نکرده ایم. در اینجا ما فقط کمی از خودمان جلو افتادیم. حلقه "خداحافظ" باید هنگام بحث در مورد یک مشکل (رویکرد مشکل دار) معرفی شود، به عنوان مثال، مانند کتاب درسی:

جایی زیر ربات در زمین یک دیوار وجود دارد. لازم است ربات را به صورت عمودی به سمت دیوار حرکت دهید، یعنی. ربات را در قفس مستقیماً بالای دیوار در همان عمودی با موقعیت اولیه ربات قرار دهید. می توانید ابتدا این مشکل را به صورت دستی حل کنید. معلم حتی می تواند یک فیلد Robot را روی یک برگه بکشد و فعلاً ورق را به دانش آموزان نشان نداده و دستورات آنها را دنبال کند. به زودی دانش آموزان مدرسه خواهند فهمید که باید همیشه بپرسند "از پایین رایگان است؟" (یا «زیر دیوار؟») و دستور «پایین» را بدهید تا زمانی که زیر ربات آزاد شود.

معمولاً پس از 10 دقیقه از چنین بازی، هر دانش آموز در کلاس ایده دقیقی از نحوه فرمان دادن به ربات برای حل مشکل دارد. این درک هدف روش شناختی چنین «بازی» است.

تکنیک روش شناختی چنین معرفی یک طراحی جدید از زبان برنامه نویسی G.V. لبدف در سخنرانی های خود چنین توضیح داد:

«وقتی دانش‌آموزان به تفصیل چگونگی حل مسئله بالا را در حین کنترل دستی ربات درمی‌یابند، یک تقابل کلیدی برای روش روش‌شناختی ما بین این کار «دستی» و طرح کنترل برنامه‌ریزی‌شده رخ می‌دهد.

"عالی! - معلم می گوید. - همه فهمیدند که چگونه ربات را کنترل کنند. اما ما با کنترل دستی ربات سر و کار نداریم، بلکه با علم کامپیوتر سروکار داریم. بنابراین وظیفه ما این است که یک الگوریتم برای یک کامپیوتر بنویسیم، هنگام اجرا، کامپیوتر به Robot فرمان می دهد تا مشکل حل شود. توجه داشته باشید که فاصله ربات تا دیوار ناشناخته است، اما کامپیوتری که الگوریتم را اجرا می کند (و فاصله را نمی داند)، باید ربات را به دیوار منتقل کند. سعی کنید الگوریتمی مانند این بنویسید. پس از همه، شما می دانید که چگونه باید ربات را کنترل کنید، کامپیوتر چه دستوراتی را باید به ربات صادر کند. بنابراین آن را در قالب یک الگوریتم کامپیوتری یادداشت کنید. من یک بار دیگر توجه شما را به این رویکرد مشکل ساز جلب می کنم. از این گذشته ، عملاً در این مکان از دانش آموزان مدرسه می خواهیم که ساختن چرخه "بای" را ارائه دهند. یعنی بر خلاف دنباله استاندارد (اول شکل نمادگذاری، سپس معنای آن (معنا)، سپس حل مسائل)، ابتدا مسئله را تنظیم می کنیم، سپس نحوه حل آن را تجزیه و تحلیل می کنیم، یعنی. ما معنی (معناشناسی) ساخت آینده را درک می کنیم و سپس از دانش آموزان می خواهیم که فرمی از ضبط را ارائه دهند.

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

یک مرحله از برنامه را انجام می دهد و وارد حالت PAUSE می شود. هنگامی که در حالت EDIT و ANALYSIS شروع می شود، از خطوط "استفاده" می گذرد و قبل از اجرای اولین خط مقدمه برنامه اصلی (در صورت وجود) یا قبل از اجرای خط با کلمه "alg" الگوریتم اصلی متوقف می شود. . اجرای دستور برای فراخوانی روش الگوریتم به عنوان یک مرحله در نظر گرفته می شود. نتایج محاسبات و بررسی شرایط را به فیلدها ارسال می کند.

به طور مشابه دستور "STEP" انجام می شود. تفاوت در اجرای دستور فراخوانی الگوریتم-روش یا محاسبه مقدار تابع-الگوریتم (اگر در پنجره کار ارائه شده باشد) نهفته است. در این موارد مرحله بعدی اجرای خط سرصفحه است الگوریتم کمکی... در آینده، دستور "step" یا "STEP" منجر به اجرای مرحله بعدی در الگوریتم کمکی در حال اجرا می شود.

بیایید سعی کنیم الگوریتم "Walk to the end" را اجرا کنیم. با کلیک بر روی آیکون STEP برنامه را مرحله به مرحله اجرا می کنیم. ما علاقه مند به اجرای چرخه "بای" هستیم. ابتدا شرط "آزادی پیش رو" بررسی می شود. پاسخ "بله" است، به این معنی که بدنه حلقه باید اجرا شود. و ربات یک سلول به پایین حرکت می کند. وقتی بدنه حلقه تمام شد، به عقب برمی گردیم و دوباره وضعیت را بررسی می کنیم. و به همین ترتیب، تا بعدی ( تمرین: امتیاز چنده؟) در مرحله ی ربات به دیوار برخورد می کند و بررسی شرایط نتیجه ی "نه" را می دهد. و سپس اجرای چرخه را کامل کرده و بعد از kts شروع به اجرای دستورات نوشته شده در برنامه می کنیم.

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

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

اما اگر ربات خراب شود چه؟ هیچ چیز شبیه این نیست. ربات شکسته نشد، چرخه به پایان رسید، زیرا شرط "آزاد از پایین" در اولین بررسی برآورده نمی شود و بنابراین، بدنه چرخه حتی یک بار هم اجرا نمی شود. این یکی از ویژگی های مهم چرخه بای است.

یکی دیگر از ویژگی های مهم اجرای حلقه "بای" امکان حلقه - اجرای بی پایان بدنه حلقه است. فرض کنید آن را با هم مخلوط کردیم و به جای دستور down، دستور paint را در داخل حلقه نوشتیم. اگر زیر ربات آزاد باشد، ربات به هیچ جا حرکت نمی کند، بلکه ثابت می ماند و به طور نامحدود روی سلولی که در آن ایستاده است نقاشی می کند. اگر چنین برنامه‌ای را اجرا می‌کنید، می‌توانید با تعداد مراحل انجام‌شده توسط برنامه، از حلقه زدن مطلع شوید، در حالی که ربات در حالت ایستاده است، به سرعت در مقابل چشمان ما افزایش می‌یابد.

سومین و آخرین ویژگی حلقه «بای» این است که شرط ادامه حلقه در حین اجرای بدنه حلقه بررسی نشود. اجازه دهید الگوریتم را کمی با اضافه کردن یک دستور "down" دیگر به بدنه حلقه تغییر دهیم. اجازه دهید ربات کار را سریعتر انجام دهد. به عنوان یک قاعده، دانش آموزان اشتباه بودن چنین برنامه ای را نمی بینند، به اشتباه فرض می کنند که شرایط حلقه به نحوی جادویی در هر لحظه از اجرای بدنه حلقه بررسی می شود. البته اینطور نیست. مثال داده شده به وجود آمده را نشان می دهد خطای زمان اجرا، حتی اگر شرط حلقه (در زمان گذشته) مقدار "yes" بود. اما قبل از مرحله دوم "پایین"، هیچ کس شرایط را بررسی نکرد. به همین دلیل در برنامه امتناع شد.

شرایط در یک زبان الگوریتمی اگر و دستورات را انتخاب کنید

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

الگوریتم به سادگی با کار مجدد راه حل مشکل قبلی به دست می آید، فقط باید دستور "if" را اضافه کنید.

سؤال روش‌شناختی که چرا ساختار «اگر» در دوره بعد از ساخت «بای» ظاهر می‌شود را می‌توان در «12 سخنرانی» توسط G.V. لبدوا: «البته، معرفی و توضیح دستور «اگر» با استفاده از نمونه‌ای از نوع «مرحله‌ای محتاطانه» آسان است: «اگر پایین آزاد باشد، پس همه چیز خراب است». مشکل از نظر ما این است که اگر از این شروع کنید (و مخصوصاً اگر قبل از چرخه ها دستور "اگر" را وارد کنید) ، دانش آموزان مدرسه هیچ زمینه خارجی (هر چند غیر رسمی) در ذهن خود ندارند که در آن وجود داشته باشد. نوشتن چنین تیمی برای حل برخی از وظایف معنی دار معنادار خواهد بود. پس از تجزیه و تحلیل حداقل یک مثال با یک حلقه و با یک "اگر" در داخل، چنین زمینه خارجی ظاهر می شود. سپس می توان دستور "اگر" را بدون چرخه مطالعه کرد - دانش آموزان وضعیتی را تصور می کنند که در آن نیاز به چنین دستوری ایجاد می شود. اما وقتی به این مثال اول (با حلقه و "اگر") پرداخته می شود، دستور "if" چیزی برای یادگیری ندارد. دیگر مثال های گویا به سادگی مورد نیاز نیستند - شما باید مشکلات را حل کنید. بنابراین، ما معتقدیم که برای اولین بار دستور "if" باید در داخل حلقه ظاهر شود." پیچیدگی فرمان "if" فقط در رکورد شرط نهفته است. می توانید برای دانش آموزان مشکلی ایجاد کنید - به طور رسمی شرط "ربات در گوشه ایستاده است" را بنویسید:

(دیوار سمت چپ ودیوار بالا)

یا(دیوار بالا ودیوار سمت راست)

یا(دیوار سمت راست ودیوار پایین)

یا(دیوار پایین ودیوار سمت چپ)

دستور انتخاب

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

ارائه "بصری" دستورات

چرخه "خداحافظ" را می توان نه تنها برای دانش آموزانی که از "Kumir" با ربات استفاده می کنند، بلکه برای کودکان پیش دبستانی نیز با استفاده از برادر کوچکتر "Kumir" - "PiktoMir" توضیح داد. از سخنرانی قبلی، ما با Vertun آشنا هستیم که می تواند در زمینی شبیه به یک ربات راه برود. ورتون مجری جالبی است، او دستورات بازخوردی دارد: ورتون می تواند بررسی کند که آیا قفسی که روی آن ایستاده نقاشی شده است یا خیر و آیا دیواری در مقابل او وجود دارد یا خیر. Vertun مانند Robot دارای مجموعه ای دوگانه از دستورات بازخورد است. اما دلایل خوبی برای این موضوع در PiktoMir وجود دارد. اگر در «کومیر» می‌توانستیم معادل دستور «راست آزادانه» را از دستور Robot «روی دیوار سمت راست» با افزودن نفی «not» در داخل دستور دریافت کنیم، در سبک بصری برنامه‌نویسی در «PictoMir» ذره وجود ندارد این بدان معنی است که شما نمی توانید با دو تیم کار کنید و به هر چهار تیم نیاز دارید.

پیکتوگرام های نشان داده شده در شکل این جفت دستورات را نشان می دهند (از چپ به راست): "cell filled" (فیلد خاکستری). "دیوار جلوتر" (دیوار آجری)؛ "قفس تمیز است" ( رنگ سبززمینه های)؛ "آزاد پیش رو" (دیوار ویران شده است).

دستور انتخاب

اگر شرط 1: سری 1

با شرط 2: سری 2

اگر شرط n: سری n

در غیر این صورت سری n + 1

ممکن است کلمه کلیدی در غیر این صورت همراه با سری دستورات مربوطه وجود نداشته باشد:

اگر شرط 1: سری 1

با شرط 2: سری 2

اگر شرط n: سری n

"Kumir" ابتدا شرط 1 را بررسی می کند. در صورت برآورده شدن، سپس "Kumir" دستورات سری 1 را اجرا می کند و سپس به اجرای دستوراتبعد از کلمه همه نوشته شده است. در غیر این صورت "کومیر" با شرط 2 و دستورات سری 2 و غیره همین کار را می کند.

دستورات نوشته شده بعد از کلمه "در غیر این صورت" زمانی اجرا می شوند که هیچ یک از شرایط برآورده نشود.

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

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

تایید شده، داده شده، لازم است.

فرمت تماس:

تایید شده<ЛОГ ВЫРАЖЕНИЕ>

داده شده<ЛОГ ВЫРАЖЕНИЕ>

لازم است<ЛОГ ВЫРАЖЕНИЕ>

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

چگونه می توان از این شرایط در PiktoMir استفاده کرد؟ شرایط را می توان در ابتدای الگوریتم های کمکی در سلول های خاص قرار داد. آبی ها حاوی یک تکرار کننده (برای سازماندهی حلقه N بار) و صورتی - شرط اجرای الگوریتم f1 – f5 هستند. همانطور که قبلاً در سخنرانی 3 ذکر شد، حلقه N بار به دانش آموز کمک می کند تا سلول ها را هنگام ترسیم الگوریتم ذخیره کند.

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

در واقع، اگر وضعیت ورتون را "نگاه کنید"، به راحتی می توانید محاسبه کنید که 4 پله تا دیوار وجود دارد. اگر شرایط برای ما قابل مشاهده نیست و فقط از طریق بازخورد Vertun می توانیم از آن مطلع شویم، موضوع دیگری است. مشابه وضعیت ربات، دانش آموز باید قبل از اینکه جلوتر برود از ورتون بپرسد که آیا دیواری در مقابل او وجود دارد یا خیر. در زبان الگوریتمی مدرسه، وقتی دانش‌آموزان مجبور می‌شوند خودشان چرخه «بای» را بسازند، کودکان هنوز فضای زیادی برای تخیل دارند، زیرا مرزهای زبان الگوریتمی قابل مشاهده نیست. در PiktoMir، یک کودک تنها چیزی را دارد که روی صفحه می بیند. و شرایط را فقط می توان در یک مکان قرار داد. او فقط باید آن را امتحان کند.

چنین برنامه ای برای محیط فعلی ورتون (و طبیعتاً در همه مواردی که دیوار از موقعیت شروع به چهار قدم نزدیکتر است) به درستی کار خواهد کرد.

اجازه دهید نحوه عملکرد الگوریتم کمکی f1 را توضیح دهیم. قبل از شروع الگوریتم (که در 12 سلول اجرایی موجود است) دستور Vertun که در کادر صورتی است اجرا می شود. اگر پاسخ "بله" است، الگوریتم به تعداد دفعاتی که در قسمت آبی نشان داده شده است اجرا می شود. در این حالت، سلول‌های خالی حذف می‌شوند و هر بار قبل از چرخه اجرای بعدی الگوریتم f1، فرمان از قسمت صورتی فراخوانی می‌شود.

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

nts <синее поле> فقط خداحافظ <розовое поле>

<команды в клетках алгоритма>

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

تمرین... به یاد داشته باشید که چگونه از f1 N بار یک حلقه بسازید.

انگیزه کودک برای استفاده از چرخه خداحافظی (استفاده از جعبه صورتی) چیست؟ واقعیت این است که تنها 7 تکرار کننده در PiktoMir وجود دارد: 1 بار، 2 بار، 3 بار، 4 بار، 5 بار، 6 بار و "ad infinitum". با این ست می توانید زمانی که دیوار 1، 2، 3، 4، 5 یا 6 پله است به دیوار برسید. اما وقتی 7 پله تا دیوار وجود دارد یا پله های زیادی وجود دارد که کودک به سادگی نمی تواند تعداد آنها را بشمارد چه باید کرد؟ یک تکرار کننده "بی نهایت" وجود دارد و حتی اگر کودک هنوز بر این مفهوم تسلط نداشته باشد، پس از گذر از چند گزینه برای ایجاد برنامه در PictoWorld، قطعا گزینه را با تکرار کننده "بی نهایت" در قفس آبی و شرط لازم در قفس صورتی این چرخه "بای" خواهد بود که توسط کودک (آگاهانه) ایجاد می شود.

زبان گرافیکی "PiktoMir" کودک را تشویق می کند تا چرخه "بای" را قوی تر از زبان الگوریتمی "Kumir" اختراع کند. واقعیت این است که هنگام "کمانک زدن" با "PiktoMir" کودک در انتخاب وسیله بسیار محدود است. "PiktoMir" همه چیز در کف دست شماست و زبان الگوریتمی را می توان برای مدت طولانی مطالعه کرد. در PiktoMir، می‌توانید به سرعت تمام گزینه‌های برنامه‌نویسی را مرور کنید، و از آنجایی که یک چرخه «بای» نیز در میان آنها وجود دارد، می‌توانید آن را نیز باز کنید. تفاوت «کومیر» و «پیکتومیر» شبیه تفاوت بین شطرنج و چکرز است. ادگار آلن پو نویسنده مشهور آمریکایی در داستان پلیسی "قتل در خیابان مورگ" در مورد دومی چنین نوشت:

در همین حال، توجه در اینجا (در شطرنج. - اد. توجه) تصمیم می گیرد. به محض اینکه او ضعیف شد و شما مرتکب سهل انگاری می شوید که منجر به اشتباه در محاسبه یا شکست می شود. و از آنجایی که حرکات شطرنج نه تنها متنوع، بلکه مبهم هستند، احتمال اشتباه نیز بر همین اساس افزایش می‌یابد و در 9 مورد از هر ده مورد، بازیکن توانمندتر نیست، بلکه بازیکن متمرکزتر برنده می‌شود. چکرز موضوع دیگری است که در آن فقط یک حرکت با تغییرات جزئی مجاز است. در اینجا شانس نظارت بسیار کمتر است ، توجه نقش خاصی ندارد و موفقیت عمدتاً به وضوح بستگی دارد. ... بدیهی است که در اینجا (با نیروهای مساوی) پیروزی در گرو یک حرکت موفق، به یک تصمیم غیرمنتظره و شوخ‌آمیز است.

همچنین دلیل عمیق‌تری وجود داشت که چرا ما به ربات جفت‌هایی از دستورات سؤالی کاملاً متضاد اعطا کردیم. زمانی در یک زبان الگوریتمی، قرار دادن یک ذره خارج از نام دستور غیرممکن بود. در آن روزها، به همین دلیل، استفاده از عبارات کاملاً ناخوانا از نظر زبان روسی مانند "سلول روی آن نقاشی نشده است" یا "از بالا آزاد نیست" ضروری بود. در نسخه مدرن زبان، چنین عباراتی بسیار عادی تر نوشته می شود: "سلول روی آن نقاشی نشده است"، "بالا آزاد نیست".

کوشنیرنکو A.G.، Lebedev G.V.، Svoren R.A. مبانی انفورماتیک و علوم کامپیوتر. M .: آموزش و پرورش، 1990، 1991، 1993، 1996.

متأسفانه، ناممکن است الگوریتم «تا آخر راه بروید» در «کومیر»، زیرا «قبل» کلمه کلیدیزبان

12 سخنرانی در مورد اینکه دوره علوم کامپیوتر مدرسه برای چیست و چگونه آن را آموزش دهیم: A.G. کوشنیرنکو، جی.وی. لبدف // ابزار. مسکو: آزمایشگاه دانش پایه، 2000.

کارت های وظیفه

    در بین n-اعداد صحیح وارد شده از صفحه کلید تعداد منفی را پیدا کنید

    دو عدد دلخواه داده شده است. در حالی که محصول آنها کمتر از 100 است، هر عدد را 2 عدد افزایش دهید و اعداد نهایی را روی مانیتور نمایش دهید

    N-اعداد صحیح به ترتیب وارد می شوند. تعداد پنج ها را در یک دنباله پیدا کنید

    N-اعداد صحیح به ترتیب وارد می شوند. تفاوت بین مقادیر حداکثر و حداقل اعداد داده شده را پیدا کنید

    در بین n-اعداد صحیح وارد شده از صفحه کلید تعداد منفی را پیدا کنید

    دو عدد دلخواه داده شده است. در حالی که محصول آنها کمتر از 100 است، هر عدد را 2 عدد افزایش دهید و اعداد نهایی را روی مانیتور نمایش دهید

    N-اعداد صحیح به ترتیب وارد می شوند. تعداد پنج ها را در یک دنباله پیدا کنید

    N-اعداد صحیح به ترتیب وارد می شوند. تفاوت بین مقادیر حداکثر و حداقل اعداد داده شده را پیدا کنید

    در بین n-اعداد صحیح وارد شده از صفحه کلید تعداد منفی را پیدا کنید

    دو عدد دلخواه داده شده است. در حالی که محصول آنها کمتر از 100 است، هر عدد را 2 عدد افزایش دهید و اعداد نهایی را روی مانیتور نمایش دهید

    N-اعداد صحیح به ترتیب وارد می شوند. تعداد پنج ها را در یک دنباله پیدا کنید

    N-اعداد صحیح به ترتیب وارد می شوند. تفاوت بین مقادیر حداکثر و حداقل اعداد داده شده را پیدا کنید

    در بین n-اعداد صحیح وارد شده از صفحه کلید تعداد منفی را پیدا کنید

    دو عدد دلخواه داده شده است. در حالی که محصول آنها کمتر از 100 است، هر عدد را 2 عدد افزایش دهید و اعداد نهایی را روی مانیتور نمایش دهید

    N-اعداد صحیح به ترتیب وارد می شوند. تعداد پنج ها را در یک دنباله پیدا کنید

    N-اعداد صحیح به ترتیب وارد می شوند. تفاوت بین مقادیر حداکثر و حداقل اعداد داده شده را پیدا کنید

آشنایی با برنامه کومیر تسلط بر مبانی برنامه نویسی.

در آن، دانش آموزان می توانند مهارت های عملی در ایجاد و اشکال زدایی یک الگوریتم، کار با هنرمندانی مانند Robot، Draftsman، Aquarius، Grasshopper، Turtle به دست آورند.

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

هدف توسعه :

دانلود:


پیش نمایش:

توسعه روشی در انفورماتیک.

موضوع: "ربات مجری در برنامه کومیر در درس علوم کامپیوتر"

مدرس فناوری "انفورماتیک و فناوری اطلاعات و ارتباطات"

یادداشت توضیحی

هدف توسعه: برای مطالعه امکانات برنامه نویسی به عنوان مثال یک ربات مجری خاص با استفاده از محیط IDC. دادن مهارت های عملی برای کار با مجری.

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

دانش آموزان باید بدانند:

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

دانش آموزان باید بتوانند:

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

درس 1 (2 ساعت) درس 1.

ربات هنرمند.سیستم فرماندهی مجری.

طرح درس.

  1. شرح SKI مجری، محیط مجری.

2. تجزیه و تحلیل الگوریتم های معمولی ربات.

در طول کلاس ها.

توضیحات مجری را در نظر بگیرید.

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

ربات اسکی : دستورات ساده: بالا، پایین، چپ، راست، رنگ.

دستورات بولی: (بررسی شرایط)

بالا رایگان پایین رایگان

چپ آزاد راست آزاد.

اتصالات منطقی: AND، NOT، OR:

مثال: (نه آزاد چپ) یا (نه راست آزاد)

فرمان شعبهدستور حلقه:

اگر شرط سپس nts while شرط

سری دستورات سری

همه kts

(در KIMهای سال 2009، دستورات ربات با کودکان معمولی متفاوت بود، که منجر بهگیجی :)

فرمان شعبهدستور حلقه:

اگر شرط سپس nts در حالی که شرط باید انجام شود

سری دستورات سری

پایان پایان

نمای کلی پنجره برنامه کومیر. محیط گرافیکی ربات:

در CMM های نسخه آزمایشی 2010، فرمت فرمان به تغییر یافته استمعمولی

روش ایجاد الگوریتم:

1. تیم ها ابزارها -ویرایش محیط شروعدیوارها را در قسمت Robot بکشید و ربات را در موقعیت اولیه خود قرار دهید.

2. تیم ها Robot - تغییر محیط شروعمحیط جدید را حفظ کنید

3. تیم ها درج - از ربات استفاده کنیدمجری را مشخص کنید

4. در پنجره سند، الگوریتم را با استفاده از منو یادداشت کنیددرج کنید.

5. با استفاده از دستورات Execution - برای اجرای الگوریتم به صورت پیوسته (یا گام به گام) اجرا کنید.

6. نتیجه الگوریتم را در نظر بگیرید و در صورت لزوم آن را رفع اشکال کنید.

درس 1 (2 ساعت) درس 2.

کار عملی "ترسیم الگوریتم های خطی ".

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

  1. یک ربات در یک نقطه دلخواه در میدان. سلول های Robot 4 را با نقاشی روی آنها به سمت راست حرکت دهید.
  2. با کشیدن مربعی با ضلع 4 خانه روی تخته، یک محیط شروع جدید ایجاد کنید. تنظیم را به عنوان نقطه شروع خود ذخیره کنید.
  3. با ترسیم یک راهرو با مسیرهای پیاده روی در دیوارهای زمین، یک محیط شروع جدید ایجاد کنید. اثاثیه را به عنوان obst2.fil ذخیره کنید. محیط شروع را به محیط تازه ایجاد شده تغییر دهید.

درس 2 (2 ساعت) درس 1.

موضوع : انشعاب و اصلاح متوالی الگوریتم.

تجزیه و تحلیل وظایف CMM با استفاده از Robot Performer.

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

alg kim 2009

زود

اگر از پایین آزاد نیست

سپس راست

همه

اگر از پایین آزاد نیست

سپس راست

همه

اگر از پایین آزاد نیست

سپس راست

همه

باهم

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

alg kim 2010

زود

اگر از پایین آزاد نیست

سپس راست

همه

اگر از پایین آزاد نیست

سپس راست

همه

اگر از پایین آزاد نیست

سپس راست

همه

باهم

NS. برده شماره 14. کامپایل و رفع اشکال الگوریتم های انشعاب

وظایف به پیوست مراجعه کنید.

درس 3. الگوریتم های چرخه ای درس 1-2

هدف: برای آشکار کردن ماهیت مفهوم چرخه در الگوریتم ها، نشان دادن اشکال چرخه نوشتن به الگوریتم ها، دادن مهارت برای ایجاد و نوشتن الگوریتم های چرخه ای.

NS. برده شماره 15. کامپایل و رفع اشکال الگوریتم های چرخه ای

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

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

alg

زود

nts تا اینجا در سمت راست رایگان است

رنگ کردن به سمت راست

kts

nts در حالی که زیر رایگان است

رنگ کردن راه پایین

kts

nts تا زمانی که پایین آزاد شود

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

kts

باهم

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

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

alg

زود

nts تا اینجا در سمت راست رایگان است

به سمت راست؛ رنگ کردن

kts

باهم

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

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

alg uch3

زود

nts تا (نه آزادانه از بالا) یا (نه آزادانه از پایین)

به سمت راست

اگر (از بالا رایگان نیست) و (نه از پایین رایگان)

سپس

رنگ کردن

همه

kts

باهم

4. الگوریتمی بسازید که تمام سلول های اطراف دیوار مستطیلی را رنگ آمیزی کند.

alg uch4

زود

رنگ کردن

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

رنگ کردن

kts

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

nts تا زمانی که پایین آزاد شود

رنگ کردن

kts

رنگ کردن، پایین

nts هنوز آزاد نشده است

رنگ کردن

kts

رنگ کردن ؛ چپ

nts تا بالا آزاد شود

رنگ کردن به سمت چپ؛

kts

باهم

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

alg uch5

زود

به سمت راست

nts تا زمانی که پایین آزاد شود

رنگ کردن به سمت راست

kts

رنگ کردن راه پایین

nts تا اینجا در سمت چپ رایگان است

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

kts

nts هنوز آزاد نشده است

رنگ کردن راه پایین

kts

رنگ کردن، چپ، رنگ کردن بالا

nts تا بالا آزاد شود

رنگ کردن بالا

kts

nts تا بالا آزاد شود

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

kts

باهم

درس 4 درس 1

الگوریتم های کمکی.

هدف: معرفی مفهوم الگوریتم های اصلی و کمکی؛ قوانین استفاده از الگوریتم کمکی را توضیح دهید. نمونه هایی از الگوریتم ها را با استفاده از ابزار کمکی جدا کنید.

طرح درس

1. معرفی اصطلاحات جدید (الگوریتم اصلی و کمکی، فراخوانی) و توضیح مفاهیم جدید.

2. تجزیه و تحلیل نمونه هایی از حل مسائل با استفاده از یک الگوریتم کمکی.

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

در فرآیند حل مسئله، هر الگوریتم کمکی می تواند در صورت لزوم به الگوریتم های کمکی کوچکتر تقسیم شود.

دستور اجرای الگوریتم کمکی نامیده می شودچالش و در بدنه الگوریتم اصلی نوشته شده است.

یک الگوریتم مشابه را می توان به عنوان اصلی و کمکی در رابطه با سایر الگوریتم ها در نظر گرفت. در یک زبان الگوریتمی ابتدا الگوریتم اصلی نوشته می شود و سپس الگوریتم های کمکی در زیر نوشته می شود.

وظیفه 1:

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

راه حل

تجزیه روی تخته:

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

درس 4 درس 2

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

هدف : القای مهارت های عملی در ساخت الگوریتم ها با روش پالایش متوالی.

طرح درس

1. کار به طور کامل بر روی کامپیوتر انجام می شود. دانش آموزان تکالیف را دریافت کرده و در محیط نرم افزار Kumir انجام می دهند. نتایج کار به عنوان فایل برای تأیید بعدی ذخیره می شود.

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

وظیفه 2 با استفاده از موارد کمکی، الگوریتمی برای رنگ آمیزی سلول هایی که عدد 1212 را تشکیل می دهند ایجاد کنید.

مشق شب: الگوریتمی بسازید که تصویر زیر را ترسیم کند: از دو الگوریتم کمکی برای حل مسئله استفاده کنید.

درس 5 درس 1-2

تست

ترسیم الگوریتم در محیط ربات اجرا کننده.

هدف: بررسی دانش به دست آمده در ایجاد و توانایی تجزیه و تحلیل الگوریتم ها در محیط نرم افزار Kumir.

تکالیف برای کار آزمایشیبر اساس سطوح دشواری تقسیم می شوند و شامل 3 کار با اجرای Robot (1 و 2 کار - برای شاخه و چرخه، 3 کار با - برای استفاده از یک الگوریتم کمکی.) متون وظایف در پیوست آورده شده است.

تنظیمات اولیه و نهایی و الگوریتم های ایجاد شده به صورت فایل ثبت می شود.

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

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

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

اسکات انجام دهید

اسکات انجام دهید

اسکات انجام دهید

اسکات انجام دهید

اسکات انجام دهید

اسکات انجام دهید

اسکات انجام دهید

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

بدین ترتیب الگوریتم خطی ، جایی که همان دستورات تکرار می شود، می توانیم صادر کنیم در قالب یک الگوریتم چرخه ای- مثل آن:

7 بار تکرار کنید

اسکات انجام دهید

پایان چرخه

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

انواع چرخه ها

حلقه با شمارنده.

دوچرخه سواری با شمارندهزمانی استفاده می شود که از قبل مشخص شده باشد که چند تکرار باید انجام شود. در مثال بالا اسکوات دقیقاً همینطور است.

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

nts<تعداد تکرار> بار

<команда 1>

<команда 2>

<команда n>

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

بیایید با یک مثال به این موضوع نگاهی بیندازیم.

در ابتدا ربات در قفس سمت چپ بالا قرار داشت.

بیایید با حل خطی مسئله شروع کنیم. در این حالت، روی سلول فعلی نقاشی می کنیم و 1 سلول را به سمت راست حرکت می دهیم و برنامه به شکل زیر خواهد بود:
از ربات استفاده کنید
alg
زود

رنگ کردن

به سمت راست

رنگ کردن

به سمت راست

رنگ کردن

به سمت راست

رنگ کردن

به سمت راست

رنگ کردن

به سمت راست

رنگ کردن

به سمت راست

رنگ کردن

به سمت راست

همانطور که می بینید، دستورات نقاشی از سمت راست و بالا 7 بار تکرار می شود. حالا بیایید برنامه را با استفاده از یک حلقه بازنویسی کنیم. به هر حال، برای درج یک چرخه در برنامه خود، می توانید به منو بروید درج کنیدمورد را انتخاب کنید nts-raz-ktsیا یکی از کلیدهای ترکیبی را فشار دهید Esc، P(حرف روسی P) یا اسک، اچ(حرف لاتین H). و کلیدها باید به صورت متوالی فشار داده شوند- ابتدا Esc را رها کنید و فقط سپس P یا H.

بنابراین، ما برنامه حلقه شدهبه این صورت خواهد بود:

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

nts 7 بار

رنگ کردن

به سمت راست

اگر آن را اجرا کنیم، می بینیم که نتیجه یکسان است - 7 سلول پر شده است. با این حال، برنامه از نظر الگوریتمی کوتاه تر و بسیار هوشمندتر شده است!

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

حلقه با شرط.

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

به تربیت بدنی برگردیم و مشکل را تغییر دهیم. از این گذشته، ممکن است کسی 7 اسکات انجام ندهد، در حالی که دیگری قادر به انجام 27 اسکات است. آیا می توان این را در هنگام ایجاد یک چرخه در نظر گرفت؟ البته. فقط اکنون از شمارنده (تعداد تکرارها) استفاده نمی کنیم، بلکه از یک شرط استفاده می کنیم. به عنوان مثال، در حالی که خسته نیستید، اسکات انجام دهید. در این صورت فرد تعداد مشخصی اسکات انجام نمی دهد، بلکه تا زمانی که خسته شود اسکات را انجام می دهد. و حلقه ما در یک زبان انتزاعی به شکل زیر خواهد بود:

در حالی که خسته نشده

اسکات انجام دهید

پایان چرخه

کلمات در مورد ما خسته نمی شوند - این یک شرط است. وقتی درست باشد، حلقه اجرا می شود. اگر false (خسته) باشد بدنه حلقه اجرا نمی شود. ربات مجری چند شرط دارد

آزاد از بالا

از پایین آزادانه

آزادانه ترک کرد

حق آزادانه

دیوار بالا

دیوار پایین

دیوار سمت چپ

دیوار سمت راست

اما در شرط مسئله 19 GIA فقط 4 مورد اول مشخص شده است پس فقط از آنها استفاده خواهیم کرد.

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

ابتدا فرمول بندی کنیم الگوریتم کلامی- یعنی آنچه را که ربات باید انجام دهد را با کلمات توصیف می کنیم. این الگوریتم چیزی شبیه به این خواهد بود:

« در حالی که در سمت راست هستید، آزادانه یک قدم به سمت راست بردارید و روی قفس نقاشی کنید. »

در نتیجه، ربات از میان تمام سلول‌ها به سمت راست می‌گذرد و تا زمانی که دیواری در سمت راست وجود داشته باشد، روی آنها نقاشی می‌کند.

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

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

nts تا اینجا در سمت راست رایگان است

به سمت راست

رنگ کردن

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