[an error occurred while processing this directive]

.цв






ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ НА ЛОГО


в среде ОС ОНИКС














В.Шевкунов

Москва, 1991
.ов
.сс
Содержание
______________________________________________________________



Как пользоваться руководством
______________________________________________________________

1  Знакомство с черепашкой
______________________________________________________________
Если сделана ошибка
Резюме

2  Не надо делать лишнюю работу
______________________________________________________________
Команда REPEAT
Поворачивающийся квадрат
Резюме

3  Что умеет черепашка
______________________________________________________________
Карандаш и стирательная резинка
Смена параметров линии
Три типа экранов
Цвета
Резюме

4  Обучение черепашки
______________________________________________________________
Резюме

5  Сохранение процедур и рисунков
______________________________________________________________
Просмотр процедур
Запись процедур
Запись рисунков
Резюме

6  Дальнейшее знакомство с процедурами
______________________________________________________________
Использование одной процедуры внутри другой
Использование нескольких процедур внутри других
Резюме

7  Что делать, если процедура не работает
______________________________________________________________
Делайте процедуры небольшими
Отладка программ
Резюме

8  Передача параметров в процедуру
______________________________________________________________
Резюме

9  Использование вычислений в ЛОГО
______________________________________________________________
Изменение порядка вычислений
Использование дробных чисел
Использование отрицательных чисел
Резюме

10 Использование переменных
______________________________________________________________
Одинаковые имена переменных
Резюме

11 Рекурсия
______________________________________________________________
Выход из рекурсии
Арифметическая рекурсия
Резюме

12 Несколько черепашек
______________________________________________________________
Произвольные перемещения
Рисование кругов
Двигающиеся буквы
Резюме

13 Черепашья навигация
______________________________________________________________
Перемещение в точку
Определение места
Черепаший Остров
Резюме

14 Игра словами
______________________________________________________________
Как ЛОГО оперирует со словами
Как извлечь слово из списка
Как извлечь меньший список из большего
Объединение списков
Слова тоже могут быть списками!
Пишем задом-наперед
Резюме

15 Создание интерактивных процедур
______________________________________________________________
Чтение символов с клавиатуры
Улучшение процедур
Резюме

Приложение А
______________________________________________________________
Редактирование командных строк

Приложение Б
______________________________________________________________
Редактирование процедур

Приложение В
______________________________________________________________
Использование цветов

Приложение Г
______________________________________________________________
Примитивы ЛОГО

.сс
Как пользоваться руководством
______________________________________________________________

Если Вы не знакомы с языком программирования ЛОГО - та книга для Вас. Она научит Вас основным идеям ЛОГО с помощью примеров, которые Вы сможете, и будете должны выполнить. Если Вы, начав читать руководство, найдете его слишком подробным, рекомендую воспользоваться резюме, которые приводятся в конце каждой главы.

.сс

1 Знакомство с черепашкой

______________________________________________________________

Черепашка в ЛОГО - это маленькое существо, живущее на экране Вашего компьютера, и Вы можете научить ее выполнять довольно сложные вещи. Она уже умеет кое-что, например, двигаться вперед и назад или поворачиваться.

Черепашка имеет карандаш, который может оставлять за ней след различного цвета. Вы можете использовать команды, которые понимает черепашка, для создания различных рисунков. Вы, также можете научить ее новым словам которые расширяют ее "словарь" и помагают рисвоать более сложные рисунки.

Теперь давайте взглянем на черепашку. Для этого загрузите ОС ОНИКС и с помощью команды *SRLOAD загрузите файлы LOGO1 и LOGO2 в банки 2 и 3. Затем нажмите УПР+СБР и наберите *LOGO и нажмите клавишу ВВОД.

На экране должно появиться сообщение Weluome to Logo.

Не забывайте в конце каждой строки нажимать ВВОД. Пока Вы этого не сделаете набранная строка будет просто отображаться на экране.

После запуска ЛОГО черепашка находится в центре экрана в виде треугольника, а зона ее перемещения ограничена линией по краю экрана.

