Оглавление
О языке
Типы данных
Переменные
Процедуры
Команды
О программе
О языке
Язык программирования LOGO был разработан в 1972 г. американским ученым
С. Пейпертом и предназначался для обучения детей основам программирования.
Во многих странах LOGO признан одним из лучших языков для школьников,
начинающих знакомиться с программированием.
Для написания программ на этом языке, нужно знать что такое команда и параметр
команды.
Команда - одно предложение на языке Logo для указания
действия черепашке.
Параметр команды - специальный символ, набор
символов или число для уточнения действия команды
Правило написания команды - на первом месте ставится имя команды, за
ним через пробел, если это необходимо, параметры. Например:
ВПЕРЕД 10 - команда для черепашки "Сделать 10 шагов вперед".
(ВПЕРЕД - команда, 10 - параметр)
ДОМОЙ - "Вернуться домой" (ДОМОЙ - команда без параметров)
ПОВТОРИ 10 [ЛЕВ 20] - "Повтори 10 раз поворот налево на 20 градусов".
(ПОВТОРИ - команда, 10 и [ЛЕВ 20] - параметры
Типы данных
Многие языки программирования могут обрабатывать данные нескольких типов,
например числа или буквы, и Logo не исключение.
Параметры команд в лого могут быть разных видов. Это могут быть числа, слова,
списки или логические значения. Обо всем по порядку.
Числа задаются при помощи цифр, как и в реальной жизни (Например, 14 или 27).
Команд, использующих числа как параметры, довольно много: от команд для перемещения
черепашки (ВПЕРЕД, НАЗАД) до команд, проигрывающих звуки (TONE)
Чтобы задать
слово, необходимо написать двойные кавычки " и затем само слово.
Учтите, что слово начинается со знака " и заканчивается перед знаком пробела. Например,
команда "HELLO создаст строку, содеражащую символы HELLO. Слова используются в некоторых
командах, например PRINT "HELLO выведет на экран слово HELLO
Списки используются не так часто, как числа, но также полезны. Список - это список
команд, чисел или строк, заключенных в квадратные скобки, например так: [ВПЕРЕД 10 ЛЕВ 20].
Список используется в команде ПОВТОРИ: ПОВТОРИ 4 [ВПЕРЕД 40 ВП 90]
Логические значения могут быть двух видов: истина и ложь. Задать их можно либо при
помощи логических операций (больше, меньше, равно) или при помощи команд "ИСТИНА" и "ЛОЖЬ"
Переменные
Наверное вы уже заметили, что в командах мы использовали только конкретные значения:
конкретные числа, слова или списки. Но что если нам нужно изменять эти значения по
мере выполнения программы? Необходимо использовать так называемые переменные.
Переменная - объект в программе, значение которого может изменяться самой
программой.
Переменная должна всегда иметь имя, чтобы мы могли как то к ней обратиться и использовать
её значение. Запомните
Правило записи переменной - имя переменной задается последовательностью букв
английского языка и цифр и начинается с буквы. Имя не должно совпадать с именами команд
и используемых в программе процедур.
Чтобы создать переменную, необходимо использовать команду MAKE:
MAKE (Имя переменной) (Значение)
Имя переменной - слово, а значение может быть любым. Например,
MAKE "DLINA 100 - создаст пременную DLINA со значением 100
MAKE "NAME "VASYA - создаст переменную NAME со значением VASYA
Чтобы получить значение переменной, нужно использовать знак двоеточия :
ВПЕРЕД :DLINE - сделает столько шагов, сколько записано в переменной DLINA
ЛЕВ :UGOL - повернет налево на столько градусов, сколько записано в переменной UGOL
MAKE "DLINA :DLINA + 10 - Увеличит значение переменной DLINA на 10
Процедуры
В Logo имеется множество встроенных команд, но согласитесь, что их недостаточно.
Если с рисованием прямых не возникает вопросов, то чтобы нарисовать круг, нужно
написать несколько команд, а это не совсем удобно, когда необходимо нарисовать
много разных кругов подряд. Для того, чтобы заменить несколько команд одной, в Logo
существую процедуры.
Процедура - алгоритм, записанный по определенным правилами и имеющий имя
Все процедуры описываются на
изнанке - листе, содержащим процедуры и позволяющем
их редактировать. Изнанка открывается нажатием сочетания клавиш Ctrl + F или кликом по
полю для рисования.
Все процедуры в Logo описываются следующим образом:
TO имя процедуры
тело процедуры
END
Указанное имя процедуры можно в дальнейшем использовать как команду на лицевой стороне.
Процедура, рисующая круг, выглядит следующим образом:
TO CIRCLE
ПОВТОРИ 360 [ ВПЕРЕД 1 ПР 1 ]
END
После её описания на изнанке, команду CIRCLE можно использовать на лицевой стороне для
рисования круга.
Но и эта функция далеко не универсальна. Предположим, что нам надо нарисовать 10 кругов
разного радиуса. Для этого нам придется делать 10 разных процедур, а это слишком сложно.
Чтобы упростить решение таких задач, в Logo есть процедуры с параметром. От обычных процедур
они отличаются тем, что для их вызова нужно указать не только имя процедуры, но еще и несколько
параметров (как и со стандартными командами Logo, такими как ВПЕРЕД, ПОВТОР и т. д.)
Чтобы описать процедуру с параметром, необходимо при её описании в строке с TO через двоеточия
указать несколько переменных, которые будут получать значения при вызова процедуры:
TO имя процедуры :ПЕРЕМЕННАЯ1 :ПЕРЕМЕННАЯ 2
тело процедуры
END
Важно, чтобы при вызове процедуры количество параметров совпадало с числом параетров, описанных при создании процедуры
В дальнейшем к переменным, указанным в этой строке, можно будет обращаться как к обычным переменным -
при помощи двоеточий. Усовершенствум процедуру, рисующую круг:
TO CIRCLE :R
ПОВТОРИ 360 [ ВПЕРЕД :R ПР 1 ]
END
Теперь чтобы нарисовать круг, можно будет использовать команду CIRCLE с параметром, обозначающим радиус
круга. Например, команды CIRCLE 1 и CIRCLE 2 нарисуют круги с разными радиусами.
Команды
Описание команды дается в следующем виде:
Названия команды + параметры (тип) - что делает
Команды для рисования
- FORWARD, FD, ВПЕРЕД, ВП + N (число) - переместиться вперед на N шагов
- BACK, BK, НАЗАД, НД + N (число) - переместиться назад на N шагов
- RIGHT, RD, ПР + N (число) - поворот направо на N градусов
- LEFT, LT, ЛЕВ + N (число) - поворот налево на N градусов
- PU - поднять перо
- PD - опустить перо
- PE - заменить перо на ластик
- CLEAN - очистить экран
- HOME - вернуться в исходную точку
- CG - очистить экран и вернуться в исходную точку
- RG - очистить экран, вернуться в исходную точку и принять исходную форму
- SETC + N (число) - установить цвет пера N
- SETBG + N (число) - установить цвет фона N
- FILL - Закрасить замкнутый контур текущим цветом
- SETSH + N (число) - установить форму N
- STAMP - Поставить штамп
Управляющие конструкции
- RUN + A (список) - выполнить команды из списка А
- REPEAT, ПОВТОРИ + N (число) + A (список) - выполнить N раз команды из списка А
- IF, ЕСЛИ + F (логическое значение) + A (список) - если F - истина, выполнить команды из списка А
- IFELSE, ЕСЛИИНАЧЕ + F (логическое значение) + A (список) + B (список) - если
F - истина, выполнить команды из списка А, иначе - из списка В
- WAIT, ЖДИ + N (число) - пауза
- MAKE + S (слово) + А (что угодно) - создает переменную с именем S и значением А
- TO ... END - создание процедуры на изнанке
Ввод / Вывод
- READWORD + S (слово) - считать строку с клавиатуры. Возвращает слово
Математические и логические операторы
- Для двух чисел:
- + - возвращает сумму чисел
- - - возвращет разность чисел
- * - возвращает произведение чисел
- / - возвращает частное чисел
- > - возвращает ИСТИНА, если первое число больше второго
- < - возвращает ИСТИНА, если первое число меньше второго
- "S (что угодно) - возвращает строку S
- :S (строка) - возвращает значение переменной с именем S
- А (что угодно) = В (что угодно) - возвращает ИСТИНА, если А = В
- NOT, НЕ + F (логическое значение) - возвращает ИСТИНА, если F - ЛОЖЬ, и наоборот
- AND, И + А (логическое значение) + В (логическое значение) - возвращает ИСТИНА, если А и Б - ИСТИНА
- OR, ИЛИ + А (логическое значение) + В (логическое значение) - возвращает ИСТИНА, если А или Б - ИСТИНА
Служебные команды
- TONE + F (число) + L (число) - звуковой сигнал частотой F длительностью L
- NAMEPAGE, NP + S (строка) - сохраняет текущий документ как S.log
- SHAPES - открывает лист с формами
- DOS - закрывает окно с программой
О программе
Эта программа является переработанной и улучшенной версией старого LogoWriter-а.
Она написана на JavaScript, и поэтому может быть запущена на любой ОС без использования DosBox.
Полная работоспособность гарантирована для Google Chrome, в Mozilla Firefox не работают некоторые функции.
От LogoWriter программа отличается тем, что добавлена навигация с помощью мышки - клик на поле для ввода команд
возвращает в предыдущее окно, а клик по полю для рисования открывает изнанку. Кроме того, сохранена
возможность управления с помощью клавиатуры:
- Esc - возвращает в предыдущее окно
- Ctlr + F - открывает изнанку
- Ctrl + S - останавливает рисование
Сохранение и загрузка
Команда NAMEPAGE (NP) сохраняет текующую страницу в файл с расширением *.LOG . В Mozilla Firefox
файл получает расширение *.PART, и чтобы загрузить его в программу, необходимо сменить расширение
на *.LOG . Для загрузки файла в программу, перетащите его на экран оглавления и отпустите.
Благодарности
Особую благодарность выражаю Дмитрию Чербаджи за помощь в создании форм для черепашки
Слово автора
Эта программа не только сделана с любовью, это один из моих первых проектов. Поэтому она может
содержать различные ошибки. Во избежание их работайте в Google Chrome, но если они все-таки появились,
отправьте мне отчет об ошибке:
- Откройте консоль разработчика (CTRL +SHIFT + J в Google Chrome)
- Сделайте фото экрана с видимой консолью и с кодом вашей программы в LOGO
- Отправьте снимок и код с изнанки (если такой есть) по адресу
DanilKolikov@gmail.com
Надеюсь, что работа в моей программе принесет вам много удовольствия.
Искренне ваш,
Данил Коликов
7 апреля 2013 года