Кумир вспомогательные алгоритмы робот. Модульный урок "Чертежник. Вспомогательный алгоритм". Объяснение нового материала

Исполнитель Робот. Вспомогательные алгоритмы (2ч)

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

План урока

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

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

3. Практическая работа

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

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

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

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

Задача1:

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

Решение

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

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

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

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

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

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

Практическая работа «Исполнитель Чертежник. Использование вспомогательных алгоритмов с аргументами»

Задание А. Нужный нам вспомогательный алгоритм (который рисует квадрат определенной длины) можно записать так:

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

Запись «алг квадрат(арг вещ а)» означает, что у алгоритма «квадрат» есть один аргумент (арг) «а», который может быть произвольным вещественным (вещ) числом. Для того чтобы вызвать этот алгоритм нужно написать, например, «квадрат(2)» - получим квадрат со стороной 2 или «квадрат(3)» - получим квадрат со стороной 3 и т. п. Какое-то конкретное значение «а» получит только во время работы программы во время соответствующего вспомогательного алгоритма. И везде вместо «а» будет подставлено компьютером это число.

Программа для рисования это рисунка может быть такой:

использовать Чертежник
алг квадраты
нач
. сместиться в точку (1,1)
. квадрат(2)
. сместиться в точку (4,1)
. квадрат(3)
. сместиться в точку (8,1)
. квадрат(4)
. сместиться в точку (13,1)
. квадрат(5)
. сместиться в точку (0,0)
кон
алг квадрат(арг вещ а)
нач
. опустить перо
. сместиться на вектор (0,а)
. сместиться на вектор (а,0)
. сместиться на вектор (0,-а)
. сместиться на вектор (-а,0)
. поднять перо
кон

Задание Б. Научим Чертежника новым командам. Одна из команд пусть называется «линия(арг вещ x1,y1,x2,y2) » – для рисования линии из точки (x1,y1) в точку (x2,y2).

алг линия(арг вещ x1, y1, x2, y2)
нач
. сместиться в точку (x1,y1)
. опустить перо
. сместиться в точку (x2,y2)
. поднять перо
кон

Задание В. Вторая команда пусть называется «прямоугольник(арг вещ x1,y1,x2,y2) » для рисования прямоугольника. Точка (x1,y1) одна точка диагонали АС прямоугольника, точка (x2,y2) – противоположная. Перед записью алгоритма нужно понять чему равны координаты двух других точек.

Вспомогательный алгоритм может быть таким:

алг прямоугольник(арг вещ x1, y1, x2, y2)
нач
. сместиться в точку (x1,y1)
. опустить перо
. сместиться в точку (x2,y1)
. сместиться в точку (x2,y2)
. сместиться в точку (x1,y2)
. сместиться в точку (x1,y1)
. поднять перо
кон

Задание Г. Теперь используя эти команды нарисуем домик:

использовать Чертежник
алг домик
нач
. прямоугольник(2,1,8,5)
. прямоугольник(3,2,5,4)
. прямоугольник(6,1,7,4)
. линия(1,4,5,8)
. линия(5,8,9,4)
кон
алг линия(арг вещ x1, y1, x2, y2)
нач
. сместиться в точку (x1,y1)
. опустить перо
. сместиться в точку (x2,y2)
. поднять перо
кон
алг прямоугольник(арг вещ x1, y1, x2, y2)
нач
. сместиться в точку (x1,y1)
. опустить перо
. сместиться в точку (x2,y1)
. сместиться в точку (x2,y2)
. сместиться в точку (x1,y2)
. сместиться в точку (x1,y1)
. поднять перо
кон

Примечание: естественно, одновременно с этими командами мы можем использовать и стандартные команды чертежника (сместиться в точку, сместиться на вектор …).

Задание Д. Нарисуйте самостоятельно, что нарисует Чертежник выполнив алгоритм:

использовать Чертежник
алг спираль
нач
. сместиться в точку (3,3)
. опустить перо
. виток(1); виток(3); виток(5); виток(7); виток (9)
. поднять перо
кон
алг виток(арг вещ а)
нач
. сместиться на вектор (а, 0)
. сместиться на вектор (0, -а)
. сместиться на вектор (-а-1,0)
. сместиться на вектор (0, а+1)
кон.