Знак "?" внизу экрана называется "промпт". Он появляется каждый раз, когда компьютер ожидает ввода команды. Справа от промпта мигает прямоугольник. Он называется "курсор" и показывает, где будет напечатан очередной символ.

Когда Вы дочитаете этот абзац введите две строки, напечатанные ниже и посмотрите что случится. Проверьте каждую строку до нажатия ВВОД. Если Вы сделали ошибку - не беда, воспользуйтесь клавишей УДАЛИТЬ (точка на функциональной клавиатуре) для уничтожения неправильно набранного текста и наберите строку правильно.

FORWARD 100

LEFT 60

FORWARD (вперед), LEFT (налево) и другие слова, которые понимает черепашка называются "команды". Числа после команд наываются "параметры". Команды можно рассматривать как детали конструктора или кубики, из которых можно создавать сложные конструкции - "программы".

RIGHT (напараво) и BACK (назад) - две другие команды, похожие на уже нам известные, они также требуют входных параметров. Попытайтесь сами понять, как работают команды RIGHT и BACK.

Вы можете различные значения в качестве входных параметров.

Вместо полных названий команд можно использовать сокращения. FORWARD имеет сокращенную форму FD, BACK - BK, RIGHT - RT, а LEFT - LT. Когда в руководстве будет объясняться новая команда, за ней в скобках будет даваться ее сокращенный вариант, например: FORWARD (FD).

Есть еще три команды, которые помогоут Вам в Вашей учебе: DRAW, HOME и CLEAN. DRAW и HOME обе возвращают черепашку в начальную позицию, но они имеет различное действие. Выполните их и определите, в чем же заключается разница. Затем выполните команду CLEAN.

Если сделана ошибка.

Каждый делает ошибки в процессе обучения. В ЛОГО, наиболее частая ошибка пропуск пробела между командой и ее параметром.

Например:

FORWARD100

Следующая наиболее частая ошибка неправильное написание команды. Например FORWRAD 100 вместо FORWARD 100. Если Вы обнаружили ошибку до нажатия ВВОД, Вы можете откорректировать ее с помощью клавиши УДАЛИТЬ как было описано выше. Если клавиша ВВОД уже нажата ЛОГО выдаст сообщение

Logo doesn't know how to FORWRAD

Теперь Вы можете ввести строку сначала.

Резюме

1. Для запуска ЛОГО загрузите файлы LOGO1 и LOGO2 в банки 2 и 3 с помощью команды *SRLOAD. Нажмите УПР+СБР а затем наберите *LOGO. Черепашка - треугольник в центре экрана. Символ "?" - "промпт".

2. Вы можете перемещать черепашку с помощью команд FORWARD(FD), BACK(BK), LEFT(LT) и RIGHT(RT). Например:

FORWARD 100

LT 60

Число после команды называется "параметр".

3. HOME и DRAW возвращают черепашку в начальную позицию. DRAW очищает экран, а HOME нет. CLEAN очищает кран, но оставляет черепашку на месте.

.сс

2 Не надо делать лишнюю работу

______________________________________________________________

Если Вы уже проявили самостоятельность, Вы уже должны были нарисовать что-нибудь, например квадрат используя команды типа:

FORWARD 100
LEFT 90
FORWARD 100
LEFT 90
FORWARD 100
LEFT 90
FORWARD 100
LEFT 90

Итак, на каждой строке находится по одной команде, однако это не обязательно. Если хотите, можете поместить несколько команд на каждой строке, чтобы программа выглядела понятнее:

FORWARD 100 LEFT 90
FORWARD 100 LEFT 90
FORWARD 100 LEFT 90
FORWARD 100 LEFT 90

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

Вы заметили, что последние несколько строк отображаются на экране, напоминая об уже проделанной работе. Если вы вводили по две-три команды в каждой строке, эти строки будут содержать больше информации чем если бы Вы вводили по одной команде в каждой строке.

Команда REPEAT

