Основные понятия

Условием для исполнителя является понятное исполнителю высказывание, которое может быть истинным (соблюдаться) либо быть ложным (не соблюдаться).

Система условий для исполнителя Робот

WallFromLeft – возвращает True если слева от Робота стена;

WallFromRight – возвращает True если справа от Робота стена;

WallFromUp – возвращает True если сверху от Робота стена;

WallFromDown – возвращает True если снизу от Робота стена;

FreeFromLeft – возвращает True если слева от Робота свободно;

FreeFromRight – возвращает True если справа от Робота свободно;

FreeFromUp – возвращает True если сверху от Робота свободно;

FreeFromDown – возвращает True если снизу от Робота свободно;

CellIsPainted – возвращает True если ячейка, в которой находится Робот, закрашена;

CellIsFree – возвращает True если ячейка, в которой находится Робот, не закрашена.

В представленном примере для Робота будут истинны следующие условия:
WallFromLeft
WallFromUp
FreeFromRight
FreeFromDown
CellIsPainted
Ложными будут условия :
WallFromRight
WallFromDown
FreeFromLeft
FreeFromUp
CellIsFree

Цикл с предусловием

Алгоритмическая конструкция цикл с предусловием (цикл «пока») — способ организации цикла, при котором количество выполнений команд тела цикла зависит от истинности или ложности условия цикла.

Для записи цикла с предусловием используется команда while. Формат записи команды следующий:

while <условие> do

begin

тело цикла;

end;

Строка while <условие> do является заголовком цикла. Эту строку можно прочитать следующим образом: «Пока верно условие, делай». Команды begin и end; в данном случае играют роль операторных скобок.

Пример 11.3. Задание W2 из электронного задачника

uses Robot;
begin
  Task('w2');
  while FreeFromRight do
  begin
    paint;
    right;
  end; 
  paint;
end. 

Упражнения

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

uses Robot; 
begin 
  Field( , );
  while FreeFromRight do begin
    paint;
    down;
    right;
    paint;
    up;
    right;
  end;
end.

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

2. Напишите программу для решения задач w3 и w8 из встроенного задачника. Обращайте внимание на начальное и конечное положение Робота.

3. Составьте алгоритм, выполнив который Робот нарисует «узор» из задания 1 вдоль левого края поля исполнителя. Каким должен быть вертикальный размер поля исполнителя? (Задача myrob5 из модуля RobTasks.)

4. Робот находится на квадратном поле неизвестного размера. Начальное положение Робота — верхний левый угол. Составьте и выполните алгоритм, по которому Робот переместится из начального положения в нижний правый угол и закрасит все клетки своего пути. На каком (на каких) из рисунков изображено решение этой задачи? Почему?

а)

б)

в)

5. На поле Робота размещен «забор» — горизонтальная стена. Забор нужно «покрасить» — закрасить все клетки сверху стены. В «заборе» могут быть одни «ворота» — клетка без линий. Длина «забора» и расположение «ворот» не известны. (Задача myrob7 из модуля RobTasks.)

6. По блок-схеме запишите программу для исполнителя Робот. (Задача myrob8 из модуля RobTasks.) Каким будет результат для каждой из предложенных начальных обстановок?

7. Решите задачу w10 из встроенного задачника. Напишите вспомогательный алгоритм для обхода одной стены.