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

Задания для робота
PascalABC.NET 3.10

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

Вводные задания

Задания на цикл с параметром

Задания на логические выражения

Задания на циклы с условием

Задания на циклы + логические выражения

Задания на переменные-счетчики

Задания на вложенные циклы

Задания для процедуры без параметров

Задания для процедуры с параметрами

Задания на смешанные циклы и процедуры

Экзамен

 

 

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

// PascalABC.NET 3.10 & executor robot

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

Исполнитель Робот и поле, на котором он работает, отображаются следующим образом:

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

Команды исполнителя Робот содержатся в модуле Robot:

Right – перемещает Робота вправо;
Left – перемещает Робота влево;
Up – перемещает Робота вверх;
Down – перемещает Робота вниз;
Paint – закрашивает текущую ячейку;
WallFromLeft – возвращает True если слева от Робота стена;
WallFromRight – возвращает True если справа от Робота стена;
WallFromUp – возвращает True если сверху от Робота стена;
WallFromDown – возвращает True если снизу от Робота стена;
FreeFromLeft – возвращает True если слева от Робота свободно;
FreeFromRight – возвращает True если справа от Робота свободно;
FreeFromUp – возвращает True если сверху от Робота свободно;
FreeFromDown – возвращает True если снизу от Робота свободно;
CellIsPainted – возвращает True если ячейка, в которой находится Робот, закрашена;
CellIsFree – возвращает True если ячейка, в которой находится Робот, не закрашена.

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

uses Robot;
begin
  Task('c1');
end.

Здесь Task — процедура, содержащаяся в модуле Robot и вызывающая задание с указанным именем.

Имеются следующие группы заданий для исполнителя Робот:

a – вводные задания;
c – цикл с параметром;
if – логические выражения;
w – циклы с условием;
сif – циклы + логические выражения;
count – переменные-счетчики;
cc – вложенные циклы;
p – процедуры без параметров;
pp – процедуры с параметрами.

Для создания стандартного поля размера 9 x 11 используется процедура StandardField без параметров, а для создания поля размера N x M — процедура Field(N,M). Робот при этом помещается в центр поля.

Вводные задания

Task('a1') ... Task('a4');

Задание a1

// Задание a1. Закрасить помеченные клетки

Решение Задания a1 на PascalABCNET


Задание a2

// Задание a2. Закрасить помеченные клетки

Решение Задания a2 на PascalABCNET


Задание a3

// Задание a3. Закрасить помеченные клетки

Решение Задания a3 на PascalABCNET


Задание a4

// Задание a4. Закрасить помеченные клетки

Решение Задания a4 на PascalABCNET


Задания на цикл с параметром

Task('c1') ... Task('c16');

Задание c1

// Задание c1. Дойти до правой клетки

Решение Задания c1 на PascalABCNET


Задание c2

// Задание c2. Закрасить помеченные клетки

Решение Задания c2 на PascalABCNET


Задание c3

// Задание c3. Закрасить помеченные клетки

Решение Задания c3 на PascalABCNET


Задание c4

// Задание c4. Закрасить помеченные клетки

Решение Задания c4 на PascalABCNET


Задание c5

// Задание c5. Закрасить помеченные клетки

Решение Задания c5 на PascalABCNET


Задание c6

// Задание c6. Закрасить помеченные клетки

Решение Задания c6 на PascalABCNET


Задание c7

// Задание c7. Закрасить помеченные клетки

Решение Задания c7 на PascalABCNET


Задание c8

// Задание c8. Закрасить помеченные клетки

Решение Задания c8 на PascalABCNET


Задание c9

// Задание c9. Закрасить помеченные клетки

Решение Задания c9 на PascalABCNET


Задание c10

// Задание c10. Закрасить помеченные клетки

Решение Задания c10 на PascalABCNET


Задание c11

// Задание c11. Закрасить помеченные клетки

Решение Задания c11 на PascalABCNET


Задание c12

// Задание c12. Закрасить помеченные клетки

Решение Задания c12 на PascalABCNET


Задание c13