В ЛОГО часто бывает нужно выполнить какую-либо группу команд несколько раз. Когда например, Вы рисовали квадрат, Вы четыре раза вводили команды:

FORWARD 100 LEFT 90

Вместо этого достаточно было ввести:

REPEAT 4 [FORWARD 100 LEFT 90]

Это буквально означает:"Повторить выполнение списка команд внутри квадратных скобок четыре раза". Очистите экран и выполните пример.

Если Вы ввели слишком большое число повторов, например:

REPEAT 4000 [FORWARD 100 LEFT 90]

ЛОГО будет продолжать рисовать квадрат очень долго. Если Вам нужно остановить работу, нажмите РЕД.

Вы можете использовать REPEAT для рисования треугольников. Попрбуйте сделать это самостоятельно. Вам бед интересно посмотреть, что произойдет, если в квадратные скобки включить другие команды.

Ниже предлагается два примера для выполнения. Введите их и посмотрите, что получится.

REPEAT 6 [FD 200 BK 200 LT 60]
REPEAT 12 [FD 200 BK 200 LT 30]

Можете нарисовать рисунок с 24-мя лучами?

Теперь попробуйте следующее:

REPEAT 24 [FD 200 LT 60 FD 100 BK 100 RT 60 BK 200 LT 15]
REPEAT 6 [FD 100 LT 30 FD 50 RT 90]

Попробуйте нарисовать другие рисунки с помощью REPEAT.

Поворачивающийся квадрат

Вы можете получить очень занимательные рисунки рисуя квадраты с поворотом каждого квадрата относительно предыдущего. Выполните пример:

REPEAT 12 [LEFT 30 REPEAT 4 [FORWARD 200 LEFT 90]]

Вас может смутить то, что команда REPEAT стоит внутри квадратных скобок другой команды REPEAT. На самом деле многие команды позволяют это делать.

На самом деле имеется более короткий путь получения последнего рисунка, однако об этом Вы узнаете чуть позже.

Резюме

1. Вы можете помещать несколько команд в одной строке. Например, следующие команды рисуют квадрат:

FORWARD 100 LEFT 90
FORWARD 100 LEFT 90
FORWARD 100 LEFT 90
FORWARD 100 LEFT 90

2. Вы можете повторять выполнение группы команд используя REPEAT. Например, нарисовать квадрат:

REPEAT 4 [FORWARD 100 LEFT 90]

Команды внутри квадратных скобок выполняются четыре раза.

.сс

3 Что умеет черепашка

______________________________________________________________

Черепашка имеет "карандаш", как Вы уже заметили, который оставляет след при ее перемещении. Она также имеет "стирашку". Кроме того, карандаш может работать в режиме пунктирной линии или сплошной.

Если Вы имеете Агат-9 с цветным дисплеем, Вы можете рисовать различными цветами и менять цвет фона экрана.

Карандаш и стирательная резинка

Вы можете подымать и опускать карандаш с помощью команд PENUP(PU) и PENDOWN(PD). Введите следующий пример и посмотрите, что получится:

REPEAT 9 [FD 50 LT 20 PENUP FD 50 LT 20 PENDOWN]

Получится 18-ти сторонняя фигура, но нарисованы будут только нечетные стороны.

Теперь, прежде чем что-то делать, введите следующее и посмотрите:

PE REPEAT 9 [FD 50 LT 20 FD 50 LT 20]

Первая команда в строке, PE, сокращение Pen Erase (стирающий карандаш) переводит черепашку в режим стирашки. Остальные команды перемещают черепашку по нарисованному многоугольнику стриая его. Если Вы попытаетесь переместить черепашку, она не будет оставлять за собой следа, т.к. стирашка все еще опущена. Для замены ее карандашом надо ввести команду

PENDOWN

Потренируйтесь с этими тремя командами. Например заставьте черепашку рисовать подымая и опуская карандаш.

Смена параметров линии

Меняя "толщину" карандаша можно получать линии различной ширины. Команда ЛОГО SETNIB позволяет получать пунктирные линии и другие эффкеты. Выполните следующее:

