Как написать алгоритм программы кумир

Представьте себе клетчатое поле (как лист из тетради в клеточку) на котором находится некий объект, который мы назовем Робот. Используя специальные команды, мы можем этим Роботом управлять — перемещать его по клеткам, закрашивать клетки. И в большинстве случаев наша задача будет заключаться в том, чтобы написать такую программу для Робота, выполняя которую он будет закрашивать определенные клетки.

Настройка среды Кумир для исполнителя Робот.

Запущенная программа Кумир выглядит так.

Среда Кумир, исполнитель Робот

Первым делом мы должны раскомментировать первую строку нашей программы, убрав символ |

Раскомментируем первую строку

Таким образом, программа станет выглядеть так:

использовать Робот

алг

нач

кон

Удалив символ |, мы тем самым указали Кумиру на то, что будем работать с исполнителем Робот. Если этого не сделать, то при написании программы мы столкнемся с ошибкой «Нет такого алгоритма». Поэтому очень важно при создании новой программы раскомментировать первую строку. Теперь все готово для дальнейшей работы.

Но перед началом, нам необходимо задать стартовую обстановку Робота и познакомиться с простыми командами исполнителя Робот.

Стартовая обстановка Робота

Перед началом выполнения программы необходимо задать исполнителю Робот стартовую обстановку. Это значит установить Робота в нужную позицию, расставить стены, закрасить нужные клетки и т. п. Этот шаг очень важен. Если его проигнорировать, то программа может работать неправильно или вообще завершится аварийно.

Что такое стартовая обстановка?

Наш Робот находится в некой среде — это клетчатое поле, размер которого известен. Так же на этом поле могут находится стены и закрашенные клетки, а сам Робот может находится в любой клетке. Так вот — стартовая обстановка задает положение Робота на поле и расположение всех остальных элементов — стен, закрашенных клеток. И перед тем, как писать алгоритм для Робота необходимо задать стартовую обстановку. Насколько это важно давайте рассмотрим на примере. Пусть есть две стартовые обстановки:

Стартовая обстановка 1

Стартовая обстановка 1

Стартовая обстановка 2

Стартовая обстановка 2

Отличаются они только тем, что в стартовой обстановке 2 справа от Робота находится стена.

Если наша программа начнется с команды, которая переместит Робота на одну клетку вправо (о простых командах Робота), то в первом случае (стартовая обстановка 1) Робот выполнит эту команду, а во втором программа завершится аварийно, так как Робот не может ходить сквозь стены. Получается, что одна и та же программа в первом случае работает, а во втором приводит к ошибке. Именно поэтому так важно задавать стартовую обстановку для Робота.

Как задать стартовую обстановку?

Запустив среду Кумир в меню Инструменты выбираем пункт Редактировать стартовую обстановку Робота

Редактировать стартовую обстановку Робота

Откроется окно с синим фоном. Это и есть стартовая обстановка Робота. И мы ее можем изменить.

По-умолчанию, размер окна 10 на 15 клеток. Если нам необходимо изменить количество строк и столбцов, то щелкаем Обстановка -> Новая обстановка и задаем необходимые значения

Задаем размер поля

Далее,

  • чтобы переместить Робота в новую позицию, щелкаем по нему левой кнопкой мыши и не отпуская ее тащим Робота в нужное место.
  • чтобы добавить/удалить стену, щелкаем левой кнопкой мыши по границе клетки.
  • чтобы закрасить/очистить клетку, щелкаем по ней левой кнопкой мыши
  • чтобы добавить или убрать точку в клетку щелкаем по клетке, удерживая клавишу Ctrl

После того, как мы задали нужную стартовую обстановку, ее необходимо сохранить (Обстановка -> Сохранить или Обстановка -> Сохранить как). После этого закрываем окно Обстановка и в основном окне программы выбираем Робот -> Сменить стартовую обстановку

Сменить стартовую обстановку Робота

Находим сохраненную ранее обстановку и загружаем ее. После этого убедимся, что загрузили правильную стартовую обстановку, щелкнув по кнопке Показать окно Робота

Показать окно Робота

Если в окне с зеленым фоном (текущая обстановка Робота) вы увидите вашу обстановку, то можно переходить к написанию алгоритма, используя простые команды Робота.

Исполнитель Робот. Простые команды.

У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота. Всего их 5:

вверх

вниз

влево

вправо

закрасить

Результат выполнения этих команд понятен из их названия:

вверх — переместить Робота на одну клетку вверх

вниз — переместить Робота на одну клетку вниз

влево — переместить Робота на одну клетку влево

вправо — переместить Робота на одну клетку вправо

закрасить — закрасить текущую клетку (клетку в которой находится Робот).

Эти команды можно писать с клавиатуры, а можно использовать горячие клавиши (нажав их команды будут вставляться автоматически):

вверх — Escape, Up (стрелка вверх)

вниз — Escape, Down (стрелка вниз)

влево — Escape, Left (стрелка влево)

вправо — Escape, Right (стрелка вправо)

закрасить — Escape, Space (пробел)

Обратите внимание, что набирать нужную комбинацию горячих клавиш нужно не привычным нам способом! Мы привыкли нажимать клавиши одновременно, а здесь их нужно нажимать последовательно.

Теперь мы готовы написать первый алгоритм для Робота. Предлагаю начать с простого — нарисуем квадрат со стороной 3 клетки. Поехали!

Запускаем Кумир, настраиваем его. Можно начинать писать программу? Конечно нет! Мы же не задали стартовую обстановку! Делаем это. Предлагаю использовать вот такую:

Стартовая обстановка Робота

Вот теперь все готово. Начинаем писать программу. Пока она выглядит так

Первая программа для Робота

Удаляем символ «|» и называем наш алгоритм «Квадрат»

Алгоритм квадрат

Предлагаю рисовать квадрат, двигаясь по часовой стрелке. Для начала закрасим текущую клетку, дав команду закрасить. Потом делаем шаг вправо и опять закрашиваем клетку. И еще раз шаг вправо и закрасить.

Первые шаги

Попробуем запустить программу и посмотреть что же получилось. Для запуска нажимаем F9 или же кнопку на панели инструментов

выполнить программу

В результате мы должны увидеть вот такую картину

Первый результат