СХЕМА УРОКА ИНФОРМАТИКИ

Тема занятия

«Использование вспомогательных алгоритмов для Чертёжника»

Возраст обучающихся

1 2 лет (6 класс)

Тип урока

Усвоения новых знаний

Форма урока

Модульный урок

Цель урока:

Формировать представление учащихся о понятии «вспомогательный алгоритм» как об одном из способов оптимизации программного кода

Задачи урока:

    развить представления учащихся об исполнителях

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

    познакомить со вспомогательными алгоритмами

    закрепить навыки управления исполнителем Чертёжник

Планируемые результаты

предметные – умения разработки алгоритмов для управления исполнителем;

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

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

Материально-техническое оснащение (дидактические средства и т.п.)

Учителю: презентация урока; раздаточный материал

Ученику: ручка шариковая, карандаш, линейка, учебник, рабочая тетрадь

УМК (видеоряд)

Мультимедийная презентация, раздаточный материал для каждого ученика: технологическая карта урока, лист приложений

Использованные материалы

Информатика: методическое пособие для 5-6 классов/Л.Л. Босова, А.Ю. Босова. – М.: Бином. Лаборатория знаний, 2014

Информатика: Учебник для 6 класса/Л.Л. Босова, А.Ю. Босова. – М.: Бином. Лаборатория знаний, 2013

Информатика: Рабочая тетрадь для 6 класса/Л.Л. Босова, А.Ю. Босова. – М.: Бином. Лаборатория знаний, 2013

Тема: Вспомогательные алгоритмы для Чертёжника

Технологическая карта (модуль) урока

Рейтинговая оценка

(мах. балл)

УЭ – 0

2 мин.

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

    вы познакомитесь с одним из способов оптимизации программного кода

    будете совершенствовать свои умения и навыки работы в среде программирования КуМир

    будете развивать логическое мышление, критическое отношение к получаемой информации

УЭ – 1

Актуализация опорных знаний.

Цель : актуализировать полученные знания

Задание 1.

а) сместиться в точку (5,2) __________

б) сместиться на вектор (3,4) ________

в) сместиться в точку (1,4) __________

Задание 2.

использовать Чертёжник

алг

нач

    сместиться в точку (2,4)

    сместиться в точку (4,1)

    сместиться в точку (0,0)

кон

использовать Чертёжник

алг

нач

    опустить перо

    сместиться на вектор (0,3)

    сместиться на вектор (3,0)

    сместиться на вектор (0,-3)

    сместиться на вектор (-3,0)

кон

Внимательно прочитайте цель УЭ – 1

Работайте в модуле в паре

Проверьте себя по ответам выписанным на доске

Правильно выполненное задание 1 оценивается в 3 балла, по 1 баллу за каждый пункт (а, б, в)

Правильно выполненное задание 2 оценивается в 2 балла, по 1 баллу за каждый пункт (а, б)

Максимальное количество баллов за работу с УЭ-1 = 5

____________

УЭ – 2

Изучение нового материала.

13 мин.

Цель: познакомиться с понятием вспомогательный алгоритм, расширить круг задач, которые могут быть решены с использованием вспомогательного алгоритма, учиться составлять основной и вспомогательный алгоритм для исполнителя Чертежник

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

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

_________________________________

_________________________________

_________________________________

_________________________________

    Как можно избежать перечисленных трудностей

_________________________________

_________________________________

______________________________________

______________________________________

______________________________________

______________________________________

______________________________________

______________________________________

______________________________________

______________________________________

______________________________________

______________________________________

______________________________________

______________________________________

______________________________________

Внимательно прочитайте цель УЭ – 2

Индивидуальная работа с заданиями 1 – 3

При работе с пунктом 4 воспользуйтесь материалом, изложенным в параграфе 18 вашего учебника (стр. 123 – 125), презентацией учителя

Обсуждение пунктов 1 - 4 – групповая работа во фронтальном режиме

Задание 5 – 6 выполните индивидуально

9

Оценка заданий

Задание 1-2 выполнено верно по 1 баллу

____________

В задании 3 указано хотя бы 3 недостатка – 1 балл

_____________

В задании 4 указаны способы решения проблемы:

1 способ = 1 балл, 2 способа = 2 балла

_____________

Задание 5. На координатной плоскости расположены 6-8 звезд, размер которых соответствует «Звездочке» - 1 балл

____________

Составлен основной алгоритм «Космос» - 3 балл

____________

УЭ – 3

Практическая работа

Цель: Формировать умение работать со вспомогательными алгоритмами в среде программирования КуМир

Задание 1. Реализуйте составленный вами алгоритм в системе программирования КуМир

Задание 2 (творческое). Подумайте, какой летательный аппарат может находиться в космосе:

а) изобразите его на координатной плоскости рядом со звездами на бумаге

б) дополните ваш алгоритм кодом летательного аппарата, реализуйте в системе программирования КуМир

Внимательно прочитайте цель УЭ – 3

Индивидуальная работа с заданиями

О выполнении каждого задания сообщайте учитель, для осуществления контроля

Пример можно подсмотреть в приложении 1

Максимальное количество баллов за работу с УЭ-2 = 6

Правильно выполненное задание 1 оценивается в 2

Задание 2 (творческое) выполненное полностью оценивается в 4 баллов

_____________

УЭ – 4

Рефлексия

Цель: Проанализировать свои достижения на уроке

Дайте ответ на каждый вопрос

1. Прочитайте еще раз цели урока

2. Достигли ли вы заданных целей?

__________________________________

3. Что мешало достижению целей?

__________________________________

4. Что показалось наиболее трудным?

__________________________________

5. Что не вызывало затруднений?

__________________________________

6. Как вы оцениваете свою работу?

7.Вы набрали меньше 20 баллов? (если «да», то поработайте дома и у вас есть шанс пройти повторное тестирование). Желаю удачи!

Домашнее задание:

Просмотри все записи сделанные на уроке.

§18(3), №6 на стр. 128; №216.

Внимательно прочитайте цель УЭ – 4

Ответьте на вопросы

Подсчитайте количество баллов, поставьте себе оценку (Приложение 2, Приложение 3)

ПРИЛОЖЕНИЯ

Приложение 1

Пример, выполненного задания

Приложение 2

Лист контроля

Фамилия, Имя ______________________________________________

Приложение 3

17 -19

(85 – 99%)

высокий

Ты просто молодец!

15 - 16

(75 – 84 %)

средний

Еще чуть-чуть и будет «5»

10 - 14

(50 – 74%)

низкий

Будьте внимательнее

1 - 9

(0,7 – 49%)

очень низкий

И о чем Вы думаете на уроке?

нулевой

Вы не присутствовали на уроке?

Ответы

УЭ – 1

Задание 1. Начальное положение Чертёжника – точка А, в какую точку он сместиться, выполнив команду:

а) сместиться в точку (5,2) ____ F ______

б) сместиться на вектор (3,4) __ C ______

в) сместиться в точку (1,4) ____ A ______

Задание 2. Начальное положение Чертёжника – начало координат, перо поднято. Выполните алгоритм и определите, какую фигуру он нарисует.

а) НИЧЕГО, НЕ БЫЛО КОМАНДЫ ОПУСТИТЬ ПЕРО

использовать Чертёжник

алг

нач

    сместиться в точку (2,4)

    сместиться в точку (4,1)

    сместиться в точку (0,0)

кон

б) КВАДРАТ

использовать Чертёжник

алг

нач

    опустить перо

    сместиться на вектор (0,3)

    сместиться на вектор (3,0)

    сместиться на вектор (0,-3)

    сместиться на вектор (-3,0)

кон

УЭ – 2

    Как должен измениться алгоритм, если Чертежнику необходимо нарисовать звездное небо, на котором 20, 50, 1000 звезд?

В нем станет больше команд

    Сколько строк займет алгоритм для 10 звезд?

    Определите недостатки такого алгоритма: громоздкий, дублирование, большая вероятность допустить ошибку

    Как можно избежать перечисленных трудностей: использовать вспомогательный алгоритм, могут назвать еще цикл

    На координатной плоскости расположите 6 – 8 звезд, размер каждой должен соответствовать звездочке, которую вы рисовали на прошлом уроке

    Запишите основной алгоритм «Космос», используя в качестве вспомогательного алгоритма алгоритм «Звездочка»