DRAW
SETNIB 80
REPEAT 4 [FD 200 LT 90]

Число после команды SETNIB задает тип линии.

Теперь выполните следующее:

DRAW
SETNIB 16
HIDETURTLE
REPEAT 4 [FD 200 LT 90]

Вы можете "гасить" изображение черепашки командой HIDETURTLE(HT) и "включать" его командой SHOWTURTLE(ST).

Обычно установлен тип карандаша "8". Этот тип устанавливается автоматически командой DRAW. Пропробуйте различные тпы карандашей.

Три типа экранов

Введите следующее и посмотрите, что произойдет:

DRAW
RIGHT 35 [REPEAT 10 [FORWARD 190]]

Как только черепашка выходит за границу экрана, она появляется с противоположной стороны. Это первый экранный режим.

Теперь попробуем ввести следующие команды и посмотрим, что случится:

DRAW
WINDOW
FORWARD 1000
RIGHT 180
FORWARD 1000
RIGHT 180

Ваша черепашка уползет за границу экрана, развернется и вернется обратно.

Теперь мы имеем второй тип экрана. Вы выбрали его командой WINDOW. Чтобы вернуться в первый режим, надо ввести команду WRAP.

Если вы не хотите "выпускать" черепашку за пределы экрана, вы можете установить "загородку" командой FENCE. Если черепашка столкнется с загородкой, будет выдано сообщение:

Turtle hit fence

Это и есть третий тип экрана.

Попробуйте выполнить следующее:

DRAW
FENCE
FORWARD 600
BACK 400

Вы можете убрать загородку и выбрать первый режим используя команду WRAP. Введите следующее:

WRAP
CLEAN
FORWARD 1000
RIGHT 180
FORWARD 1000
RIGHT 180

Цвета

Если у Вас Агат-7 или Агат-9 с монохромным монитром, можете пропустить этот раздел.

Вначале устанавливается черный цвет фона и белый цвет карандаша, но Вы можете поменять их. Количество цветов зависит от "экранного режима", от типа машины (Агат-7 или Агат-9) и дисплея (цветной или монохромный). Подробно экранные режимы описаны в Приложении В.

Когда ЛОГО запускается включается 4-й экранный режим. Вы можете сменить его командой SETMODE. Введите, например, следующее:

SETMODE 2
SETBG 2
SETPC 1
REPEAT 24 [LT 15 REPEAT 4 [FD 200 LT 90]]

Команды SETBG (SET BackGround colour) и SETPC (SET Pen Colour) задают цвет фона и карандаша. Значения для каждой команды описываются в Приложении В для каждого экранного режима. Попробуйте разные значения. Теперь добавьте команду SETNIB, чтобы посмотреть результат ее действия вместе с командами SETPC и SETBG. Например:

SETMODE 2
SETBG 2
SETPC 1
SETNIB 80
REPEAT 24 [LT 15 REPEAT 4 [FD 200 LT 90]]

Теперь введите следующее:

SETMODE 2
SETBG 2
SETPC 1
SETNIB 80
PENUP FD 200 PENDOWN
REPEAT 24 [LT 15 REPEAT 4 [FD 200 LT 90]]

Вы можете также использовать команду SETPT (SET Pen Type). Она задает способ нанесения цвета на экран. Следующий пример поможет Вам разобраться в ее действии:

HOME
CLEAN
SETNIB 80
SETPT 3
REPEAT 4 [FD 200 LT 90]

Резюме

1. Черепашка перестает оставлять за собой след после команды PENUP(PU) и начинает оставлять его за собой после команды PENDOWN(PD).

2. Вы можете удалять линии используя "стирашку". Стирашка выбирается командой PE (Pen Erase).

3. Команда SETNIB задает толщину карандаша и тип линии (сплошная или пунктирная). По умолчанию SETNIB = 8.