Если такое окно Робота у вас не появилось, то на панели инструментов щелкните «Показать окно Робота» или в меню Робот выберите пункт «Показать окно Робота». Продолжаем дальше.

Теперь мы будем двигаться вниз и закрашивать правую сторону квадрата:

вниз

закрасить

вниз

закрасить

Потом пойдем влево, закрашивая нижнюю границу квадрата

влево

закрасить

влево

закрасить

У нас осталась одна незакрашенная  клетка. Закрасим ее

вверх

закрасить

Все готово! В итоге наша программа выглядит так:

использовать Робот

алг Квадрат

нач

закрасить

вправо

закрасить

вправо

закрасить

вниз

закрасить

вниз

закрасить

влево

закрасить

влево

закрасить

вверх

закрасить

кон

А результат ее работы вот так

Результат работы программы

Итак, сегодня мы с вами написали программу, используя простые команды Робота. Рекомендую попрактиковаться самостоятельно — придумать себе задание и написать программу. Это могут быть самые различные фигуры, узоры, буквы. К примеру, попробуйте написать программу, рисующую букву П, Р, Ш, Щ, М. А если получится и захотите поделиться — комментируйте и прикрепляйте результат к комментарию.

Исполнитель Робот. Циклы.

Итак, что такое цикл? Представьте, что мы находимся на уроке физической культуры и перед нами стоит задача сделать 7 приседаний. Это задание можно оформить в виде линейного алгоритма и тогда оно будет выглядеть примерно так:

сделай приседание

сделай приседание

сделай приседание

сделай приседание

сделай приседание

сделай приседание

сделай приседание

Т. е мы повторили команду сделай приседание 7 раз. А есть ли смысл писать 7 одинаковых команд? Может проще дать команду сделай 7 приседаний? Конечно проще и правильнее. Это и есть цикл. Вы можете сами вспомнить примеры циклов из жизни — их довольно много.

Таким образом линейный алгоритм, где повторяются одни и те же команды мы можем оформить в виде циклического алгоритма — примерно так:

повторяй 7 раз

сделай приседание

конец цикла

Вот так, на придуманном нами языке мы оформили цикл. У исполнителя Робот тоже есть возможность записывать циклы. Причем, циклы бывают разные. Тот вариант, который мы только что рассмотрели называется цикл со счетчиком или цикл с параметром.

Виды циклов.

Цикл со счетчиком.

Цикл со счетчиком применяется когда заранее известно сколько повторений необходимо сделать. В примере выше с приседаниями именно такой случай.

Для того, чтобы написать цикл со счетчиком для исполнителя необходимо знать его синтаксис. А он такой:

нц <количество повторений> раз

<команда 1>

<команда 2>

<команда n>

кц

Здесь мы должны указать количество повторений (число) и команды, которые будут повторяться.  Команды, которые повторяются в цикле называют телом цикла.

Давайте рассмотрим это на примере.

Закрасим 7 клеток, как на рисунке. Рекомендую почитать про стартовую обстановку Робота и про его простые команды.

Задание на цикл со счетчиком

Изначально Робот находился в левой верхней клетке.

Давайте для начала решим задачу линейно. В этом случае мы будет закрашивать текущую клетку и перемещаться на 1 клетку вправо и программа будет выглядеть так:
использовать Робот
алг
нач

закрасить

вправо

закрасить

вправо

закрасить

вправо

закрасить

вправо

закрасить

вправо

закрасить

вправо

закрасить

вправо

кон

Как видим, команды закрасить и вправо повторяются 7 раз. Давайте теперь перепишем программу с использованием цикла. Кстати, чтобы вставить цикл в свою программу можно в меню Вставка выбрать пункт нц-раз-кц или нажать одну из комбинаций клавиш Esc, Р (русская буква Р) или Esc, H (латинская буква H). Причем клавиши надо нажимать последовательно — сначала Esc, отпустить ее и только потом Р или H.

Так вот, наша программа с циклом будет выглядеть так:

использовать Робот

алг

нач

нц 7 раз

закрасить

вправо

кц

кон

Если мы ее запустим, то увидим, что в результате получится тоже самое — 7 закрашенных клеток. Однако программа стала короче и значительно грамотней с алгоритмической точки зрения!

В качестве разминки и закрепления предлагаю самостоятельно написать программу для Робота, которая нарисует квадрат со стороной 7 клеток. Естественно, используя цикл. Жду решения в комментариях.

Цикл с условием.

Вернемся к физкультуре и изменим задачу. Ведь кто-то может и не сделать 7 приседаний, а другой способен сделать 27. Можно ли учесть это при создании цикла? Конечно. Только теперь мы будем использовать не счетчик (количество повторений), а условие. К примеру, пока не устал, делай приседания. В этом случае человек будет делать не конкретное число приседаний, а приседать до тех пор, пока не устанет. И наш цикл на абстрактном языке примет такой вид:

пока не устал

сделай приседание

конец цикла

Слова не устал в нашем случае — это условие. Когда оно истинно, цикл выполняется. Если же оно ложно (устал) тело цикла не будет выполнено. У исполнителя Робот есть несколько условий

сверху свободно

снизу свободно

слева свободно

справа свободно

сверху стена

снизу стена

слева стена

справа стена

Теперь давайте решим следующую задачу для Робота — нарисовать вертикальную линию от левой до правой границы поля использую цикл с условием. Изначально Робот находится в левом верхнем углу.

Давайте сначала сформулируем словесный алгоритм — т. е. опишем словами что нужно делать Роботу. Этот алгоритм будет звучать примерно так:

«Пока справа свободно делай шаг вправо и закрашивай клетку»

В результате Робот пробежит по всем клеткам вправо и будет их закрашивать до тех пор, пока справа не окажется стена.

Исходный код нашей программы для Робота будет примерно такой:

использовать Робот

алг

нач

нц пока справа свободно

вправо

закрасить

кц

кон

В результате выполнения этой программы мы увидим вот такую картину:

Задание для Робота цикл с условием

Как видим, не хватает только закрашенной первой клетки. Для этого перед циклом необходимо выполнить команду закрасить.

Решение задачи с циклом

Для закрепления прошу написать программу, которая будет делать рамку вокруг рабочего поля Робота независимо от его размера. Конечно же с использованием циклов с условием. В итоге должно получиться так:

