Читайте также:
|
|
Рассмотрим следующую задачу. Робот расположен в клетке над горизонтальной стеной неизвестной длины. Надо переместить Робота на клетку вниз — «сквозь стену» (рис. 57).
Рис. 57
Поскольку Робот сквозь стену проходить не умеет, стену нужно обойти. Сделать это можно так. Пока ниже Робота стена, будем двигать его вправо и по дороге считать число шагов (число команд вправо). Как только стена кончится, сместим Робота вниз и начнем двигать его обратно (влево). Тут нам и понадобится запомненная ранее информация о числе шагов вправо: скомандуем Роботу влево столько же раз, сколько было сделано шагов вправо, и он окажется в точке Б.
Запишем теперь алгоритм "вниз сквозь стену", используя для подсчета сделанных вправо шагов целочисленную величину п:
|
алг вниз сквозь стену
дано | Робот над горизонтальной стеной, других стен нет
надо | Робот под стеной, на клетку ниже исходного положения
нач цел n
n:=0
нц пока снизу стена
I вправо; n:= n + 1
кц
вниз
влево
кц
кон
При выполнении этого алгоритма компьютер сначала присвоит величине п значение 0 (команда n:= 0). Затем в цикле компьютер будет командовать Роботу вправо и тут же увеличивать значение п на 1 (команда n:= n + 1). После каждого выполнения тела цикла значение п окажется равным числу сделанных Роботом шагов вправо. После окончания цикла значением п будет общее число сделанных вправо шагов. Поэтому, при выполнении нц n раз компьютер п раз скомандует влево, Робот окажется в точности на клетку ниже исходного положения (рис. 58).
Рис. 58
Дата добавления: 2015-07-14; просмотров: 130 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Модель памяти компьютера | | | Рисование параболы |