Лекція 1_LISP ПРОГРАМУВАННЯ МОВОЮ AutoLISP
Графічна мова програмування AutoLISP (ALISP) є розширенням мови програмування LISP. LISP – це мова високого рівня, за допомогою якої розв′язується клас задач з проблеми створення штучного інтелекту. LISP орієнтована на обробку списків і вибрана за базову саме тому, що графічні примітиви, починаючи з точки, блоки, набори примітивів і блоків зручно представляти у вигляді списків.
Мова LISP була створений у 1962 році Дж.Маккарті. Назва LISP є скороченням від List processing — обробка списків. Буквальне слово LISP переводиться як белькотати, шепелявити, сюсюкати. Для назви мови програмування штучного інтелекту це вдала назва, оскільки саме за допомогою LISP ЕОМ “навчилася” у деякому смислі «белькотати людською мовою» У даний час найбільша перевага віддається версії мови LISP, що одержала назву COMMON LISP.
Спочатку LISP була задумана як теоретичний засіб для рекурсивних побудов, а в даний час вона перетворилася в могутній засіб, що забезпечує програміста різноманітною підтримкою, що дозволяє йому швидко будувати прототипи досить серйозних систем.
Насамперед це пояснюється тим, що в LISP форми представлення програм і оброблюваних даних однакові. І те, і інше представляється списковою структурою, що має однакову форму. Таким чином, програми можуть обробляти і перетворювати інші програми і навіть самих себе! Це дозволяє створювати програми, що можуть змінюватися (адаптуватися) у процесі роботи, тобто створювати системи, що самонавчаються.
LISP — одна з мов, яка успішно використовується в символьній обробці і дослідженнях за проблемою створення штучного інтелекту. Символьна обробка і методи об’єктно-орієнтованого програмування добре підходять для обробки рисунків, креслень, які застосовують в машинному проектуванні. Креслення — складна структура даних. Мовою LISP написане математичне забезпечення системи AutoCAD. LISP забезпечує один з можливих шляхів рішення задачі автоматичної параметризації, що виникає при розробці складних параметрично заданих креслень.
До LISP варто підійти як до мови програмування, за допомогою якої реалізуються спеціалізовані мови, орієнтовані на додатки, і створюється оточення більш високого рівня. Властива LISP гнучка розширюваність не зустрічається в традиційних замкнутих мовах програмування.
AutoLISP - один з діалектів мови LISP, він найбільш близький по синтаксисі й погодженням до COMMON LISP, але є його невеликою частиною і має багато додаткових функцій, що відображають специфіку AutoCAD.
В складі системи AutoCAD (ACAD) входить інтерпрeтатор з мови ALISP. Якщо при генерації ACAD інтерпретатор ALISPa підімкнений, то він завантажується в оперативну пам′ять після запуска графічного редактора ACAD і доступний на протязі всього сеансу роботи. Таким чином, графічний редактор ACAD і інтерпретатор ALISPa складають одну систему: будь – яка функція ALISPa може викликатись з графічного редактора в будь яка команда редактора може використовуватись в програмі на ALISPi.
Застосування ALISP найбільш ефективне для задач:
програмування креслень з параметризацією;
створення і використання графічних баз даних з типовими елементами креслення (наприклад, стрілок за ЄСКД і т. і.);
аналіз та автоматичне перетворення зображень (наприклад, визначення перетину трубопроводів, розрахунок центра мас і моментів інерції і т. і.);
розширення систем команд графічного редактора ACAD і побудова на основі універсального редактора спеціалізованих САПР, з своєю системою меню користувача.
В мові ALISP (версія 10) визначені близько 150 різноманітних операцій, які називаються вбудованими функціями. Їх основне призначення:
- для роботи з числовими даними, які реалізують шість арифметичних операцій;
- для логічної обробки виразів – операції порівняння, булеві функції і т. і.;
- для роботи з рядковими константами – формування, з′єднання, порівняння рядків, виділення символів з рядка і т. і.;
- для роботи з зовнішніми пристроями ПК.
Сновні поняття мови alisp
Програма – це послідовність функцій ALISP і функцій, створених користувачем.
Коментар – це будь-який текст після знаку ;. Коментарі не обробляються інтерпретатором, а служать для кращого розуміння програми.
Атом (тип даних в ALISP). Атоми – це елементарні об′єкти, із яких формуються вирази ALISP. Атоми бувають типів:
константи (дійсні, текстові (рядкові), логічні);
змінні (символьні імена).
У AutoLISP використовуються три види констант: числові, рядкові та логічні. Вони не можуть представляти інші об'єкти LISP, крім самих себе або свого власного значення.
Числові константи можуть бути різного типу, наприклад:
746 ; ціле число
-3.14 ; десяткове число
3.055Е8 ; число, представлене мантисою і порядком.
Цілі числа можуть задаватись в межах від – 32768 до +32767. Цілі числа без знаку від 0 до 65535. для чисел з великим порядком використовується символ Е, що означає 10 в степені…
12.5Е8 = 12,5 * 108;
В ALISP також визначена константа, яка позначається РІ. Вона має значення 3,1415926.
Рядкові константи— це послідовність знаків, які записані в лапках.
Довжина текстової константи не більше 100 знаків. Якщо в тексті зустрічається знак «\», то його слід подвоїти, наприклад «\\», оскільки символ «\» використовується для введення керуючих символів: \n – перевід рядка, \r - повернення каретки, \t - табуляція.
Логічні константи — це Т — істина і NIL — неправда.
Константи і символи записуються за допомогою обмеженої прогалинами послідовності знаків.
Атоми — найпростіші об'єкти LISP, з яких будуються інші структури, і вони являють собою символи або константи.
Упорядкована послідовність, елементами якої є атоми або списки (підсписки), називається списком (list). Списки беруть в круглі дужки, елементи в них розділяються прогалинами.
Приклад:
(a_d_(c_d)_e)
Список — це багаторівнева або ієрархічна структура даних, у якій відкриваючі і закриваючі дужки знаходяться в строгій відповідності.
Атоми і списки — це основні типи даних мови LISP, вони називаються символьними виразами або S-виразами (S-expression).
Списки можуть інтерпретуватися як дані і як програми (функції).
Для того щоб скористатися мовою AutoLlSP, досить у відповідь на підказку Command: редактора AutoCAD ввести яку-небудь конструкцію мови AutoLlSP. Після введення конструкції AutoLlSP (тобто після натискання клавіші <ENTER>) негайно здійснюється її виконання і видається результат виконання.
Приклад:
Command : (+ 2 3) <ENTER>
5
Змінна, як і в математиці, - це об′єкт, який має ім′я і значення. Конкретне значення змінна приймає в процесі виконання програми.
Змінні формуються з будь-яких символів, крім знаків «( )», «,», «.», «”», «:», «′», прогалина та перевід рядка. Першим символом повинна бути літера.
Крім перерахованих атомів визначено поняття «порожній атом», який позначається NIL, що означає «нічого», тобто атом, який не має ніякого значення.
Приклади запису атомів
-
0
-10
0.0
Цілі константи
15.4
-15.39Е9
Дійсні константи
“ABCD”
“Вкажіть точку”
“\ n Введіть дані”
Текстові константи
А2
ABCD
WANT_DANI
Змінні
Список – складений елемент програми з атомів або інших списків, розділених прогалинами “_”. Список завжди записується в дужках:
(A_B1_C2) – атоми списка – змінні.
(“A”_”AC”) – атоми – текстові константи.