Задача для самостоятельного решения

Первые шаги

На предыдущих уроках мы установили среду Кумир, настроили ее для дальнейшей работы и научились задавать стартовую обстановку Робота. Теперь перейдем непосредственно к составлению алгоритмов для Робота с использованием простых команд.

Если вам больше нравится информация в формате видеоуроков, то на сайте есть видеоурок Робот. Простые команды.

У любого исполнителя должна быть система команд (СКИсистема команд исполнителя). Система команд исполнителя — совокупность всех команд, которые может выполнить исполнитель. В качестве примера рассмотрим дрессированную собаку. Она умеет выполнять некоторые команды — «Сидеть», «Лежать», «Рядом» и т. п. Это и есть ее система команд.

Простые команды Робота

У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота. Всего их 5:

  • вверх
  • вниз
  • влево
  • вправо
  • закрасить

Результат выполнения этих команд понятен из их названия:

  1. вверх — переместить Робота на одну клетку вверх
  2. вниз — переместить Робота на одну клетку вниз
  3. влево — переместить Робота на одну клетку влево
  4. вправо — переместить Робота на одну клетку вправо
  5. закрасить — закрасить текущую клетку (клетку в которой находится Робот).

Эти команды можно писать с клавиатуры, а можно использовать горячие клавиши (нажав их команды будут вставляться автоматически):

  • вверх — Escape, Up (стрелка вверх)
  • вниз — Escape, Down (стрелка вниз)
  • влево — Escape, Left (стрелка влево)
  • вправо — Escape, Right (стрелка вправо)
  • закрасить — Escape, Space (пробел)

Обратите внимание, что набирать нужную комбинацию горячих клавиш нужно не привычным нам способом! Мы привыкли нажимать клавиши одновременно, а здесь их нужно нажимать последовательно. К примеру, чтобы ввести команду вверх, нужно нажать Escape, отпустить ее и после этого нажать стрелку вверх. Это нужно помнить.

Теперь мы готовы написать первый алгоритм для Робота. Предлагаю начать с простого — нарисуем квадрат со стороной 3 клетки. Поехали!

Запускаем Кумир, настраиваем его. Можно начинать писать программу? Конечно нет! Мы же не задали стартовую обстановку! Делаем это. Предлагаю использовать вот такую:

Стартовая обстановка Робота

Стартовая обстановка Робота

Вот теперь все готово. Начинаем писать программу. Пока она выглядит так

Первая программа для Робота

Первая программа для Робота

Удаляем символ «|» и называем наш алгоритм «Квадрат»

Алгоритм квадрат

Алгоритм квадрат

Предлагаю рисовать квадрат, двигаясь по часовой стрелке. Для начала закрасим текущую клетку, дав команду закрасить. Потом делаем шаг вправо и опять закрашиваем клетку. И еще раз шаг вправо и закрасить.

Первые шаги

Первые шаги

Попробуем запустить программу и посмотреть что же получилось. Для запуска нажимаем F9 или же кнопку на панели инструментов

выполнить программу

выполнить программу

В результате мы должны увидеть вот такую картину

Первый результат

Первый результат

Если такое окно Робота у вас не появилось, то на панели инструментов щелкните «Показать окно Робота» или в меню Робот выберите пункт «Показать окно Робота«. Продолжаем дальше.

Теперь мы будем двигаться вниз и закрашивать правую сторону квадрата:

вниз

закрасить

вниз

закрасить

Потом пойдем влево, закрашивая нижнюю границу квадрата

влево

закрасить

влево

закрасить

У нас осталась одна незакрашенная  клетка. Закрасим ее

вверх

закрасить

Все готово! В итоге наша программа выглядит так:

использовать Робот

алг Квадрат

нач

закрасить

вправо

закрасить

вправо

закрасить

вниз

закрасить

вниз

закрасить

влево

закрасить

влево

закрасить

вверх

закрасить

кон

А результат ее работы вот так

Результат работы программы

Результат работы программы

Итак, сегодня мы с вами написали программу, используя простые команды Робота. Рекомендую попрактиковаться самостоятельно — придумать себе задание и написать программу. Это могут быть самые различные фигуры, узоры, буквы. К примеру, попробуйте написать программу, рисующую букву П, Р, Ш, Щ, М. А если получится и захотите поделиться — комментируйте и прикрепляйте результат к комментарию.

Автор:

Методическая разработка по информатике.

Тема: «Исполнитель Робот в программе КуМир  на уроках информатики  »

Автор: Григорьева Ю.А.,

учитель технологии «Информатика и ИКТ»

Пояснительная записка

Цель разработки: изучить возможности программирования на примере конкретного исполнителя Робот  с использованием среды КУМИР; дать практические навыки работы с исполнителем.

Методическая разработка составлена для проведения уроков информатики  Практика на компьютере: работа с учебным исполнителем алгоритмов; составление линейных, ветвящихся и циклических алгоритмов управления исполнителем; составление алгоритмов со сложной структурой; использование вспомогательных алгоритмов (процедур, подпрограмм).

Учащиеся должны знать:

  • что такое исполнитель; СКИ Робота, среду исполнителя Робот;
  • что такое алгоритм ;  в чем состоят основные свойства алгоритма;
  • способы записи алгоритмов: блок-схемы, учебный алгоритмический язык;  основные алгоритмические конструкции: следование, ветвление, цикл; структуры
  • алгоритмов;  назначение    вспомогательных    алгоритмов;    технологии    построения    сложных алгоритмов:

Учащиеся должны уметь:        

  • понимать   описания   алгоритмов   на   учебном алгоритмическом языке;
  • выполнить трассировку алгоритма для известного исполнителя;
  • составлять линейные, ветвящиеся и циклические алгоритмы управления  исполнителя Робот; выделять подзадачи; определять и использовать вспомогательные алгоритмы.

Занятие 1 (2 часа)                Урок 1.

Исполнитель Робот. Система команд исполнителя.

План урока.

  1. Описание СКИ исполнителя, среды исполнителя.

2.Разбор типичных алгоритмов Робота.

Ход урока.

Рассмотрим описание исполнителя.

Среда исполнителя: Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки.

 СКИ Робота: простые команды: вверх, вниз, влево, вправо, закрасить.

