Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекц_1_LISP_кор.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
209.41 Кб
Скачать

Неправильні записи:

A B C – відсутні дужки.

(A_(B_C) – число дужок, що відкриваються, більше тих, що закриваються…

У LISP використовується префіксная форма запису обчислень, при якій як ім'я функції, так і аргументи записуються усередині дужок.

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

Програми будуються з логічно розчленованих визначень функцій. Визначення складаються з, організуючих обчислення, керуючих структур і з вкладених, часто викликаючих самих себе (рекурсивних) функцій. Основними засобами функціонального програмування саме і є композиція і рекурсія. Крім функціонального програмування в LISP можна використовувати програмування, основане на звичайному послідовному виконанні операторів із присвоюваннями, передачами керування і спеціальних операторів циклу.

AutoLlSP працює в режимі інтерпретації. Усередині інтерпретатора “сидить” обчислювач, що виконує наступні дії:

визначає перший елемент, що є ім'ям виконуваної функції;

визначає наступні елементи, що є аргументами, необхідними для виконання заданої функції.

Отже функція – окремий випадок списка, і має формат: (ім′я функції_аргумент). Наприклад: (sin_PI),

де - sin – ім′я функції, _ - прогалина, PI – аргумент;

(+_а_в),

де + - ім′я функції, _ - прогалини, а, в – аргументи.

Всі функції можна розділити на 3 групи:

  • перша – вбудовані функції ALISP, імена яких і правила виконання відповідають інструкціям ALISP;

  • друга – функції користувача;

третя – функції, описан в інших програмах, які користувач підмикає до своєї

Виконання програми на ALISP полягає в тому, що інтерпретатор читає текст чергової функції і після завершення читання виконує її.

Опис нової функції (функції користувача) в ALISP розпочинається з службового слова defun, а далі вказується ім′я функції та список аргументів:

(defun_ім′я функції_(A_B_/C_D_L)

)

A і B – глобальні змінні, C, D, L – локальні змінні.

Програма 1

Приклад запису програми для рішення виразу: y=a sin(ώt), де а=0,05; ώ=15,7рад./с; t=0.1.

Мова C

Мова ALISP

#include<math.h>

main( )

{float y;

float a=0.5, omega=15.7, t=0.1;

y=a*sin(omega*t);

}

(defun Y ( )

(setq a 0.05 omega 15.7 t 0.1)

(setq Y (* a (sin (* omega t))))

)

Програма 2

Обчислення суми sin(A)+cos(A)

(defun sincos(A) ; ім′я функції і список аргументів (А)

(+ (sin A) (cos A)) ; вираз sin(A)+cos(A)

) ; defun – кінець програми

Для виконання програми необхідно в командному рядку ACAD набрати:

Command: (sincos 0) Результат в виводиться в командному рядку: 1 (кут в радіанах) sin 0 + cos 0 = 1.

ОСНОВНІ ФУНКЦІЇ AUTOLISP

1. Універсальні функції

QUOTE – блокує обчислення виразу:

<вираз> еквівалентно запису (QUOTE_<вираз>)

Приклад:

Command: (+ 2 3)

5

Command: (SETQ X ‘(+ 2 3))

(+ 2 3)

EVAL (інтерпретатор LISP) – обчислення будь-якого правильно складеного виразу LISP. Виклик EVAL неявно присутній в діалозі програміста з LISP-системою. Він необхідний для зняття блокування обчислення.

(EVAL <вираз>)

Приклад:

Command: (EVAL (QUOTE (+ 2 3)))

5

Command: (SETQ a ‘(+ 2 3))

(+ 2 3)

Command: (EVAL a)

5

1. Псевдофункції

Псевдофункції це функції, які крім того, що мають значення, володіють «побічним ефектом». Ефект полягає в утворенні зв'язку між символом і його значенням.

Для того щоб подивитися, на яке значення посилається символ, досить у відповідь на запрошення ввести !символ.

До псевдофункцій відносяться:

SETQ — зв'язує ім'я зі значенням виразу:

(SETQ <символ1> <вираз1> |<символ2> <вираз2>|...)

Приклад:

Command: (SETQ b 123 с 4.7) еквівалентно b=123, c=4.7

Обчислювальні функції: +, -, *,/.

(SIN <число-кут>) ; кут у радіанах

(SQRT <число>)

(ATAN < число!> |<число2>|); обчислює арктангенс числа в радіанах, якщо не задано год

исло2. Якщо задані обоє числа, повертається арктангенс (число!/число2) у радіанах. Якщо число2 — нуль, то в залежності від знака числа! повертається + або —1.570796 радіан (90 або -90 градусів)

Косинус кута: , .

Експонента:

Зведення числа в ступінь:

Натуральний логарифм: Максимальне з чисел:

(COS <число-кут> ); кут у радіанах

(ЕХР <число>) ^ '

(ЕХРТ <число-підстава>

<число-ступінь>) ',

(LOG<4HCio>)

(МАХ <число> <число>...)

Мінімальне з чисел: (MIN <число> <число>...)

Убудовані функції обробки списків