Задания для робота
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 если ячейка, в которой находится Робот, не закрашена.
Для вызова задания для исполнителя Робот используется следующий шаблон программы:
Здесь 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