Команды логические: (проверки условия)

сверху свободно                 снизу свободно

слева свободно                 справа свободно.

Логические связки: И,НЕ, ИЛИ:

Пример:(Не слева свободно) или (не справа свободно)

Команда ветвления:                                        команда цикла:        

         если условие то                                                нц пока условие

              серия команд                                                     серия команд

всё                                                                кц

(В КИМах 2009 года команды Робота отличались от привычных детям, что приводило к путанице: )

Команда ветвления:                                        команда цикла:        

         если условие то                                                нц пока условие делать

              серия команд                                                     серия команд

конец                                                                    конец

Общий вид окна программы Кумир.              Графическая среда Робота:

В КИМах демонстрационного варианта 2010 года формат команд изменен на  привычный

Порядок  создания алгоритма:

1.Командами  Инструменты  -Редактировать стартовую обстановку  нарисовать на поле Робота стены и установить Робота в начальное положение.

2.Командами Робот- Сменить стартовую обстановку  сохранить новую обстановку.

3.Командами Вставка- Использовать Робот указать исполнителя.

4.В окне документа записать алгоритм, используя меню Вставка.

5.Командами Выполнение –выполнить непрерывно (или по шагам) запустить алгоритм.

6.Рассмотреть результат выполнения алгоритма и при необходимости произвести его отладку.

Занятие 1 (2 часа)                Урок 2.

Практическая  работа « Составление линейных алгоритмов».

Задания: 1.Робот в произвольной точке поля. Закрасить клетку сверху, снизу и справа от исходного положения.

  1. Робот в произвольной точке поля. Передвинуть Робот на 4 клетки вправо, закрасив их.
  2. Создайте новую стартовую обстановку, нарисовав на поле квадрат со стороной 4 клетки.  Сохраните обстановку как стартовую.
  3. Создайте новую стартовую обстановку, нарисовав на поле коридор с проходами в стенах. Сохраните обстановку как obst2.fil. Смените стартовую обстановку на вновь созданную.

Занятие 2 (2 часа)                Урок 1.

Тема: Ветвление и последовательная детализация алгоритма.

Разбор задач КИМов  с использованием исполнителя Робот.

использовать Робот

алг ким 2009

нач

если не снизу свободно

то вправо

все

если не снизу свободно

то вправо

все

если не снизу свободно

то вправо

все

кон

использовать Робот

алг ким 2010

нач

если не снизу свободно

то вправо

все

если не снизу свободно

то вправо

все

если не снизу свободно

то вправо

все

кон

Пр. раб. №14. Составление и отладка алгоритмов ветвления

Задания. См. Приложение.

Занятие  3. Циклические алгоритмы. Урок 1-2

Цель: раскрыть сущность понятия цикла в алгоритмах, показать формы записи циклов алгоритмах, дать навыки создания и записи циклических алгоритмов.

Пр. раб. №15. Составление и отладка  циклических алгоритмов

1.Составьте алгоритм, закрашивающий все внутренние клетки, прилегающие к стене.

использовать Робот

алг

нач

нц пока справа свободно

закрасить; вправо

кц

нц пока снизу свободно

закрасить; вниз

кц

нц пока не снизу свободно

закрасить; влево

кц

кон

2.Составить алгоритм, закрашивающий все клетки между Роботом и стеной. Расстояние до стены неизвестно.

использовать Робот

алг

нач

нц пока справа свободно

вправо; закрасить

кц

кон

3.Составить алгоритм, закрашивающий все клетки, находящиеся  между двумя  стенами.

использовать Робот

алг уч3

нач

нц пока (не сверху свободно) или (не снизу свободно)

вправо

если (не сверху свободно) и (не снизу свободно)

то

закрасить

все

кц

кон

 4.Составить алгоритм, закрашивающий все клетки вокруг прямоугольной стены.

алг уч4

нач

закрасить;вверх

нц пока не справа свободно

закрасить;вверх;

кц

закрасить;вправо

нц пока не снизу свободно

закрасить;вправо;

кц

закрасить;вниз

нц пока не слева свободно

закрасить;вниз;

кц

закрасить;влево

нц пока не сверху свободно

закрасить; влево;

кц

кон

использовать Робот

алг уч5

нач

вправо

нц пока не снизу свободно

закрасить; вправо

кц

закрасить; вниз

нц пока слева свободно

закрасить; влево

кц

нц пока не слева свободно

закрасить; вниз

кц

закрасить;влево;закрасить; вверх;

нц пока сверху свободно

закрасить; вверх

кц

нц пока не сверху свободно

закрасить; влево

кц

кон

Занятие 4                                                                                              Урок 1

Вспомогательные алгоритмы.

Цель: ввести понятие основного и вспомогательного алгоритма; объяснить правила использования вспомогательного алгоритма; разобрать примеры алгоритмов с использованием вспомогательного.

План урока

1.Ввод новых терминов (основного и вспомогательного алгоритма, вызова) и объяснение новых понятий.

2.Разбор примеров решения задач с применением вспомогательного алгоритма.

При решении некоторых задач удобно разбить их на более мелкие подзадачи, каждую из которых можно оформит как самостоятельный алгоритм. В этом случае сначала составляется так называемый основной алгоритм, в котором для решения подзадач используются вызовы вспомогательных алгоритмов, которые дописываются позднее. Такой способ решения называется методом последовательного уточнения. Он позволяет работать над проектом группе программистов, каждый при этом решает свою подзадачу.

В процессе решения задачи каждый вспомогательный алгоритм может при необходимости быть разбит на более мелкие вспомогательные алгоритмы.

Команда выполнения вспомогательного алгоритма называется вызовом и записывается в теле основного алгоритма.

Один и тот же алгоритм может рассматриваться как основной  и вспомогательный по отношению к другим алгоритмам. В алгоритмическом языке сначала записывается основной алгоритм, ниже подряд записываются вспомогательные.

Задача1:

Робот находится в верхнем левом углу поля. Стен и закрашенных клеток нет. Составить алгоритм, с использованием вспомогательного, рисующий четыре крестика на одной горизонтали. Конечное положение Робота может быть произвольным.

Решение

Разбор на доске:

