[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]