UkrReferat.com
найбільша колекція україномовних рефератів

Всього в базі: 75838
останнє поновлення: 2016-12-03
за 7 днів додано 10

Реферати на українській
Реферати на російській
Українські підручники

$ Робота на замовлення
Реклама на сайті
Зворотній зв'язок

 

ПОШУК:   

реферати, курсові, дипломні:

Українські рефератиРусские рефератыКниги
НазваВизначення функцій в Ліспі (реферат)
Авторdimich
РозділІнформатика, компютерні науки
ФорматWord Doc
Тип документуРеферат
Продивилось1394
Скачало248
Опис
ЗАКАЧКА
Замовити оригінальну роботу

Реферат на тему:

 

Визначення функцій в Ліспі

 

Поряд з примітивними функціями можуть існувати функції, визначені

користувачем. Функція викликається набором аргументів і повертає єдине

значення. Визначення функції в Ліспі має наступний вигляд:

 

(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) ) F T

 

Нам вже відомі три функції розпізнання: EQL, ATOM, NULL. Функції, які

застосовуються для перевірки певних умов та можуть повертати лише два

значення – істини чи хиби, називаються предикатами.

 

Тіло функції складається з послідовності завдань. Завдання можуть бути

двох типів: прості та умовними. Будь-яке завдання береться в круглі

дужки і може розглядатися як список виразів, які треба

проінтерпретувати.

 

Якщо завдання є атомом або його перший елемент є атомом, то таке

завдання називається простим. Наприклад, (CONS ‘NR LST).

 

Якщо перший елемент списка, який описує завдання не є атомом, то таке

завдання називається умовним. Наприклад, ((ATOM lst) (CONS expr lst)).

 

В умовному завданні перший елемент списку обов’язково є предикатом. Якщо

значення предикату NIL, то значення завдання стає рівним NIL і Лісп

переходить до виконання наступного завдання. Якщо предикат повертає не

NIL, відбувається виконання хвосту списку завдання, а інші завдання

ігноруються. Якщо предикат повертає Т, а хвіст завдання порожній, то

результатом всієї функції буде T.

 

Напишемо предикат, який розпізнає списки. Якщо аргументом є список, то

предикат повертає істину, інакше — хибність. Функцію LISTP можна

проінтерпретувати наступним чином: “Якщо obj є атомом, то повернути NIL,

інакше повернути T”.

 

$ (DEFUN LISTP (obj) $ (DEFUN LISTP (obj)

 

((ATOM obj) NIL) ((NULL obj))

 

T ) ((ATOM obj) NIL)

 

T )

 

В другій колонці написано предикат LISTP, який розпізнає додатково

порожній список (повертає істину). Перше завдання є умовним, хвіст якого

порожній. Його можна проінтерпретувати так: перевірити об’єкт obj на

порожній список, і якщо він є таким, передати як результат функції

істину. Немає потреби писати: ((NULL obj) T), оскільки це те ж саме, що

і ((NULL obj)). Останнім завданням цих предикатів є атом Т. Це означає,

що якщо жодне з умовних завдань не виконане (лише за цієї умови

керування програмою дійде до останнього завдання), то як результат

функції повернути Т. Для другого визначення функції LISTP маємо:

 

$ (LISTP ‘tree) $ (LISTP ‘()) $ (LISTP ‘(q w e r t y))

 

NIL T T

 

Для кращого розуміння роботи тіла функції та простих і умовних завдань

-----> Page:

0 [1] [2] [3] [4]

ЗАМОВИТИ ОРИГІНАЛЬНУ РОБОТУ