Задача2.  Робот находится в верхнем левом углу поля. Стен и закрашенных клеток нет. Составьте алгоритм, который закрашивает в шахматном порядке квадрат 8 х 8. Конечное положение Робота может быть произвольным.

Занятие 4                                                                                              Урок 2

Практическая работа на ПК «Решение задачи с использованием вспомогательных алгоритмов».

Цель: привить практические навыки построения алгоритмов методом последовательного уточнения.

План урока

1.Задание полностью проходит за ПК.  Учащиеся   получают задания и выполняют их в программной среде Кумир. Результаты Работы сохраняются в виде файлов для последующей проверки.

Задача1. Робот находится в нижнем левом углу поля. Стен и закрашенных клеток нет. Составьте алгоритм, который закрашивает 6 вертикальных полос одинаковой  длины в 6 клеток. Конечное положение Робота может быть произвольным.

Задача2.Используя вспомогательные, составьте алгоритм для закрашивания клеток, образующих число 1212.

Домашнее задание: Придумайте алгоритм, рисующий следующее изображение: Для решения задачи примените два вспомогательных алгоритма.

Занятие 5                                                                                              Урок  1-2

Контрольная работа

«Составление алгоритма в среде исполнителя Робот».

Цель: проверить полученные знания по созданию  и умению анализировать алгоритмы  в  программной среде Кумир.

Задания для контрольной работы делятся по уровням сложности и включает в себя 3 задачи с исполнителем Робот (1 и 2  задача –на  ветвление и циклы, 3 задача с- на использование вспомогательного алгоритма.) Тексты заданий приводятся в приложении.

Исходные и конечные обстановки и созданные алгоритмы записываются в виде файла.

Оценка выставляется соответственно уровню сложности задания. Ученик вправе сам выбрать тип задания.

Программа Кумир Исполнитель Робот

Программа Кумир

Исполнитель Робот

Кто такой исполнитель Робот?   Представьте себе клетчатое поле (как лист из тетради в клеточку) на котором находится некий объект, который мы назовем Робот. Используя специальные команды, мы можем этим Роботом управлять — перемещать его по клеткам, закрашивать клетки. И в большинстве случаев наша задача будет заключаться в том, чтобы написать такую программу для Робота, выполняя которую он будет закрашивать определенные клетки.

Кто такой исполнитель Робот?

  • Представьте себе клетчатое поле (как лист из тетради в клеточку) на котором находится некий объект, который мы назовем Робот. Используя специальные команды, мы можем этим Роботом управлять — перемещать его по клеткам, закрашивать клетки. И в большинстве случаев наша задача будет заключаться в том, чтобы написать такую программу для Робота, выполняя которую он будет закрашивать определенные клетки.

Настройка среды Кумир для исполнителя Робот Запущенная программа Кумир выглядит так.

Настройка среды Кумир для исполнителя Робот

  • Запущенная программа Кумир выглядит так.

 Стартовая обстановка Робота Перед началом выполнения программы необходимо задать исполнителю Робот стартовую обстановку. Это значит установить Робота в нужную позицию, расставить стены, закрасить нужные клетки и т. п. Этот шаг очень важен. Если его проигнорировать, то программа может работать неправильно или вообще завершится аварийно.

Стартовая обстановка Робота

  • Перед началом выполнения программы необходимо задать исполнителю Робот стартовую обстановку. Это значит установить Робота в нужную позицию, расставить стены, закрасить нужные клетки и т. п. Этот шаг очень важен. Если его проигнорировать, то программа может работать неправильно или вообще завершится аварийно.

Нажмите на Редактировать обстановку

Нажмите на Редактировать обстановку

Перенесите Робота в нужное место, установите стены и укажите клетки, которые необходимо закрасить:

  • Перенесите Робота в нужное место, установите стены и укажите клетки, которые необходимо закрасить:

Исполнитель Робот.  Простые команды. вверх вниз влево вправо закрасить  Результат выполнения этих команд понятен из их названия: вверх — переместить Робота на одну клетку вверх вниз — переместить Робота на одну клетку вниз влево — переместить Робота на одну клетку влево вправо — переместить Робота на одну клетку вправо закрасить — закрасить текущую клетку (клетку в которой находится Робот).

Исполнитель Робот. Простые команды.

  • вверх
  • вниз
  • влево
  • вправо
  • закрасить

Результат выполнения этих команд понятен из их названия:

  • вверх — переместить Робота на одну клетку вверх
  • вниз — переместить Робота на одну клетку вниз
  • влево — переместить Робота на одну клетку влево
  • вправо — переместить Робота на одну клетку вправо
  • закрасить — закрасить текущую клетку (клетку в которой находится Робот).

Пример алгоритма Сначала необходимо написать фразу: использовать Робот  Если известно сколько клеток нужно закрасить, то алгоритм решения будет следующим!

Пример алгоритма

  • Сначала необходимо написать фразу:
  • использовать Робот

Если известно сколько клеток нужно закрасить, то алгоритм решения будет следующим!

Задание №1 Напишите программу для решения следующей задачи, если известно сколько клеток нужно закрасить

Задание №1

  • Напишите программу для решения следующей задачи, если известно сколько клеток нужно закрасить

Циклы 1.  Цикл со счетчиком  применяется когда заранее известно сколько повторений необходимо сделать. нц  раз   …  кц Здесь мы должны указать количество повторений (число) и команды, которые будут повторяться.  Команды, которые повторяются в цикле называют  телом цикла.

Циклы

  • 1. Цикл со счетчиком  применяется когда заранее известно сколько повторений необходимо сделать.

нц раз

кц

Здесь мы должны указать количество повторений (число) и команды, которые будут повторяться.  Команды, которые повторяются в цикле называют  телом цикла.

Пример для цикла со счетчиком

Пример для цикла со счетчиком

Задание №2 Напишите программу для решения следующей задачи, используя цикл со счетчиком

Задание №2

  • Напишите программу для решения следующей задачи, используя цикл со счетчиком

2.  Цикл с условием- пока условие истинно-цикл выполняется, если ложно-то не выполняется У исполнителя Робот есть несколько условий сверху свободно снизу свободно слева свободно справа свободно сверху стена снизу стена слева стена справа стена Можно использовать частицы: НЕ, И, ИЛИ

  • 2. Цикл с условием- пока условие истинно-цикл выполняется, если ложно-то не выполняется
  • У исполнителя Робот есть несколько условий

