Уроки Лого

Знакомство --Новые команды -- Пишем свои команды -- Играем случайными числами -- Процедуры и параметры -- Числа, слова, списки -- Рекурсия!

Урок первый

Представление черепашки. Первые команды. Начать и кончить

Научиться программировать нам поможет специальный компьютерный житель черепашка.

Происхождение черепашки

Сначала был построен механический робот, который умел выполнять команды компьютера и, подчиняясь этим командам ползал по полу. Он умел позти вперед и назад, поворачиваться направо и налево. Сначала этого робота звали Ирвин. Потом один из его создателей познакомился с девушкой, папу которой тоже звали Ирвином. Пришлось переименовать робота. Назвали его Черепашкой. Затем сделали компьютерного двойника черепашки, который двигается по экрану. Эта комапьютерная черепаха тоже управляется командами, если мы их правильно написали. Чтобы не ошибаться в написании команд потренируйтесь в спасении китов. Главное - не забывайте ставить пробел между командой и числом!

Первые команды к черепашке -

FD, BK, LT, RT - вперед, назад, налево, направо

Примеры

FORWARD 
FD 
Например -  FD 40 - черепашка делает 40 шажков вперед

BACK
BK
Например -  BK 50 - черепашка делает 50 шажков назад

RIGHT
RT
Например -  RT 90 - черепашка поворачивается вправо на 90 градусов 

LEFT
LT
Например -  LT 45 - черепашка поворачивается влево на 45 градусов

LT 180 и RT 180 - совершенно одно и то же по результату

Как запустить Лого? Напишите в командной строке - logo Как завершить работу? Напишите в командной строке - BYE


Урок второй - узнаем новые команды

Что еще может черепашка. Еще одна порция команд.
PU, PD, CS, HT, ST, CT, HOME

PENUP - поднять перо. После этой команды черепашка не оставляет следа
PU

PENDOWN  - опустить перо
PD 


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

ST - показать черепашку

CS - очистить экран - все римунки стираются. 
Черепашка возвращается в исходное состояние
в центре

HOME - домой - Черепашка возвращается в исходное состояние
в центре

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

Повтори! - Repeat

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

REPEAT 10 [FD 10 rt 7]

Команды другой группы FD, RT, REPEAT требуют для своего исполнения параметров - чисел или слов. Такие команды в Лого называют процедурами.
Процедуры требуют значений!
Попробуйте сказать черепашке просто - FORWARD

Она ответит -
not enough inputs - маловато параметров будет!
Обязательно нужно сказать повернись на 90 градусов, пройди 60 шагов, повтори 3 раза.

Пример еще одной команды с параметром - SETPENCOLOR
SETPENCOLOR 5 Теперь мы можем командовать черепашке пером какого цвета ей надо рисовать.

Задание Нарисуйте три отдельно стоящих треугольника синим, красным и зеленым цветом.


Урок 3 - Пишем свои команды

В Лого очень много его встроенных команд и процедур, кроме тех с которыми мы уже познакомились. Однако, все они - только кирпичики, из которых мы можем строить свои собственные команды. Например, может быть выражение REPEAT 10 [FD 10 rt 7] нам еще пригодится, а набирать его будет лень. Мы может назвать это выражение любым словом:

TO DUGA
REPEAT 10 [FD 10 rt 7]
END

Из внутренних команд Лого можно легко построить новые, свои собственные команды. Например:

TO T1
RT 120 FD 50 RT 120 FD 50 RT 120 FD 50
END

Теперь у нас есть команда T1, по которой черепашка нарисует нам треугольник, всякий раз, когда мы ее об этом попросим. Запомните, что новая команда должна начаться словом TO и закончиться строкой со словом END. Новая команда может быть названа любым словом, если этим словом уже не названа другая команда. Если слово уже использовано, то Лого сообщит об этом. Например, если я попытаюсь создать еще одну новую команду T1, появится надпись: T1 already defined - эта команда уже определена - занято!

В Лого всякая новая процедура об'ясняется черепашке. Слово TO говорит черепашке - это новая команда, а слова END, сообщает - новая команда написана полностью.
После этого Черепашка Лого напишет, что эта процедура определена -

duga defined

Теперь мы можем использовать эту дугу по собственному усмотрению.

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


Урок 4 - играем случайными числами

Случайные числа порождаются командой RANDOM число. Например:

PRINT random 60
37
PRINT random 60
24

Команда RANDOM требует на входе некое число N, а в результате позволяет получить число в интервале от 0 до N.

Чтобы насладиться ее силой, попробуйте:
REPEAT 100 [RT RANDOM 360 FD RANDOM 30]

Это пример частицы, двигающейся в случайном направлении и со случайной скоростью.

А для того, чтобы нарисовать три четверти ежика, я воспользовался старой процедурой Круг -
Еще один пример игры со случайными значениями - проект "Хазарского дня":
Описание проекта
Демонстрация -

- Процедуры и параметры.

Мы знаем уже много команд и можем с их помощью рисовать разные фигуры - круги, квадраты, треугольники. Теперь хочется рисовать эти фигуры разного размера. Например, сказать черепашки - нарисуй квадрат со стороной 30, а теперь со стороной 40 или 20. Для того, чтобы сделать это надо создавать команды или процедуры с параметрами. Эти процедуры нам уже знакомы - FD, RT, Repeat - все они требовали для своей работы значение.

TO QWADRAT :SIZE
REPEAT 4 [RT═90 FD :SIZE]
END

QWADRAT 10 FD═20 QWADRAT 20

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

TO KRUG :SIZE
REPEAT 120 [RT 3 FD :SIZE BK :SIZE]
END


Урок 6 - числа, слова, списки

Черепашка может не только ползать по экрану, но и писать на нем цифры, слова и предложения. Для записей на графическом экране используем команду LABEL. Для записи в текстовом режиме используется команда PRINT Например:

Пример

Эти примеры представляют типы данных, которые использует Лого -
Числа, слова, списки

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

Иногда требуется, чтобы словом было целое предложение. Тогда нужно записать его следующим образом:
|Это слово, потому что оно окружено специальными символами|

Список - это несколько слов или цифр. Список всегда заключен в квадратные скобки. Это очень полезный контейнер, куда можно очень многое положить. Например:

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


Рекурсия

Рекурсия. Условия прерывания

TO QWADRAT :size
repeat 4 [rt 90 fd :size]
end
TO TREUG :size
repeat 3 [rt 120 fd :size]
end
TO DOM :size
QWADRAT :size LT 90 TREUG :size
END
Вспомните, как создаются новые процедуры.
В Лого все процедуры равноправны. Я могу отдельно написать команды квадрат и треугольник, а потом об'единить их в команде домик. При этом какая из процедур - домик, квадрат или треугольник будет написана первой - не имеет значения. Процедура домик в свою очередь может в ходить в состав процедуры улица и так далее.

Равноправие процедур

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

REPEAT 100 [RT RANDOM 360 FD RANDOM 30]

Теперь я хочу, чтобы черепашка совершала действие RT RANDOM 360 FD RANDOM 30 не сто раз, а всегда:

TO BROUN
RT RANDOM 360 FD RANDOM 30
BROUN
END

Теперь эта сумасшедшая черепашка будет метаться по экрану, пока мы не прервем выполнение процедуры BROUN.