// Задание c13. Закрасить помеченные клетки

Решение Задания c13 на PascalABCNET


Задание c14

// Задание c14. Закрасить помеченные клетки

Решение Задания c14 на PascalABCNET


Задание c15

// Задание c15. Закрасить помеченные клетки

Решение Задания c15 на PascalABCNET


Задание c16

// Задание c16. Закрасить помеченные клетки

Решение Задания c16 на PascalABCNET


Задания на логические выражения

Task('if1') ... Task('if11');

Задание if1

// Задание if1. Обойти препятствие и закрасить клетку

Решение Задания if1 на PascalABCNET


Задание if2

// Задание if2. Закрасить клетки у стен (стены могут быть независимо слева, справа, сверху или снизу)

Решение Задания if2 на PascalABCNET


Задание if3

// Задание if3. Закрасить клетку в противоположном углу (Робот может находиться в любом из углов)

Решение Задания if3 на PascalABCNET


Задание if4

// Задание if4. Закрасить клетку, противоположную стене (стена может располагаться слева, справа, сверху или снизу)

Решение Задания if4 на PascalABCNET


Задание if5

// Задание if5. Закрасить клетки, в зависимости от наличия стены (стена может располагаться слева, справа, сверху или снизу)

Решение Задания if5 на PascalABCNET


Задание if6

// Задание if6. Закрасить клетку, противоположную закрашенной (закрашенная клетка может находиться слева, справа, сверху или снизу)

Решение Задания if6 на PascalABCNET


Задание if7

// Задание if7. Закрасить клетку, противоположную углу

Решение Задания if7 на PascalABCNET


Задание if8

// Задание if8. Закрасить клетки, используя вложенные операторы if

Решение Задания if8 на PascalABCNET


Задание if9

// Задание if9. Закрасить клетки, в зависимости от наличия стен слева и справа

Решение Задания if9 на PascalABCNET


Задание if10

// Задание if10. Закрасить клетки, в зависимости от наличия закрашенных клеток

Решение Задания if10 на PascalABCNET


Задание if11

// Задание if11. Закрасить первую незакрашенную клетку справа

Решение Задания if11 на PascalABCNET


Задания на циклы с условием

Task('w1') ... Task('w17');

Задание w1

// Задание w1. Пройти коридор переменной длины

Решение Задания w1 на PascalABCNET


Задание w2

// Задание w2. Закрасить коридор переменной длины

Решение Задания w2 на PascalABCNET


Задание w3

// Задание w3. Дойти до конца стены переменной длины

Решение Задания w3 на PascalABCNET


Задание w4

// Задание w4. Дойти до конца закрашенного ряда переменной длины

Решение Задания w4 на PascalABCNET


Задание w5

// Задание w5. Дойти до правого нижнего узла закрашенного прямоугольника

Решение Задания w5 на PascalABCNET


Задание w6

// Задание w6. Найти в стене проход и попасть в правый нижний угол

Решение Задания w6 на PascalABCNET


Задание w7

// Задание w7. Дойти до третьей закрашеной клетки. После первой закрашенной клетки надо идти вверх, после второй - вправо

Решение Задания w7 на PascalABCNET


Задание w8

// Задание w8. Закрасить все клетки над стеной переменной длины

Решение Задания w8 на PascalABCNET


Задание w9

// Задание w9. Перепрыгнуть стену с закрашиванием

Решение Задания w9 на PascalABCNET


Задание w10

// Задание w10. Обойти препятствия

Решение Задания w10 на PascalABCNET


Задание w11

// Задание w11. Закрасить все клетки вокруг стены

Решение Задания w11 на PascalABCNET


Задание w12

// Задание w12. Закрасить все клетки вокруг прямоугольника

Решение Задания w12 на PascalABCNET


Задание w13

// Задание w13. Поднятьтся до клетки, имеющей проход налево или проход направо

Решение Задания w13 на PascalABCNET


Задание w14

// Задание w14. Поднятьтся до клетки, имеющей проход налево и проход направо

Решение Задания w14 на PascalABCNET


Задание w15