использовать Чертежник

алг космос

нач

сместиться в точку (1,1)

звездочка

сместиться на вектор (2, 2)

звездочка

сместиться на вектор (-2, 2)

звездочка

сместиться на вектор (2, 2)

звездочка

ракета

сместиться в точку (13,1)

звездочка

сместиться на вектор (-2, 2)

звездочка

сместиться на вектор (2, 2)

звездочка

сместиться на вектор (-2, 2)

звездочка

кон

алг звездочка

нач

опустить перо

установить цвет ("желтый")

сместиться на вектор(1,2)

сместиться на вектор(1,-2)

сместиться на вектор(-2,1)

сместиться на вектор(2,0)

сместиться на вектор(-2,-1)

поднять перо

кон

алг ракета

нач

сместиться в точку (6,1)

опустить перо

установить цвет ("красный")

сместиться на вектор(0,1)

сместиться на вектор(1,1)

сместиться на вектор(0,4)

сместиться на вектор(1,1)

сместиться на вектор(1,-1)

сместиться на вектор(0,-4)

сместиться на вектор(1,-1)

сместиться на вектор(0,-1)

сместиться на вектор(-1,1)

сместиться на вектор(-1,-1)

сместиться на вектор(-1,1)

сместиться на вектор(-1,-1)

поднять перо

Управление исполнителем Робот в системе КУМИР

Робот существует в определенной обстановке (прямоугольном клетчатом поле). Между некоторыми клетками поля могут быть расположены стены. Некоторые клетки могут быть закрашены (рис. 3.11).

Робот занимает ровно одну клетку поля.

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

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

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

О
шибки: 1 синтаксические; 2. логические

Описания обстановок хранятся в текстовых файлах специального формата (формат.fil).

Текущая - обстановка, в которой находится Робот в данный момент (включая информацию о положении Робота).

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

Порядок работы:


  1. Задать стартовую обстановку по условию задачи:
Меню Инструменты → Сменить стартовую обстановку Робота (нарисовать обстаковку по условию задачи, дать имя, сохранить в Личной папке)

2. Указать Исполнителя:

Меню Вставка →Использовать Робот

3. Написать алгоритм решения задачи.

4. Выполнить алгоритм (Меню Выполнение →Выполнить непрерывно /F9)

Система команд исполнителя Робот в системе КУМИР


Команда

Действие

вверх

Робот перемещается на 1 клетку вверх

вниз

Робот перемещается на 1 клетку вниз

влево

Робот перемещается на 1 клетку влево

вправо

Робот перемещается на 1 клетку вправо

закрасить

Робот закрашивает клетку, в которой находится

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

Робот проверяет выполнение соответствующего простого условия

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



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



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



клетка закрашена



клетка чистая



Циклические алгоритмы

Цикл – организация повторения действий, пока верно некоторое условие.

Тело цикла – набор повторяемых действий.

Условие – логическое выражение (простое или сложное (составное))
Типы циклов:

1.Цикл «Повторять n раз» 2. Цикл «Пока»
нц n раз нц пока
. . Тело цикла. . Тело цикла
кц кц

Пример: нц пока справа свободно


Общий вид цикла «Повторять n раз:

ПОВТОРИТЬ n РАЗ

КОНЕЦ
кц

Общий вид цикла «пока»:

ПОКА ДЕЛАТЬ

КОНЕЦ
Составные условия образуются из одного или нескольких простых условий и служебных слов И, ИЛИ, НЕ.


Составное условие А И В (где А, В - простые условия), выполнено, когда выполнено каждое из двух входящих в него простых условий.

Пусть А - сверху свободно, В - справа свободно, тогда составное условие А И В - сверху свободно И справа свободно.


Составное условие А ИЛИ В выполнено, когда выполнено хотя бы одно из двух входящих в него простых условий: сверху свободно ИЛИ справа свободно
Составное условие НЕ А - выполнено, когда не выполнено условие А.

Пример: Пусть А – клетка закрашена (простое условие).

Проверка составного условия НЕ А:

а) А - выполнено, НЕ А (НЕ закрашено) - не выполнено.

б) А - не выполнено, НЕ А (НЕ закрашено) - выполнено.


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

