Витуальная Пустынь
\"Pustyn\"

ucblogo

ucblogo- записки на полях БукиБуки

Уроки UcbLogo

Предисловие

В 1995 - 1999 году я использовал ucblogo - BerkeleyLogo, созданный Харви [Brian Harvey http://www.cs.berkeley.edu/~bh/] из Университета Беркли на уроках информатики в Интернет-студии начальной школы. Впечатление и от общения с Харви и от самого программного продукта осталось самое приятное.

К сожалению, этот опыт остался невостребованным, поскольку Интернет-студия жила своей собственной linux-жизнью.

to flake :s :d

repeat 3 [koch :s :d rt 120]

end

to koch :s :d

if :d = 1 [ fd :s stop]

koch :s / 3 :d - 1

lt 60

koch :s / 3 :d - 1

rt 120

koch :s / 3 :d - 1

lt 60

koch :s / 3 :d - 1

end

Лаборатория Учком и Начальная школа "Почемучка" 1996 - 1999

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

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

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

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

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

Первые команды к черепашке - Команды с параметрами или процедуры

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

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

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

LEFT или LT - Например - LT 45 - черепашка поворачивается влево на 45 градусов (LT 180 и RT 180) - совершенно одно и то же по результату

Повтори! - Repeat

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

REPEAT 10 [FD 10 rt 7]

Команды FD, RT, REPEAT требуют для своего исполнения параметров - чисел или слов.

Такие команды в Лого называют процедурами. Процедуры требуют значений!

Попробуйте сказать черепашке просто - FORWARD

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

Пример еще одной команды с параметром - SETPENCOLOR

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

Команды без параметров:

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

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

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

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

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

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

Все команды, с которыми мы познакомились в этот раз являются простыми - у них нет никаких параметров.

Просто - спрячь черепашку, подними перо, сотри текст.

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

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

TO T1

RT 120 FD 50 RT 120 FD 50 RT 120 FD 50

END

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

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

После этого Черепашка Лого напишет, что эта процедура определена - T1 defined

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

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

ERASE "T1

Обратите внимание - перед названием процедуры ставится знак "

Случайные числа порождаются командой 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

Числа, слова, списки

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

LABEL "1997

LABEL "Привет!

PRINT [Привет! Рад встретиться с вами сегодня]

Пример

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

Числа, слова, списки

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

SAVE "имя-файла - cохраняет программу в отдельный файл с указанным именем. Например, save "qwa - сохраняет все активные процедуры, которые вы написали и используете в файл qwa.

LOAD "имя-файла - извлекает команды и процедуры из файла с указанным именем

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

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

[1 2 3 4 5 6] - список из цифр

[Вася Даша Коля Петя Петя ] список из слов

[ |Белый пудель| |Черная корова| |Спелая слива| ] список из слов

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

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

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.

Ниже приведена простая процедура, которая позволяет нарисовать на экране различные спирали. Можете с ней экспериментировать, а потом прислать нам свою картинку. Мы поселим ее на дне пруда

to sp2 :l

cs spi 1 :l

end

to spi :l :n

if :l > 60 [stop]

rt :n fd :l

if memberp :l [5 10 15 20 25 30 35 40 45 50 55 60] [simp gensym]

spi :l + 1 :n

end

to simp :a

nothing shell se [import -silent -windows BXLogo] word :a ".gif

end

to nothing :a

end

Прелесть строки [nothing shell se [import -silent -windows BXLogo] word :a ".gif ] заключается в том, что мы из BXLogo даем команду оболочке сфотографировать текущее состояние окна BXLogo и сохранить эту фотографию в графический файл формата Gif. По окончании действия процедуры мы объединяем все gif картинки в один анимированный Gif.

TO TREE :SIZE

IF :SIZE < 5 [STOP]

FD :SIZE RT 45

TREE :SIZE * 2 / 3

wait 30

LT 90

TREE :SIZE * 2 / 3

RT 45 BK :SIZE

END

IATP
Библиотека Виртуальной Пустыни в 2003 году является частью сетевого проекта "Нижегородские ресурсы коллективного авторства" и развивается при финансовой поддержке Управления образовательных и культурных программ Государственного Департамента США в рамках Программы "Обучение и доступ к Интернет", реализуемой на территории Российской Федерации Представительством некоммерческой корпорации "Прожект Хармони Инк." (США).
Точка зрения, отраженная текстах сайта может не совпадать с точкой зрения Управления образовательных и культурных программ Государственного Департамента США или Некоммерческой корпорации "Прожект Хармони Инк.".

NN counter top100