4. После запуска ЛОГО устанавливает первый тип экрана: если черепашка достигает границы экрана, она появляется с противополжной стороны. Команда WRAP выбирает первый тип экрана.

5. Если Вы ввели команду WINDOW, экран представляется как часть большой области, по которой черепашка может двигаться. Если черепашка выползает за пределы экрана она все равно продолжает выполнять Ваши команды, хотя этого и не видно.

6. Вы можете поставить "загородку" по периметру экрана, чтобы не допустить уползания черепашки за пределы экрана. Для этого используется команда FENCE.

7. Вы можете выбирать цвета фона и карандаша командами SETPC (SET Pen Colour) и SETBG (SET BackGround colour). Наличие цветов зависит от номера экранного режима, задаваемого командой SETMODE. Цвета, соответствующие экранным режимам описаны в Приложении В.

.сс

Обучение черепашки

______________________________________________________________

Вы можете объединять часто используемые группы команд в процедуры для удобства их использования. Как ниболее простой пример, можно объединить команды рисующие квадрат в процедуру. Для этого надо добавить две команды в начале и в конце процедуры:

TO SQUARE
FORWARD 100
LEFT 90
FORWARD 100
LEFT 90
FORWARD 100
LEFT 90
FORWARD 100
LEFT 90
END

Первая строка называется "заголовок процедуры". Команда TO говорит ЛОГО, что Вы хотите "определить" процедуру, а "SQUARE" - название процедуры. Последняя строка процедуры, END, говорит ЛОГО, что это конец процедуры. Между заголовком и концом процедуры расположено ее "тело".

Когда Вы будете вводить команды, ничего сразу исполняться не будет, вместо этого команды будут записываться в память компьютера. Когда Вы введете первую линию, промпт "?" заменится на ">".

Промпт "?" означает: "Скажи, что мне выполнить"; а ">": "Научи, как выполнить".

Когда вы введете END, промпт вернется в исходное состояние "?".

Если Вы хотите удалить процедуру введите следующее:

ERASE "SQUARE

Команда ERASE заставляет ЛОГО забыть процедуру.

После ввода процедуры Вы получите сообщение SQUARE defined (процедура SQUARE определена). Теперь Вы можете ее вызвать, набрав:

SQUARE

Черепашка должна нарисовать квадрат. Затем введите:

DRAW

SQUARE

Это вызовет очистку экрана и повторное рисование квадрата.

Теперь попробуйте создать похожие процедуры. Например, можно изменить параметр команды FORWARD. Не забудьте дать новым процедурам разные имена.

Затем попробуйте поместить несколько процедур внудри квадратных скобок команды REPEAT и посмотрите что получится. Поэкспериментируйте, добавляя разные команды внутри скобок.

Процедуры это просто особый тип команд, только они созданы Вами самими. Другая группа команд, типа FORWARD, LEFT и DRAW, называются "примитивы", т.к. они служат основой для создания более сложных процедур. Теперь слово "процедура" будет использоваться для обозначения команд, созданных Вами, а слово "примитив" будет означать команду, "встроенную" в ЛОГО.

Резюме

Вы можете определять "процедуры", которые экономят время при наборе часто используемых групп команд. Это делается добавлением двух строк в начале и в конце процедуры, как показано ниже:

TO SQUARE
FORWARD 100
LEFT 90
FORWARD 100
LEFT 90
FORWARD 100
LEFT 90
FORWARD 100
LEFT 90
END

Первая строка наывается "заголовок процедуры"; она говорит ЛОГО о начале определения процедуры и имя процедуры (в нашем случае SQUARE). Последняя строка говорит ЛОГО, что введена последняя строка процедуры.

После определения процедуры, Вы можете вызвать ее, введя ее имя:

SQUARE

"Процедуры" - это команды, которые Вы определяете самостоятельно. "Примитивы" - это команды, встроенные в ЛОГО, из которых Вы можете создавать процедуры.

Команда ERASE уничтожает процедуру, например:

ERASE "SQUARE

.сс

.ст лого2

[an error occurred while processing this directive]