Задания для робота
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