// Задание w15. Закрасить клетку под первой закрашенной клеткой, под которой

Решение Задания w15 на PascalABCNET


Задание w16

// Задание w16. Идти до конца забора переменной длины

Решение Задания w16 на PascalABCNET


Задание w17

// Задание w17. Идти до конца забора переменной длины

Решение Задания w17 на PascalABCNET


Задания на циклы + логические выражения

Task('cif1') ... Task('cif22');

Задание cif1

// Задание cif1. Закрасить все клетки под стенами

Решение Задания cif1 на PascalABCNET


Задание cif2

// Задание cif2. Закрасить помеченные клетки

Решение Задания cif2 на PascalABCNET


Задание cif3

// Задание cif3. Закрасить помеченные клетки

Решение Задания cif3 на PascalABCNET


Задание cif4

// Задание cif4. Закрасить помеченные клетки

Решение Задания cif4 на PascalABCNET


Задание cif5

// Задание cif5. Закрасить помеченные клетки

Решение Задания cif5 на PascalABCNET


Задание cif6

// Задание cif6. Закрасить помеченные клетки

Решение Задания cif6 на PascalABCNET


Задание cif7

// Задание cif7. Закрасить помеченные клетки, используя два условных оператора в цикле

Решение Задания cif7 на PascalABCNET


Задание cif8

// Задание cif8. Закрасить помеченные клетки, используя два условных оператора в цикле

Решение Задания cif8 на PascalABCNET


Задание cif9

// Задание cif9. Закрасить помеченные клетки, используя три условных оператора в цикле

Решение Задания cif9 на PascalABCNET


Задание cif10

// Задание cif10. Закрасить помеченные клетки

Решение Задания cif10 на PascalABCNET


Задание cif11

// Задание cif11. Закрасить помеченные клетки, используя в условии две операции and

Решение Задания cif11 на PascalABCNET


Задание cif12

// Задание cif12. Закрасить помеченные клетки, используя в условии операции and и or

Решение Задания cif12 на PascalABCNET


Задание cif13

// Задание cif13. Закрасить помеченные клетки, используя в условии две операции and и одну or

Решение Задания cif13 на PascalABCNET


Задание cif14

// Задание cif14. Закрасить помеченные клетки, используя вложенные условные операторы

Решение Задания cif14 на PascalABCNET


Задание cif15

// Задание cif15. Закрасить помеченные клетки, используя вложенные условные операторы

Решение Задания cif15 на PascalABCNET


Задание cif16

// Задание cif16. Перейти в противоположный угол

Решение Задания cif16 на PascalABCNET


Задание cif17

// Задание cif17. Дойти до конца тупика переменного размера (вертикальный коридор может сворачивать направо или налево)

Решение Задания cif17 на PascalABCNET


Задание cif18

// Задание cif18. Перейти в конец более короткого ряда

Решение Задания cif18 на PascalABCNET


Задание cif19

// Задание cif19. Перейти в конец более короткой стены

Решение Задания cif19 на PascalABCNET


Задание cif20

// Задание cif20. Перейти в конец более длинной стены

Решение Задания cif20 на PascalABCNET


Задание cif21

// Задание cif21. Перейти на вторую закрашенную клетку

Решение Задания cif21 на PascalABCNET


Задание cif22

// Задание cif22. Найти выход и переместиться в левую верхнюю клетку поля

Решение Задания cif22 на PascalABCNET


Задания на переменные-счетчики

Task('count1') ... Task('count17');

Задание count1

// Задание count1. Дойти до правой стены, закрасить клетку и вернуться. Использовать переменную-счетчик

Решение Задания count1 на PascalABCNET


Задание count2

// Задание count2. Закрасить правый нижний угол и вернуться. Использовать два счетчика

Решение Задания count2 на PascalABCNET


Задание count3

// Задание count3. Переместить Робота в клетку, симетричную относительно диагонали

Решение Задания count3 на PascalABCNET


Задание count4

// Задание count4. Обойти стену переменной длины

Решение Задания count4 на PascalABCNET


Задание count5