Ветвление - форма организации действий, при которой в зависимости от выполнения или невыполнения некоторого условия совершается либо одна, либо другая последовательность действий.

Общий вид команды ЕСЛИ:

ЕСЛИ ТО ИНАЧЕ

КОНЕЦ

В языке КУМИР:

Полное ветвление: Неполное ветвление:
если то если то

иначе

все все

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

В системе КУМИР вспомогательные алгоритмы пишутся в конце основной программы (после служебного слова кон ), вызываются на выполнение в основой программе по имени.

Вопросы и задания

1. Приведите все алгоритмы из трех команд, которые переместят Робота из исходного положения в клетку Б.

Существует ли для этой задачи алгоритм, при выполнении которого Робот делает:

а) два шага; б) четыре шага; в) пять шагов; г) семь шагов?


  1. Петя составил алгоритм, переводящий Робота из клетки А в клетку Б с закрашиванием каких-то клеток. Что должен сделать Коля с этим алгоритмом, чтобы получить алгоритм, переводящий Робота из Б в А и закрашивающий те же клетки?


7. Известны два вспомогательных алгоритма Робота

Нарисуйте, что получится при выполнении Роботом следующих основных алгоритмов:


а)

нц 5 раз


узор_1

вправо; вправо;


б)

нц 7 раз


узор_2

вправо; вправо


в)
вправо; вправо; вправо

вверх; вверх

вправо; вправо; вправо

вниз; вниз


г)
вправо; вправо
вправо; вправо

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



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

10. Известно, что где-то правее Робота есть закрашенная клетка.

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

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

12. Известно, что Робот находится где-то в горизонтальном коридоре. Ни одна из клеток коридора не закрашена.

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


13. В ряду из десяти клеток правее Робота некоторые клетки закрашены.

Составьте алгоритм, который закрашивает клетки:

а) ниже каждой закрашенной клетки;

б) выше и ниже каждой закрашенной клетки.


14. Что можно сказать о правильности следующего фрагмента алгоритма?

нц пока клетка закрашена

ЕСЛИ справа свободно ТО

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

к
ц

15. Напишите программу, с помощью которой Робот сможет попасть в клетку Б во всех трех лабиринтах.


16. Напишите программу, следуя которой Робот сможет пройти по коридору от левого нижнего угла поля к правому верхнему. Коридор имеет ширину одна клетка и тянется в направлении слева-снизу вправо-вверх. Пример возможного коридора изображен на рисунке.

З

адачи ГИА


  1. Коридор1. Робот находится где-то в вертикальном коридоре. Ни одна из клеток коридора не закрашена. Составить алгоритм, под управлением которого Робот закрасит все клетки этого коридора и вернется в исходное положение.

  1. К
    Надо

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

Возможный вариант начального расположения Робота приведён на рисунке (Робот обозначен буквой «Р»)

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


  1. На бесконечном поле имеется длинная горизонтальная стена. Длина стены неизвестна. Робот находится в одной из клеток непосредственно сверху от стены. Начальное положение Робота также неизвестно. Одно из возможных положений:
Н


Надо

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

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



  1. На бесконечном поле имеется длинная вертикальная стена. Длина стены неизвестна. Робот находится в одной из клеток, расположенной непосредственно справа от стены. Начальное положение робота также неизвестно. Одно из возможных положений робота приведено на рисунке (робот обозначен буквой «Р»):Напишите для работа алгоритм, закрашивающий все прилегающие к стене клетки: слева, начиная с верхней не закрашенной и через одну; справа, начиная с нижней закрашенной и через одну. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведенного выше рисунка робот должен закрасить следующие клетки (см. рисунок): Конечное расположение робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера стены и любой допустимой начальной позиции робота. При исполнении алгоритма Робот не должен разрушиться.


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


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

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



Р

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

  • слева все;

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

B
1102_ГИА2011

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

Конечное расположение робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться.


В
1103_ГИА_2011


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

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

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


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

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

Описание алгоритма состоит из:
  • заголовка (часть до служебного слова нач),
  • тела алгоритма (часть между словами нач и кон).
Части "дано", "надо", а также "тип алгоритма" и "описание аргументов и результатов" могут отсутствовать.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Top