сверху свободно

снизу свободно

слева свободно

справа свободно

сверху стена

снизу стена

слева стена

справа стена

  • Можно использовать частицы: НЕ, И, ИЛИ

Структура цикла с условием  нц пока справа свободно  вправо  закрасить  кц

Структура цикла с условием

нц пока справа свободно

вправо

закрасить

кц

Пример цикла с условием

Пример цикла с условием

Задание №3 Напишите программу для решения следующей задачи, используя цикл с условием:

Задание №3

  • Напишите программу для решения следующей задачи, используя цикл с условием:

Задание №4 Напишите программу для решения следующей задачи, используя циклы с условием:

Задание №4

  • Напишите программу для решения следующей задачи, используя циклы с условием:

Решение для задачи №4

Решение для задачи №4

Пример задачи

Пример задачи

Решение задач: 1. 2. Робота  надо  перевести  из  стартового  положения  в  конечное, закрашивая стенки

Решение задач:

  • 1.
  • 2. Робота  надо  перевести  из  стартового  положения  в  конечное, закрашивая стенки

Ответы 1. 2.

Ответы

  • 1.
  • 2.

Задание №5 На бесконечном поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится сверху от стены в левом ее конце. На рисунке приведено расположение робота относительно стены (робот обозначен  буквой «Р»):

Задание №5

  • На бесконечном поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится сверху от стены в левом ее конце. На рисунке приведено расположение робота относительно стены (робот обозначен буквой «Р»):

Ответ на задание №5  нц пока не (снизу свободно)   вверх   закрасить   вниз   вправо  кц Начало цикла (нц) и условие (пока не(снизу свободно)) — пишутся на одной строчке.

Ответ на задание №5

  • нц пока не (снизу свободно)

вверх

закрасить

вниз

вправо

кц

Начало цикла (нц) и условие (пока не(снизу свободно)) — пишутся на одной строчке.

Задание №6

Задание №6

Конструкция если сверху свободно  снизу свободно  слева свободно  справа свободно   Эти команды можно использовать вместе с условием «если» , имеющим следующий вид: если  условие  то последовательность команд все   Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм: если справа свободно то вправо закрасить все

Конструкция если

  • сверху свободно  снизу свободно  слева свободно  справа свободно
  • Эти команды можно использовать вместе с условием «если» , имеющим следующий вид:
  • если условие то
  • последовательность команд
  • все
  •  
  • Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
  • если справа свободно то
  • вправо
  • закрасить
  • все

Задание №7 Длины стен неизвестны.  В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.

Задание №7

Длины стен неизвестны.

В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.

Ответ на задание №7 нц пока не свер­ху сво­бод­но за­кра­сить впра­во кц   нц пока свер­ху сво­бод­но впра­во кц   нц пока спра­ва сво­бод­но за­кра­сить впра­во кц   нц пока не спра­ва сво­бод­но за­кра­сить вниз кц   нц пока спра­ва сво­бод­но вниз кц   нц пока не спра­ва сво­бод­но за­кра­сить вниз кц

Ответ на задание №7

нц

пока не свер­ху сво­бод­но

за­кра­сить

впра­во

кц

нц

пока свер­ху сво­бод­но

впра­во

кц

нц

пока спра­ва сво­бод­но

за­кра­сить

впра­во

кц

нц

пока не спра­ва сво­бод­но

за­кра­сить

вниз

кц

нц

пока спра­ва сво­бод­но

вниз

кц

нц

пока не спра­ва сво­бод­но

за­кра­сить

вниз

кц

Задание №8 Длины стен неизвестны.  В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.

Задание №8

Длины стен неизвестны.

В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.

Ответ на задание №8 нц пока свер­ху сво­бод­но вверх кц   нц пока не свер­ху сво­бод­но за­кра­сить влево кц   нц пока свер­ху сво­бод­но влево кц   нц пока не свер­ху сво­бод­но за­кра­сить влево кц   вверх впра­во   нц пока не снизу сво­бод­но за­кра­сить впра­во кц   нц пока снизу сво­бод­но впра­во кц   нц пока не снизу сво­бод­но за­кра­сить впра­во кц

Ответ на задание №8

нц

пока свер­ху сво­бод­но

вверх

кц

нц

пока не свер­ху сво­бод­но

за­кра­сить

влево

кц

нц

пока свер­ху сво­бод­но

влево

кц

нц

пока не свер­ху сво­бод­но

за­кра­сить

влево

кц

вверх

впра­во

нц

пока не снизу сво­бод­но

за­кра­сить

впра­во

кц

нц

пока снизу сво­бод­но

впра­во

кц

нц

пока не снизу сво­бод­но

за­кра­сить

впра­во

кц

Задание №9 Длины стен неизвестны.  В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.

Задание №9

Длины стен неизвестны.

В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.

Ответ на задание №9 нц пока снизу сво­бод­но вниз кц   нц пока не снизу сво­бод­но за­кра­сить влево кц   нц пока снизу сво­бод­но влево кц   нц пока не снизу сво­бод­но за­кра­сить влево кц   вниз впра­во   нц пока не свер­ху сво­бод­но за­кра­сить впра­во кц   нц пока свер­ху сво­бод­но впра­во кц   нц пока не свер­ху сво­бод­но за­кра­сить впра­во кц

Ответ на задание №9

нц

пока снизу сво­бод­но

вниз

кц

нц

пока не снизу сво­бод­но

за­кра­сить

влево

кц

нц

пока снизу сво­бод­но

влево

кц

нц

пока не снизу сво­бод­но

за­кра­сить

влево

кц

вниз

впра­во

нц

пока не свер­ху сво­бод­но

за­кра­сить

впра­во

кц

нц

пока свер­ху сво­бод­но

впра­во

кц

нц

пока не свер­ху сво­бод­но

за­кра­сить

впра­во

кц

Задание №10 Длины стен неизвестны.  В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.

Задание №10

Длины стен неизвестны.

В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.

