§3. Циклические задачи.
При составлении алгоритмов довольно часто встречаются случаи, когда некоторую последовательность команд нужно выполнить несколько раз подряд. Для упрощения записи алгоритма в таких случаях можно использовать специальную команду алгоритмического языка — цикл n раз:
Рассмотренные нами раньше команды записывались на одной строке. Команда n раз выглядит по-другому. Она занимает несколько строк и, что самое главное, содержит в себе другие команды алгоритмического языка.
Команда n раз называется циклом, поскольку при ее вы полнении циклически повторяется одна и та же последовательность команд.
В общем виде цикл n раз записывается так:
нц число повторений раз
| тело цикла (последовательность команд)
кц
Служебные слова нц (начало цикла) и кц (конец цикла) пишутся строго одно под другим и соединяются вертикальной чертой. Правее этой черты записывается повторяемая последовательность команд (тело цикла). При выполнении алгоритма эта последовательность команд циклически повторяется указанное число раз. Правила алгоритмического языка допускают задание любого целого числа повторений. Оно может быть нулевым и даже отрицательным. Эти случаи не считаются ошибочными — просто тело цикла не будет выполнено ни разу, а ЭВМ сразу перейдет к выполнению команд, записанных после кц.
Задание для самостоятельного разбора:
алг из А в Б
●дано | Робот в клетке А (рис 22)
●надо | Робот в клетке Б (рис 22)
нач
●нц 5 раз
● ●вверх; вверх; вправо; вниз; вниз; вправо
кон
(рис 22)
Задание 1.
алг | закрасить ряд из 10 клеток
●дано | на поле Робота стен нет
●надо | Робот закрасил 10 клеток вправо
| и вернулся в исходное положение (рис 23)
нач
кон
(рис
23)
Задание 2.
алг водоворот
●дано | Робот в точке А (рис 24)
●надо | Коридор закрашен. Робот в точке Б (рис 24)
нач
кон
(рис
24)
Задание 3.
алг закрасить прямоугольник
●дано | на поле Робота стен нет
●надо | закрашен прямоугольник размером 10x6
| Робот в исходном положении (рис 25)
нач
кон
(рис
25)
Рассмотренные нами раньше команды записывались на одной строке. Команда n раз выглядит по другому. Она занимает несколько строк и, что самое главное, содержит в себе другие команды алгоритмического языка.
Команды подобного рода называются составными, в отличие от изученной нами ранее простой команды вызова.
Кроме вызова и цикла n раз, в алгоритмическом языке есть и другие команды: цикл пока, команды ветвления если и выбор, команда присваивания, команды ввода/вывода и др.
Задание 4.
С помощью исполнителя робот в среде кумир составить алгоритм программы, используя рисунок. (рис 26)
(рис
26)
использовать Робот
алг сердце
нач
кон
Задание 5
алг вниз к стене
●дано | на поле Робота стен нет, робот в левом верхнем углу
●надо | робот в левом нижнем углу (рис 27)
нач
кон
(рис
27)
Задание 6.
алг вправо к стене с закрашиванием
●дано | где-то справа от Робота есть стена
●надо | Робот у стены, все клетки от исходной до стены закрашены
| (рис 28)
нач
кон
(рис
28)
Задание 7
алг лог вправо_до_перекрестка
дано | Робот в горизонтальном коридоре, левее перекрестка
надо | Робот на перекрестке (рис 29)
нач
кон
(рис
29)
Задание ?.
Сколько клеток приведённого лабиринта соответствует требованию, что выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение.
НАЧАЛО ПОКА <снизу свободно> вниз ПОКА <слева свободно> влево ПОКА <сверху свободно> вверх ПОКА <справа свободно> вправо КОНЕЦ |
|
1;
2;
3;
4.
Задание ?.
Сколько клеток приведённого лабиринта соответствует требованию, что выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение.
НАЧАЛО ПОКА <слева свободно> вниз ПОКА <снизу свободно> вправо ПОКА <справа свободно> вверх ПОКА <сверху свободно> влево КОНЕЦ |
|
5;
2;
3;
4.
Задание ?.
Сколько клеток приведённого лабиринта соответствует требованию, что выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение.
НАЧАЛО ПОКА <снизу свободно> вниз ПОКА <справа свободно> вправо ПОКА <сверху свободно> вверх ПОКА <слева свободно> влево КОНЕЦ |
|
5;
2;
3;
4
Задание ?.
Сколько клеток приведённого лабиринта соответствует требованию, что выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение.
НАЧАЛО ПОКА <снизу свободно> вниз ПОКА <справа свободно> вправо ПОКА <сверху свободно> вверх ПОКА <слева свободно> влево КОНЕЦ |
|
1;
2;
3;
4
Задание ?.
Сколько клеток приведённого лабиринта соответствует требованию, что выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение.
НАЧАЛО ПОКА <слева свободно> влево ПОКА <сверху свободно> вверх ПОКА <справа свободно> вправо ПОКА <снизу свободно> вниз КОНЕЦ |
|
1;
2;
3;
4
Задание ?.
Сколько клеток приведённого лабиринта соответствует требованию, что выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение.
НАЧАЛО ПОКА <справа свободно> вправо ПОКА <снизу свободно> вниз ПОКА <слева свободно> влево ПОКА <сверху свободно> вверх КОНЕЦ |
|
1;
2;
3;
4
Задание ?.
Сколько клеток приведённого лабиринта соответствует требованию, что выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение.
НАЧАЛО ПОКА <сверху свободно> вправо ПОКА <справа свободно> вниз ПОКА <снизу свободно> влево ПОКА <слева свободно> вверх КОНЕЦ |
|
1;
2;
3;
4
Задание ?.
Какие клетки лабиринта соответствуют требованию, что выполнив предложенную программу, РОБОТ остановится в той же клетке, с которой он начал движение.
НАЧАЛО ПОКА <справа свободно> вправо ПОКА <сверху свободно> вверх ПОКА <слева свободно> влево ПОКА <снизу свободно> вниз КОНЕЦ |
A B C D E F G H |
В ответ запишите число – количество таких клеток, после чего, через запятые, их адреса в порядке, где сначала идёт латинская буква столбца, а затем цифра строки.
Например, нижний левый угол лабиринта имеет адрес A1.
Задание ?.
Какие клетки лабиринта соответствуют требованию, что выполнив предложенную программу, РОБОТ остановится в той же клетке, с которой он начал движение.
НАЧАЛО ПОКА <снизу свободно> вниз ПОКА <справа свободно> вправо ПОКА <сверху свободно> вверх ПОКА <слева свободно> влево КОНЕЦ |
A B C D E F G H |
В ответ запишите число – количество таких клеток, после чего, через запятые, их адреса в порядке, где сначала идёт латинская буква столбца, а затем цифра строки.
Например, нижний левый угол лабиринта имеет адрес A1.
Задание ?.
Какие клетки лабиринта соответствуют требованию, что выполнив предложенную программу, РОБОТ остановится в той же клетке, с которой он начал движение.
НАЧАЛО ПОКА <снизу свободно> вниз ПОКА <справа свободно> вправо ПОКА <сверху свободно> вверх ПОКА <слева свободно> влево КОНЕЦ |
A B C D E F G H |
В ответ запишите число – количество таких клеток, после чего, через запятые, их адреса в порядке, где сначала идёт латинская буква столбца, а затем цифра строки.
Например, нижний левый угол лабиринта имеет адрес A1.
Задание 8.
алг закрасить коридор
●дано | Робот в левой клетке горизонтального коридора
●надо | Робот вышел из коридора вправо, коридор закрашен (рис 30)
нач
кон
(рис
30)
Задание 9.
Робот находится в точке А. Нижняя стена – сплошная. В верхней имеются тупики, длиной от одной клетки. Закрасить все клетки отмеченные знаком *.
алг тупики
нач
кон
(рис
31)
(рис
32)
(рис
33)
(рис
34)
Задание 10
алг дежурство
●дано | Робот в одной из клеток "двухкомнатного" помещения
●надо | Робот в другой клетке
нач
кон
(рис
35)
Задание 11.
алг разметка выходов из коридора
●дано | Робот в левой клетке горизонтального коридора
●надо | Робот вышел из коридора вправо. Клетки коридора,
| из которых есть выход вверх, закрашены. (рис 36)
нач
кон
(рис
36)
Задание 12.
Составьте алгоритм, который перемешает Робота из А в Б и закрашивает клетки, отмеченные точками (рис 37, рис 38)
(рис 37)
(рис 38)
алг
●дано Робот в точке А
●надо Закрасить клетки отмеченные точками. Робот в точке Б.
нач
кон
Задание 13
Составьте алгоритм, который перемешает Робота из А в Б и закрашивает клетки, отмеченные точками (рис 39, рис 40, рис 41)
алг
●дано Робот в точке А
●надо Закрасить клетки отмеченные точками. Робот в точке Б.
нач
кон
(рис 39)
(рис 40)
(рис 41)
Задание 14.
Расположение Робота показано на рисунке(42, 43). Как будет выполняться цикл?
(рис 42)
(рис
43)
Задание 15
Дано, что на поле Робота только одна стена и эта стена расположена строго горизонтально. Робот находится в одной из клеток, прилегающих к стене сверху. (рис 44) Точные размеры стены и точное расположение Робота неизвестны. Составьте алгоритм, при выполнении которого Робот:
а) окажется в одной из клеток, прилегающих к стене снизу;
б) закрасит все клетки, прилегающие к стене сверху;
в) закрасит все клетки, прилегающие к стене снизу;
г) закрасит все прилегающие к стене клетки.
алг
●дано
●надо
нач
кон
(рис
44)
Задание 16
Робот находится внутри прямоугольника, огороженного с четырех сторон стенами. Внутри прямоугольника стен нет. Составьте алгоритм, при выполнении которого Робот закрашивает все клетки внутри прямоугольника, прилегающие к стенам.
алг
●дано
●надо
нач
кон
Задание 17
Дано, что Робот находится в левом верхнем углу в прямоугольнике, огороженном с четырех сторон стенами. Внутри прямоугольника имеется горизонтальная стена с одним проходом, идущая от левого до правого края прямоугольника (проход не прилегает ни к левой, ни к правой стене прямоугольника). (рис 45) Со- ставьте алгоритм при выполнении которого Робот переместится в правый нижний угол прямоугольника.
алг
●дано
●надо
нач
кон
(рис
45)
Задание 18
Составьте алгоритм для закраски всех клеток вокруг прямоугольной стены. (рис 46)
алг
●дано Робот в точке А
●надо Закрасить клетки отмеченные точками. Робот в точке Б.
нач
кон
(рис
46)
Задание 19
Составьте алгоритм для закраски всех клеток вокруг Т-образной стены неизвестного размера. (рис 47)
алг
●дано Робот в точке А
●надо Закрасить клетки отмеченные точками. Робот в точке Б.
нач
кон
(рис
47)
Задание 20.
алг
●дано | робот в точке А
●надо | робот прошел лабиринт, оказался в точке Б. (рис 48)
| Закрасил точку остановки
нач
кон
(рис
48)
Задание 21.
Закрасить всю свободную область на рисунке, огороженную стенами. (рис 49)
алг домик
нач
кон
(рис
49)
