Использование основных алгоритмических конструкций для исполнителя Робот

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

Следование, цикл и ветвление — базовые алгоритмические конструкции. Используя эти конструкции как элементы некоего «конструктора», можно составлять и разрабатывать любые алгоритмы.

Структуру, когда внутри одного цикла выполняется другой, называют вложенными циклами.

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

uses Robot;

begin

Task(‘cif1’);

while FreeFromRight do begin

if WallFromUp then paint;

right;

end;

if WallFromUp then paint;

end.

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

uses Robot;

begin

Task('cif17');

while FreeFromUp do up;

if FreeFromLeft then

while FreeFromLeft do left

else

while FreeFromRight do right;

end.

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

uses Robot;

begin

Task('cc5');

for var i:=1 to 4 do begin

while FreeFromRight do right;

down;

while FreeFromLeft do left;

down;

end;

end.

Упражнения

Проверь себя на знание предыдущих тем:

1. Объясните, какие алгоритмические структуры используются в приведённых ниже программах. Нарисуйте блок-схемы данных алгоритмов. Предложите пример начальной обстановки, в которой алгоритм будет выполняться корректно.

uses Robot;

begin

while WallFromLeft do

begin

down;

paint;

end;

end.

uses Robot;

begin

while CellIsPainted do

if FreeFromleft then left;

end.

2. Запишите алгоритмы, используя базовые алгоритмические структуры. Постройте соответствующие блок-схемы.

    1. Тело цикла, выполняющегося при условии WallFromUp, состоит из двух команд: right и paint.

    2. Если условие FreeFromRight не выполняется, то, если клетка не закрашена, ее нужно закрасить, а если закрашена, то сдвинуться влево.

    3. Проверку условия CellIsPainted нужно производить до тех пор, пока снизу нет стен. При выполнении условия сдвинуться вниз, при невыполнении условия — закрасить клетку.

3. Для решения задачи cif3 из встроенного задачника Миша написал программу, но она работает неправильно. Какие ошибки допустил Миша?

uses Robot;

begin

Task('cif3');

while WallFromRight do

begin

if WallFromDown or WallFromUp then

paint;

right;

end;

if WallFromUp and WallFromDown then

paint;

end.

4. Заполните пропуски в программе решения задачи cc14 из встроенного задачника так, чтобы она работала верно.

uses Robot;

begin

Task('cc14');

for var i:=1 to 4 do

begin

while … do right;

down;

while … do left;

down;

end;

end.

5. Решите задачу cif2 из встроенного задачника, используя внутри цикла команду ветвления.

6. Решите задачу cc7 из встроенного задачника, использовав внутри одного цикла два вложенных цикла.

7. Придумайте задачу для исполнителя Робот, в которой будут использоваться различные алгоритмические конструкции.