Ответ на задание №10 нц пока с­ле­ва сво­бод­но влево кц   нц пока не слева сво­бод­но за­кра­сить вниз кц   нц пока слева сво­бод­но вниз кц   нц пока не с­ле­ва сво­бод­но за­кра­сить вниз кц   влево вверх   нц пока не спра­ва сво­бод­но за­кра­сить вверх кц   нц пока спра­ва сво­бод­но вверх кц   нц пока не спра­ва сво­бод­но за­кра­сить вверх кц

Ответ на задание №10

нц

пока с­ле­ва сво­бод­но

влево

кц

нц

пока не слева сво­бод­но

за­кра­сить

вниз

кц

нц

пока слева сво­бод­но

вниз

кц

нц

пока не с­ле­ва сво­бод­но

за­кра­сить

вниз

кц

влево

вверх

нц

пока не спра­ва сво­бод­но

за­кра­сить

вверх

кц

нц

пока спра­ва сво­бод­но

вверх

кц

нц

пока не спра­ва сво­бод­но

за­кра­сить

вверх

кц

Задание №11 Длины стен неизвестны.  В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.

Задание №11

Длины стен неизвестны.

В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.

Ответ на задание №11 нц пока не свер­ху сво­бод­но влево кц   впра­во   нц пока не свер­ху сво­бод­но за­кра­сить впра­во кц   влево   нц пока снизу сво­бод­но вниз кц   впра­во вниз влево   нц пока не свер­ху сво­бод­но за­кра­сить влево кц

Ответ на задание №11

нц

пока не свер­ху сво­бод­но

влево

кц

впра­во

нц

пока не свер­ху сво­бод­но

за­кра­сить

впра­во

кц

влево

нц

пока снизу сво­бод­но

вниз

кц

впра­во

вниз

влево

нц

пока не свер­ху сво­бод­но

за­кра­сить

влево

кц

Задание №12 На бес­ко­неч­ном поле име­ет­ся лест­ни­ца. Сна­ча­ла лест­ни­ца спус­ка­ет­ся вниз спра­ва на­ле­во, затем спус­ка­ет­ся вниз слева на­пра­во. Вы­со­та каж­дой сту­пе­ни — одна клет­ка, ши­ри­на — две клет­ки. Робот на­хо­дит­ся спра­ва от верх­ней сту­пе­ни лест­ни­цы. Ко­ли­че­ство сту­пе­нек, ве­ду­щих влево, и ко­ли­че­ство сту­пе­нек, ве­ду­щих впра­во, не­из­вест­но. На ри­сун­ке ука­зан один из воз­мож­ных спо­со­бов рас­по­ло­же­ния лест­ни­цы и Ро­бо­та (Робот обо­зна­чен бук­вой «Р»).

Задание №12

На бес­ко­неч­ном поле име­ет­ся лест­ни­ца. Сна­ча­ла лест­ни­ца спус­ка­ет­ся вниз спра­ва на­ле­во, затем спус­ка­ет­ся вниз слева на­пра­во. Вы­со­та каж­дой сту­пе­ни — одна клет­ка, ши­ри­на — две клет­ки. Робот на­хо­дит­ся спра­ва от верх­ней сту­пе­ни лест­ни­цы. Ко­ли­че­ство сту­пе­нек, ве­ду­щих влево, и ко­ли­че­ство сту­пе­нек, ве­ду­щих впра­во, не­из­вест­но. На ри­сун­ке ука­зан один из воз­мож­ных спо­со­бов рас­по­ло­же­ния лест­ни­цы и Ро­бо­та (Робот обо­зна­чен бук­вой «Р»).

Ответ на задание №12 Дви­га­ем­ся вниз под лест­ни­цей спра­ва на­ле­во, пока не дой­дем до стыка лест­ниц: нц пока снизу сво­бод­но вниз влево влево кц   Дви­га­ем­ся вниз до конца спус­ка­ю­щей­ся лест­ни­цы, за­кра­ши­вая нуж­ные клет­ки на пути: нц пока не слева сво­бод­но за­кра­сить впра­во за­кра­сить впра­во вниз кц

Ответ на задание №12

Дви­га­ем­ся вниз под лест­ни­цей спра­ва на­ле­во, пока не дой­дем до стыка лест­ниц:

нц пока снизу сво­бод­но

вниз

влево

влево

кц

Дви­га­ем­ся вниз до конца спус­ка­ю­щей­ся лест­ни­цы, за­кра­ши­вая нуж­ные клет­ки на пути:

нц пока не слева сво­бод­но

за­кра­сить

впра­во

за­кра­сить

впра­во

вниз

кц

Задание №13

Задание №13

Ответ на задание №13 нц пока слева сво­бод­но за­кра­сить влево кц   вверх нц пока не слева сво­бод­но за­кра­сить вверх кц

Ответ на задание №13

нц пока слева сво­бод­но

за­кра­сить

влево

кц

вверх

нц пока не слева сво­бод­но

за­кра­сить

вверх

кц

Задание №14 На бес­ко­неч­ном поле име­ет­ся пря­мо­уголь­ник, огра­ни­чен­ный сте­на­ми. Длины сто­рон пря­мо­уголь­ни­ка не­из­вест­ны. Робот на­хо­дит­ся внут­ри пря­мо­уголь­ни­ка. На ри­сун­ке ука­зан один из воз­мож­ных спо­со­бов рас­по­ло­же­ния стен и Ро­бо­та (Робот обо­зна­чен бук­вой «Р»).

Задание №14

На бес­ко­неч­ном поле име­ет­ся пря­мо­уголь­ник, огра­ни­чен­ный сте­на­ми. Длины сто­рон пря­мо­уголь­ни­ка не­из­вест­ны. Робот на­хо­дит­ся внут­ри пря­мо­уголь­ни­ка. На ри­сун­ке ука­зан один из воз­мож­ных спо­со­бов рас­по­ло­же­ния стен и Ро­бо­та (Робот обо­зна­чен бук­вой «Р»).

Ответ на задание №14 нц пока спра­ва сво­бод­но впра­во кц   нц пока свер­ху сво­бод­но вверх кц   за­кра­сить   нц пока слева сво­бод­но влево кц   за­кра­сить

Ответ на задание №14

нц

пока спра­ва сво­бод­но

впра­во

кц

нц

пока свер­ху сво­бод­но

вверх

кц

за­кра­сить

нц пока слева сво­бод­но

влево

кц

за­кра­сить

Задание №15

Задание №15