// Задание count5. Закрасить периметр и вернуться назад

Решение Задания count5 на PascalABCNET


Задание count6

// Задание count6. Переместиться к ближайшей стене

Решение Задания count6 на PascalABCNET


Задание count7

// Задание count7. Обойти стену переменной длины (перегородка находится слева или справа)

Решение Задания count7 на PascalABCNET


Задание count8

// Задание count8. Остановиться на пятой закрашенной клетке

Решение Задания count8 на PascalABCNET


Задание count9

// Задание count9. Остановиться на третьей закрашеной подряд клетке

Решение Задания count9 на PascalABCNET


Задание count10

// Задание count10. Закрасить клетки до конца нижней стены, но не менее пяти

Решение Задания count10 на PascalABCNET


Задание count11

// Задание count11. Если длина тупика больше 4, то закрасить его первую клетку

Решение Задания count11 на PascalABCNET


Задание count12

// Задание count12. Закрасить помеченные клетки в коридоре переменной длины

Решение Задания count12 на PascalABCNET


Задание count13

// Задание count13. Закрасить помеченные клетки в коридоре переменной длины

Решение Задания count13 на PascalABCNET


Задание count14

// Задание count14. Закрасить помеченные клетки в коридоре переменной длины

Решение Задания count14 на PascalABCNET


Задание count15

// Задание count15. Закрасить помеченные клетки в коридоре переменной длины

Решение Задания count15 на PascalABCNET


Задание count16

// Задание count16. Закрасить все нечетные пролеты между закрашенными клетками

Решение Задания count16 на PascalABCNET


Задание count17

// Задание count17. Остановиться на первой клетке, нарушающей закономерность

Решение Задания count17 на PascalABCNET


Задания на вложенные циклы

Task('cc1') ... Task('cc19');

Задание cc1

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

Решение Задания cc1 на PascalABCNET


Задание cc2

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

Решение Задания cc2 на PascalABCNET


Задание cc3

// Задание cc3. Закрасить помеченные клетки, используя вложенный цикл с downto

Решение Задания cc3 на PascalABCNET


Задание cc4

// Задание cc4. Закрасить помеченные клетки, используя во внешнем цикле два

Решение Задания cc4 на PascalABCNET


Задание cc5

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

Решение Задания cc5 на PascalABCNET


Задание cc6

// Задание cc6. Закрасить помеченные клетки

Решение Задания cc6 на PascalABCNET


Задание cc7

// Задание cc7. Закрасить помеченные клетки, используя во внешнем цикле два вложенных цикла

Решение Задания cc7 на PascalABCNET


Задание cc8

// Задание cc8. Закрасить помеченные клетки, используя цикл с downto

Решение Задания cc8 на PascalABCNET


Задание cc9

// Задание cc9. Закрасить помеченные клетки, используя во внешнем цикле два вложенных цикла

Решение Задания cc9 на PascalABCNET


Задание cc10

// Задание cc10. Закрасить помеченные клетки

Решение Задания cc10 на PascalABCNET


Задание cc11

// Задание cc11. Закрасить помеченные клетки

Решение Задания cc11 на PascalABCNET


Задание cc12

// Задание cc12. Закрасить помеченные клетки

Решение Задания cc12 на PascalABCNET


Задание cc13

// Задание cc13. Закрасить помеченные клетки

Решение Задания cc13 на PascalABCNET


Задание cc14

// Задание cc14. Пройти лабиринт

Решение Задания cc14 на PascalABCNET


Задание cc15

// Задание cc15. Закрасить помеченные клетки

Решение Задания cc15 на PascalABCNET


Задание cc16

// Задание cc16. Закрасить помеченные клетки, используя вложенный цикл во вложенном цикле

Решение Задания cc16 на PascalABCNET


Задание cc17

// Задание cc17. Закрасить помеченные клетки, используя вложенный цикл во вложенном цикле

Решение Задания cc17 на PascalABCNET


Задание cc18

// Задание cc18. Закрасить помеченные клетки, используя цикл while внутри цикла for

Решение Задания cc18 на PascalABCNET


