Мова Програмування LOGO

Articles

10 Nov 2022

Мова програмування Logo, діалект мови Lisp, була розроблена як інструмент для навчання. З цієї мети випливають її особливості — інтерактивність, модульність, розширюваність, гнучкість типів даних.

 

Інтерактивність

Хоча є декілька версій Logo, які компілюються, зазвичай вона реалізується як інтерпретована мова. Інтерактивність цього підходу надає користувачеві негайний зворотний зв’язок щодо окремих інструкцій, таким чином допомагаючи в процесі налагодження та навчання. Повідомлення про помилки є описовими. Наприклад

fowad

I don't know how to fowad (Я не знаю, як fowad)

(Слово fowad  не є примітивом — одним із вбудованих слів Logo — і не процедурою, яку ви визначили.)

forward

Not enough inputs to forward (Недостатньо даних для того, щоб рухатися далі)

(Тепер, коли ви написали його правильно, Logo знає слово forward, але не може виконати вашу інструкцію, оскільки для forward потрібна додаткова інформація.

forward 100

(Logo щаслива. Повідомлення про помилку немає. Черепаха рухається вперед на 100 кроків.)

Модульність і розширюваність

Програми на Logo —  це зазвичай набір невеликих процедур. Як правило, процедури визначаються шляхом написання їх у текстовому редакторі. Спеціальне слово to супроводжується назвою процедури. Наступні рядки формують визначення процедури. Слово end означає, що ви закінчили.

У нашому прикладі графіки черепахи ми визначили процедуру малювання квадрата

to square   (до квадрата)

repeat 4 [forward 50 right 90]  (повторити 4 [вперед 50 вправо 90])

end  (кінець)

і використали її як підпроцедуру іншої процедури

to flower  (до квітки)

repeat 36 [right 10 square]  (повторити 36 [вправо 10 квадрат])

end  (кінець)

Подібним чином flower може бути будівельним блоком чогось більшого

to garden  (до саду)

repeat 25 [set-random-position flower]  (повторити 25 [вкажіть-довільне-розташування квітки])

end  (кінець)

Ні, set-random-position не є примітивом, але random є, а також setpositio (або setpos або setxy). Або ви можете написати set-random-position, використовуючи forward і right разом з random.

Як тільки процедура Logo визначена, вона працює як примітиви Logo. Насправді, коли ви дивитесь на програми Logo, неможливо дізнатися, які слова є примітивами, а які визначені користувачем, якщо ви не знаєте цього конкретного застосування Logo. У нашому прикладі мови ми використали процедуру  pick  для випадкового вибору елемента зі списку, наприклад, у процедурі who.

to who  (до кого)

output pick [Sandy Dale Dana Chris] (вихідний вибір [Сенді Дейл Дана Кріс])

end  (кінець)

У деяких версіях Logo вибір є примітивом, а в інших ви повинні писати його самостійно. Who  буде виглядати й працювати однаково в обох випадках.

Logo дозволяє будувати складні проєкти невеликими кроками. Програмування в Logo виконується шляхом поповнення її словникового запасу, навчання її нових слів за допомогою слів, які вона уже знає. Таким чином, це схоже на те, як люди вивчають розмовну мову.

Гнучкість

Logo працює зі словами та списками. Слово у Logo – це рядок символів. Список у Logo — це впорядкований набір слів і/або списків. Числа – це слова, але вони особливі, тому що з ними можна виконувати такі дії, як арифметика.

Багато мов програмування досить суворі щодо бажання точно знати, які саме дані ви використовуєте. Це полегшує роботу комп’ютера, але ускладнює роботу програміста. Перед додаванням кількох чисел вам, можливо, доведеться вказати, чи є вони цілими, чи дійсними числами. Комп’ютер повинен знати такі речі. Але більшість людей про це не замислюються, тому Logo подбає про це за вас. Коли її просять зробити арифметику, Logo просто виконує це.

print 3 + 4  (надрукувати 3 + 4)

7

print 3 / 4  (надрукувати 3 / 4)

.75

Якщо ви не знайомі з Logo, але працюєте з іншими мовами програмування, наступна послідовність може вас здивувати:

print word "apple "sauce  (надрукувати слово ‘’яблучний  ‘’соус)

applesauce 

print word "3 "4  (надрукувати слово "3 "4)

34

print 12 + word "3 "4  (надрукувати 12 + слово "3 "4)

46

Ось рекурсивна процедура, яка обчислює факторіали:

to factorial :number  (до факторіала :число)

if :number = 1 [output 1]  (якщо :число = 1 [вихід 1])

output :number * factorial :number - 1  (вихід : число * факторіал : число - 1)

end  кінець

print factorial 3  (надрукувати факторіал 3)

6

print factorial 5  (надрукувати факторіал 5)

120

Ось процедура перевертання списку слів:

to reverse :stuff  (перевернути : предмет)

ifelse equal? count :stuff 1  (ifelse  дорівнює? полічити  : предмет 1)

[output first :stuff]  ([вихід перший  :предмет])

[output sentence reverse butfirst :stuff first :stuff]  ([вихід речення навпаки, але спочатку :предмет перший  : предмет])

end  (кінець)

print reverse [apples and pears]  (надрукувати навпаки [яблука та груші])

pears and apples  (груші та яблука)

Ви також можете поглянути на цікавий зразок Logo Брайана Харві.

Покращення

Щойно проілюстровані функції є спільними для всіх версій Logo. Деякі реалізації Logo  містять розширені мовні функції.

Існувала об'єктноорієнтована Logo під назвою Object Logo для Macintosh.

MicroWorlds Logo включає багатозадачність, так що кілька незалежних процесів можуть виконуватися одночасно. Така ж можливість є в програмному забезпеченні Control Lab, продуктові LEGO Logo. Ще більш масштабна паралель Logo є StarLogo.

У традиційному Logo виконання команди черепасі

repeat 9999 [forward 1 right 1] (повторити 9999 [вперед 1 вправо 1])

займе деякий час. Інструкція

repeat 9999 [forward 1 right 1] print "HELLO  (повторити 9999 [вперед 1 вправо 1] надрукувати "HELLO)

призведе до появи слова HELLO після того, як черепаха закінчить рух.

У MicroWorlds Logo введення

launch [repeat 9999 [forward 1 right 1]] print "HELLO  (запустити [повторити 9999 [вперед 1 вправо 1]] надрукувати "HELLO)

запустить черепаху. Слово HELLO з’явиться, як тільки буде запущено перший процес. Або

forever [forward 1 right 1] print "HELLO  (назавжди [вперед 1 вправо 1] надрукувати "HELLO)

зініціює процес, який триватиме доки ви його не зупините. Знову ж таки, слово HELLO з’явиться, щойно розпочнеться процес черепахи.

Дізнайся більше

Щоб дізнатися більше про мову програмування Logo, подивіться на тритомну монографію Брайана Харві "Стиль Logo в галузі комп’ютерних наук" і про  "Вдосконалена Logo" Майкла Френдлі.

Якщо у вас немає Logo, але ви хочете розпочати її використовувати, ви можете переглянути нашу сторінку програмного забезпечення Logo. Або ви можете просто завантажити UCBLogo, MSWLogo, FMSLogo або StarLogo прямо зараз.

Source: http://el.media.mit.edu/logo-foundation/what_is_logo/logo_programming.html

COPYRIGHT ©2014 LOGO FOUNDATION. ALL RIGHTS RESERVED. 

Was this article helpful?

45 readers found this helpful

Yes No
Thanks for your feedback!

Related Articles

We keep you up to date with the latest news and industry insights