WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаМатематика, Геометрія, Статистика → Мова програмування Лiсп - Реферат

Мова програмування Лiсп - Реферат


Реферат на тему:
Мова програмування Лiсп
За однiєю з класифiкацiй мови програмування (МП) дiляться на процедурнi, якi також називаються операторними або iмперативними та декларативнi мови. Бiльшiсть мов що сьогоднi використовуються - Бейсiк, Фортран, Паскаль, Сi, вiдносяться до процедурних мов. До класу декларативних мов вiдносяться функцiональнi або апплiкативнi - Лiсп, Лого та логiчнi мови, вiдомим представником якого є Пролог. На практицi МП не є чисто процедурними, функцiональними чи логiчними. На процедурнiй мовi можна написати функцiональну програму i навпаки.
Процедурна програма складається з послiдовностi операторiв та виразiв, якi керують її виконанням. Типичними операторами є оператори присвоєння, ввода-виводу, керування та циклу.
Функцiональна програма складається з сукупностi визначених функцiй. Функцiї, в свою чергу, можуть викликати iншi функцiї. Обчислення починається з виклику деякої функцiї. Чисте функцiональне програмування не має присвоєнь та засобiв передачi керування. Повторнi обчислення здiйснюються за допомогою рекурсiї, яка є основним засобом функцiонального програмування.
muLisp працює на комп'ютерi з операцiйною системою MS-DOS або PC-DOS. Програма mulisp.com є iнтерпретатором МП muLisp. muLisp є потужною МП, має великi функцiональнi засоби для обробки структур даних, створених користувачем. muLisp є символьною МП, яка призначена для обробки спискiв.
(Lisp - List Processing). Будь-яка структура даних є об'єктом.
Робота з Лiспом нагадує роботу з карманним калькулятором: користувач вводить вираз (вiн обов'язково повинен закiнчуватися символом та мати збалансовану кiлькiсть дужок), який читає машина, потiм обчислює (iнтерпретує), та видає результат. Цей процес введення-читання-обчислення-видачi результату буде вiдбуватися в циклi доти, доки користувач не введе команду (SYSTEM), яка завершує роботу з muLisp i передає керування операцiйнiй системi.
Об'єкти Лiспу
Об'єкти можуть бути двох типiв: простi та складенi. Простi об'єкти називаються атомами. До атомiв вiдносяться символи та числа. Символ не може починатися з цифри. muLisp не розрiзняє маленькi та великi лiтери, а перетворює всi введенi лiтери в великi. Атом є неподiльним, тобто його не можна розбити на компоненти. Атом, як i людина, має iм'я. Iменами атомiв є рядки символiв. DOG, CAT, qw1232df, -32 є типовими iменами атомiв. Символи T та NIL мають в Лiспi спецiальне призначення: вони позначають вiдповiдно логiчнi значення iстини та хибностi. Цi символи завжди повиннi мати одне фiксоване значення. Їх не можна використовувати в якостi iмен iнших об'єктiв Лiспу.Числа та логiчнi значення T та NIL є константами, всi iншi символи - змiнними.
Складними об'єктами даних є списки. Список мiстить нуль (тодi говорять про порожнiй список) або бiльше об'єктiв, кожний з яких може бути як простим, так i складеним. (FACE, LOOK, NOSE) є списком, який складається з трьох атомiв. Порожнiй список позначається NIL = (), який є атомом. Список називається лiнiйним, якщо його елементи є атомами. Iнакше говорять про списки з пiдсписками, наприклад: (7 (8 9) TR).
Для того щоб введений вираз не обчислювався, перед ним ставиться апостроф ('). Якщо вираз вводиться без апострофа, то повертається його значення. При запуску програми muLisp значенням кожного атома вважається вiн сам. Значенням числа завжди є саме число, тому перед числами апостроф не ставиться. Тобто пiсля старту системи при вводi Q результатом буде його значення - Q, а при вводi 'Q - буде завжди Q. Апостроф перед виразом - це скорочення форми QUOTE, яка записується в наступнiй формi: 'вираз = (QUOTE вираз). QUOTE можна використовувати як спецiальну функцiю з одним аргументом, яка нiчого з ним не робить, а повертає як результат сам аргумент.
Списки задаються перелiком елементiв, взятих в дужки, перед якими ставиться апостроф. Наприклад: '(ice, hen) або '((one 1) (two 2) (three 3)).
Примiтивнi функцiї Лiспу
Lisp має п'ять примiтивних функцiй. Виклик функцiї має наступний формат:
(name arg1 arg2 ...), де name - iм'я функцiї, arg1,arg2,... - її аргументи.
1. (CAR list) - голова списку.
2. (CDR list) - хвiст списку.
3. (CONS object list) - об'єднання (конкатенацiя) об'єкта зi списком.
4. (EQL atom1 atom2) - порiвняння двох атомiв.
5. (ATOM object) - перевiрка чи є object атомом.
CAR та CDR називаються селекторними функцiями, оскiльки вони дають можливiсть вибирати або знищувати частину об'єкта. Результатом функцiї (CAR list) завжди є перший елемент списку list, якщо вiн непорожнiй i NIL в iншому випадку. Результатом функцiї (CDR list) є список list без першого елемента, якщо list мiстить бiльш одного елемента i NIL в iншому випадку.
$ (CAR '(q w e r t y)) $ (CDR '(q w e r t y)) $ (CAR '((one 1) (two 2)))
q (w e r t y) (one 1)
$ (CAR '()) $ (CDR '(tree)) $ (CDR '((q w)) $ (CDR '())
NIL NIL NIL NIL
За допомогою функцiй CAR, CDR можна знаходити за даним списком будь-який його пiдсписок або атом. Дозволяється використовувати функцiї, якi є комбiнацiями CAR та CDR. Iмена таких функцiй починаються на C i закiнчуються на R, а мiж ними знаходиться послiдовнiсть лiтер A та D (але не бiльше 4 лiтер в реалiзацiї muLisp), яка вказує шлях обчислення.
$ (CAR (CDR (CDR '(q w e r t y)))) $ (CAR (CDR (CDR '((q 1) (w 2) (e 3)))))
$ (CADDR '(q w e r t y)) $ (CADDR '((q 1) (w 2) (e 3)))
e (e 3)
$ (CDR (CDR '((q 1) (w 2) (e 3)))) $ (CAR (CAR '((q w))))
$ (CDDR '((q 1) (w 2) (e 3))) $ (CAAR '((q w)))
((e 3)) q
Функцiя конструктора CONS використовується для додання об'єкту до заданого списку. Об'єкт який додається, стає головою списку. Якщо другий аргумент не задано, то вiн вважається рiвним NIL.
$ (CONS '(q w) '(r (t y))) $ (CONS apple '(q w)) $ (CONS '(q w) '(r t y)) $ (CONS 5)
((q w) r (t y)) (apple q w) ((q w) r t y) (5)
Якщо результатом виразу (CONS object list) буде new, то результатом (CAR new) буде object, а результатом (CDR new) буде list.
$ (CAR (CONS '(q w) '(r (t y)))) $ (CAR (CONS apple NIL))
(q w) apple
Функцiєю порiвняння є EQL. Вона порiвнює значення першого та другого аргумента, якi обов'язково повиннi бути атомами, та повертає значення iстини (Т) або хибностi (NIL).
$ (EQL 'qw
Loading...

 
 

Цікаве