Задание cc19

// Задание cc19. Закрасить помеченные клетки. Высота поля может меняться

Решение Задания cc19 на PascalABCNET


Задания для процедуры без параметров

Task('ps1') ... Task('ps3');

Task('p1') ... Task('p15');

Задание ps1

// Задание ps1. Закрасить помеченные клетки. Составь процедуру PR2 и вызови её

Решение Задания ps1 на PascalABCNET


Задание ps2

// Задание ps2. Закрасить помеченные клетки. Скопируй процедуру PR3 из предыдушего задания и вызови её трижды

Решение Задания ps2 на PascalABCNET


Задание ps3

// Задание ps3. Закрасить помеченные клетки, Составь процедуру PD3 и вызови её трижды

Решение Задания ps3 на PascalABCNET


Задание p1

// Задание p1. Закрасить помеченные клетки, составив процедуру Cross

Решение Задания p1 на PascalABCNET


Задание p2

// Задание p2. Закрасить помеченные клетки, составив процедуру Square2

Решение Задания p2 на PascalABCNET


Задание p3

// Задание p3. Закрасить помеченные клетки, используя процедуру Square2

Решение Задания p3 на PascalABCNET


Задание p4

// Задание p4. Закрасить помеченные клетки, используя процедуру Square2. Оформить полученный алгоритм в виде процедуры Square4

Решение Задания p4 на PascalABCNET


Задание p5

// Задание p5. Закрасить помеченные клетки, используя процедуру Square4

Решение Задания p5 на PascalABCNET


Задание p6

// Задание p6. Закрасить помеченные клетки, составив процедуру Row, в которой Робот закрашивает ряд и возвращается назад

Решение Задания p6 на PascalABCNET


Задание p7

// Задание p7. Закрасить помеченные клетки, составив процедуру Column, в которой Робот закрашивает колонку и возвращается назад

Решение Задания p7 на PascalABCNET


Задание p8

// Задание p8. Закрасить помеченные клетки, составив процедуру Column, в которой Робот закрашивает колонку и возвращается назад

Решение Задания p8 на PascalABCNET


Задание p9

// Задание p9. Закрасить помеченные клетки, составив процедуру Column, в которой Робот закрашивает колонку и возвращается назад

Решение Задания p9 на PascalABCNET


Задание p10

// Задание p10. Закрасить помеченные клетки, составив процедуру Contour

Решение Задания p10 на PascalABCNET


Задание p11

// Задание p11. Закрасить помеченные клетки, составив процедуру Punktir

Решение Задания p11 на PascalABCNET


Задание p12

// Задание p12. Закрасить помеченные клетки, используя процедуру Punktir

Решение Задания p12 на PascalABCNET


Задание p13

// Задание p13. Закрасить помеченные клетки, используя процедуру Punktir

Решение Задания p13 на PascalABCNET


Задание p14

// Задание p14. Закрасить помеченные клетки, составив процедуры Row1 и Row2 для двух разновидностей рядов

Решение Задания p14 на PascalABCNET


Задание p15

// Задание p15. Закрасить помеченные клетки, составив процедуры Row1 и Row2 для двух разновидностей рядов

Решение Задания p15 на PascalABCNET


Задания для процедуры с параметрами

Task('pp1') ... Task('pp8');

Задание pp1

// Задание pp1. Закрасить помеченные клетки, составив процедуры с параметром RightN(n) и LeftN(n)

Решение Задания pp1 на PascalABCNET


Задание pp2

// Задание pp2. Закрасить помеченные клетки, составив процедуру с параметром PaintDown(n)

Решение Задания pp2 на PascalABCNET


Задание pp3

// Задание pp3. Пройти лабиринт. Составить процедуры с параметрами RightN(n), LeftN(n), UpN(n), DownN(n)

Решение Задания pp3 на PascalABCNET


Задание pp4

// Задание pp4. Закрасить помеченные клетки, составив процедуру SymbolT(m,h), где m - половина ширины символа T, а h - его высота

Решение Задания pp4 на PascalABCNET