Ответ на задание №15 нц пока спра­ва сво­бод­но за­кра­сить впра­во кц   нц пока снизу сво­бод­но за­кра­сить вниз кц   за­кра­сить   нц пока не (снизу сво­бод­но) влево кц   вниз   нц пока не (спра­ва сво­бод­но) за­кра­сить вниз кц   за­кра­сить впра­во   нц пока не (свер­ху сво­бод­но) за­кра­сить впра­во кц

Ответ на задание №15

нц

пока спра­ва сво­бод­но

за­кра­сить

впра­во

кц

нц

пока снизу сво­бод­но

за­кра­сить

вниз

кц

за­кра­сить

нц

пока не (снизу сво­бод­но)

влево

кц

вниз

нц

пока не (спра­ва сво­бод­но)

за­кра­сить

вниз

кц

за­кра­сить

впра­во

нц

пока не (свер­ху сво­бод­но)

за­кра­сить

впра­во

кц

Задание №16

Задание №16

Ответ на задание №16 нц пока не спра­ва сво­бод­но за­кра­сить вниз кц   за­кра­сить впра­во   нц пока не свер­ху сво­бод­но за­кра­сить впра­во кц   нц пока свер­ху сво­бод­но вверх кц   нц пока спра­ва сво­бод­но за­кра­сить впра­во кц   нц пока не спра­ва сво­бод­но за­кра­сить вниз кц

Ответ на задание №16

нц

пока не спра­ва сво­бод­но

за­кра­сить

вниз

кц

за­кра­сить

впра­во

нц

пока не свер­ху сво­бод­но

за­кра­сить

впра­во

кц

нц

пока свер­ху сво­бод­но

вверх

кц

нц

пока спра­ва сво­бод­но

за­кра­сить

впра­во

кц

нц

пока не спра­ва сво­бод­но

за­кра­сить

вниз

кц

Задание №17

Задание №17

Задание №18

Задание №18

Хирьянов Тимофей Федорович

Алгоритм на языке КуМир записывается так:

алг тип_алгоритма имя_алгоритма (описание аргументов и результатов)
  дано условие_применимости_алгоритма
  надо цель_выполнения_алгоритма
нач
  последовательность команд
кон

Описание алгоритма состоит из:

  • заголовка (часть до служебного слова нач),

  • тела алгоритма (часть между словами нач и кон).

Части «дано», «надо», а также «тип алгоритма» и «описание аргументов и результатов» могут отсутствовать.

Простейшие алгоритмы

Рассмотрим следующий вспомогательный алгоритм для исполнителя Чертежник.

алг квадрат
нач
  опустить перо
  сместиться на вектор(0,2)
  сместиться на вектор(2,0)
  сместиться на вектор(0,-2)
  сместиться на вектор(-2,0)
  поднять перо
кон

Он позволяет нарисовать квадрат 2х2 (начиная с левого нижнего угла). Для этого нужно использовать в основной программе команду вызова вспомогательного алгоритма, которая будет иметь вид:

квадрат

Алгоритмы с аргументами

Для того, чтобы рисовать квадраты разных размеров, можно использовать алгоритм с аргументами.

алг квадрат (арг вещ а)
нач
  опустить перо
  сместиться на вектор(0, а)
  сместиться на вектор(а, 0)
  сместиться на вектор(0, -а)
  сместиться на вектор(-а, 0)
  поднять перо
кон

Слово арг означает, что у алгоритма есть аргумент (а), а вещ — то, что этот аргумент имеет вещественный тип. Команда вызова такого алгоритма может иметь вид

квадрат(2)

(в этом случае будет нарисован квадрат 2×2) или, например,

квадрат(5)

(в этом случае будет нарисован квадрат 5×5).

Алгоритмы с результатами

Алгоритм может не только получать информацию, но и отдавать ее. Для этого используется специальный вид величины — результаты.

алг гипотенуза (вещ a, b, рез вещ c)
  дано a >= 0 и b >= 0 | длины катетов треугольника
  надо | c = длинa гипотенузы этого треугольника
нач
  c := sqrt(a ** 2 + b ** 2)
кон

Здесь служебное слово рез указывает на то, что
величина c является результатом и ее значение будет меняться в процессе
работы алгоритма. Например, после вызова

гипотенуза(3, 4, c)

величина c примет значение 5.

Алгоритмы-процедуры и алгоритмы-функции

Рассмотренные выше примеры являются алгоритмами-процедурами. В Кумире также существуют алгоритмы-функции. Алгоритм-функция после выполнения возвращает значение-результат.
Правила описания алгоритмов-процедур и алгоритмов-функций имеют два отличия.
Во-первых, для алгоритмов-функций на месте тип_алгоритма
должен быть указан один из простых типов алгоритмического языка (вещ,
цел и т.д.), определяющий тип значений, которые возвращает данная
функция.
Во-вторых, в теле алгоритма-функции необходимо использовать служебную величину знач,
которой присваивается вычисленное значение функции. Ее описанием служит
заголовок алгоритма, но в остальном величина знач используется так же,
как и любая другая промежуточная величина. (В теле алгоритма-процедуры
величину знач использовать нельзя.)
Вызов алгоритма-процедуры является отдельной командой алгоритмического языка и имеет вид:

имя_алгоритма-процедуры

или

имя_алгоритма-процедуры (список_параметров_вызова)

Вызов алгоритма-функции производится путем указания его имени в выражении. Встретив это имя при вычислении выражения, КуМир выполняет алгоритм-функцию.

алг вещ площадь (вещ a, b, c)
  дано a >= 0 и b >= 0 и c >= 0 | длины сторон треугольника
  надо | значение функции равно площади этого треугольника
нач
  вещ p | полупериметр
  p := (a + b + c) / 2
  знач := sqrt(p * (p — a) * (p — b) *  (p — c))
кон

Использовать этот алгоритм в программе можно, например, так:

алг
нач вещ P
  P := площадь(3, 4, 4)
кон

или так:

если площадь(a, b, c) > 10
  то
    …
все

Понравилась статья? Поделить с друзьями:
  • Как написать анализ выполненной работы
  • Как написать анализ внеклассного мероприятия
  • Как написать алгоритм на питоне
  • Как написать анализ бонитировки крс
  • Как написать анализ басни 5 класс