Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практика 6-10 401-ТИ Блінова Настя.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
36.79 Кб
Скачать

7. Функція як головний засіб написання програми в Ліспі. Способи визначення­ функції. Виклик функцій.

Функція - відображення між множинами.

Функцією в математиці називається відображення (mapping), яке однозначно відображає одні значення на інші. Наприклад, запис

y=f(x)

ставить у відповідність кожному елементу х з множини визначення (domain) єдиний елемент у з множини значень (range, codomain) функції f. Це відповідність також можна записати в наступному вигляді:

Будемо говорити, що функція f від аргументу х має значення y = f (x) (value, image). Біля функції може бути довільна кількість аргументів, у тому числі їх може не бути зовсім. Функція без аргументів має постійне значення. Наведемо приклади функцій:

abs(-3) 3 ; абсолютная величина числа

+(2,3) 5 ; сумма

union((a,b),(c,b)) (a,b,c) ; объединение множеств

финский(John) ложь ; определение языка

дети(адам,ева) (каин,авель) ; множество детей

Тип аргументів і функцій

У загальному випадку функція може задавати відображення з декількох множин в множині значень. Для зображення типів (type) значень функції і її аргументів запозичимо ще одне прийняте в математиці позначення. Нехай f - функція від двох аргумен-тів:

f(x,y) z ; отображение пар элементов х,у в множество z

Типи аргументів х и у, а також тип значения z можна позначити наступним чином:

F: А В С

Тут знак "×" між А і В позначає прямий добуток множин. Наведена запис означає, що тип першого аргументу функції f є А (тобто він належить множині А), тип другого аргументу - В і тип значення функції - С Функція f ставить у відповідність впорядкованим парам, утвореним з елементів множин А і В, елемент з множини С Наведемо типи значень і аргументів функцій з попереднього прикладу:

ФУНКЦИЯ АРГУМЕНТЫ ЗНАЧЕНИЯ

Abs: число -> число

+: число -> число

union: множ-во множ-во -> множество

финский: слово логическое значение

дети: человек х человек -> множество людей

Визначення та виклик функції

Визначення (definition) функції в мові Лісп дозволяє задати довільне відображення, що обчислюється. Наприклад, функцію, яка обчислює суму квадратів, можна визначити за допомогою додавання і множення:

суммаквадратов:

аргументы: х,у

значение: х*х+у*у

Тут х і у змінні, що представляють довільні числа.

Виклик (call) функції означає запуск, або застосування (apply) визначення функції до конкретних значень аргументів. Наприклад, застосуємо функцію суммаквадратів до аргументів х = 2 і у = 3:

суммаквадратов(2,З) -> 13

Функція віклікається набором аргументів и повертає єдине значення. Визначення функції в Ліспі має наступний вигляд: (DEFUN name (arg1 arg2 ...) task1 task 2 . . . . . ) де name — ім’я функції, arg1, arg2, ... — аргументи (параметри). Тіло функції містить послідовність задач. Ключове слово DEFUN виникло з DEfine FUNction. $ (DEFUN FIRST (lst)$ (FIRST ‘(q w e r t y)) (CAR lst) ) q $ (DEFUN THIRD (lst)$ (THIRD ‘(q w e r t y)) (CADDR lst) ) e Визначимо функцію NULL, яка розпізнає порожній список. Вона повертає істину, якщо її аргументом є порожній список і хибність в іншому випадку. $ (DEFUN NULL (obj)$ (NULL ‘(q w e r)) $ (NULL (CDR ‘(r))) (EQL obj NIL) )FT Нам вже відомі три функції розпізнання: EQL, ATOM, NULL. Функції, які застосовуються для перевірки певних умов та можуть повертати лише два значення – істини чи хиби, називаються предикатами.