Задание pp5

// Задание pp5. Закрасить прямоугольник, составив процедуру Rect(w,h), где w - ширина, h - высота прямоугольника

Решение Задания pp5 на PascalABCNET


Задание pp6

// Задание pp6. Закрасить несколько прямоугольников, составив процедуру Rect(w,h)

Решение Задания pp6 на PascalABCNET


Задание pp7

// Задание pp7. Закрасить помеченные клетки, составив процедуру Perimeter(w,h), где w - ширина, h - высота прямоугольника

Решение Задания pp7 на PascalABCNET


Задание pp8

// Задание pp8. Закрасить помеченные клетки, составив процедуру SymbolH(w,h,t), где w - ширина, h - высота прямоугольника

Решение Задания pp8 на PascalABCNET


Задания на смешанные циклы и процедуры

Task('mix1') ... Task('mix10');

Задание mix1

// Задание mix1. Закрасить прямоугольник переменного размера

Решение Задания mix1 на PascalABCNET


Задание mix2

// Задание mix2. Закрасить в шахматном порядке прямоугольник переменного размера

Решение Задания mix2 на PascalABCNET


Задание mix3

// Задание mix3. Закрасить квадрат, предварительно определив его размер

Решение Задания mix3 на PascalABCNET


Задание mix4

// Задание mix4. Найти закрашенную клетку

Решение Задания mix4 на PascalABCNET


Задание mix5

// Задание mix5. Найти закрашенную клетку и закрасить клетки, находящиеся с ней на одной вертикали и горизонтали

Решение Задания mix5 на PascalABCNET


Задание mix6

// Задание mix6. Закрасить те клетки у правой стены, для которых закрашены клетки левой стены

Решение Задания mix6 на PascalABCNET


Задание mix7

// Задание mix7. Закрасить горизонтальные ряды, в которых закрашены левая и правая клетки

Решение Задания mix7 на PascalABCNET


Задание mix8

// Задание mix8. Закрасить горизонтальные ряды, в которых закрашены левая и правая клетки и еще ровно одна

Решение Задания mix8 на PascalABCNET


Задание mix9

// Задание mix9. Закрасить прямоугольник, предварительно определив его размер, и вернуться в начальную позицию. Закрашенная клетка находится левее и ниже Робота

Решение Задания mix9 на PascalABCNET


Задание mix10

// Задание mix10. Закрасить прямоугольник, предварительно определив его размер, и вернуться в начальную позицию

Решение Задания mix10 на PascalABCNET


Экзамен

Task('examen1') ... Task('examen10');

Экзамен 1

// Задание examen1. Закрасить помеченные клетки, составив процедуру Punktir

Решение Экзамен 1 на PascalABCNET


Экзамен 2

// Задание examen2. Закрасить помеченные клетки, используя процедуру Punktir

Решение Экзамен 2 на PascalABCNET


Экзамен 3

// Задание examen3. Закрасить помеченные клетки, составив процедуру Perimeter(n,m)

Решение Экзамен 3 на PascalABCNET


Экзамен 4

// Задание examen4. Закрасить все клетки вокруг прямоугольника

Решение Экзамен 4 на PascalABCNET


Экзамен 5

// Задание examen5. Закрасить все клетки в коридоре переменной длины

Решение Экзамен 5 на PascalABCNET


Экзамен 6

// Задание examen6. Закрасить помеченные клетки, используя 2 условных оператора в цикле

Решение Экзамен 6 на PascalABCNET


Экзамен 7

// Задание examen7. Закрасить помеченные клетки, используя в условии "and" и "or"

Решение Экзамен 7 на PascalABCNET


Экзамен 8

// Задание examen8. Закрасить клетку в противоположном углу

Решение Экзамен 8 на PascalABCNET


Экзамен 9

// Задание examen9. Закрасить угол и вернуться. Использовать два счетчика

Решение Экзамен 9 на PascalABCNET


Экзамен 10

// Задание examen10. Обойти стену

Решение Экзамен 10 на PascalABCNET

// PascalABC.NET 3.10 & executor robot