Название: Функції властивостей
Вид работы: реферат
Рубрика: Астрономия
Размер файла: 15.22 Kb
Скачать файл: referat.me-4036.docx
Краткое описание работы: Put get remprop Функції розпізнання Функції розпізнання zerop plusp minusp oddp evenp ascii alpha-char-p numeric-char-p alphanumericp керують властивостями символів. Cdr - елемент символа вказує на список властивостей.
Функції властивостей
Реферат на тему:
Функції властивостей
Функції властивостей призначені для керування властивостями, пов’язаними із символами. CDR - елемент символа вказує на список властивостей, який містить властивості та прапорці (див. розділ ?????).
Список властивостей - це ASSOC-список (ASSOCiation) ключей властивостей, об’єднаних у пари зі значеннями властивостей (див. Опис ASSOC у розділі 4.1). Оскільки прапорці - це атоми у списку властивостей, вони можуть відрізнятися від властивостей.
Функції властивостей та прапорців полегшують процес побудови динамічних баз даних, з яких інформація може легко та швидко вибиратися.
Розглянемо, як можна працювати зі списком властивостей символа. Його можна по необхідності створювати, обробляти та видаляти. Властивості символа є глобальними, тобто доступними з довільної точки програми, поки вони не будуть явно змінені чи видалені. Використання символа в якості змінної чи імені функції не впливає на список властивостей.
Функції властивостей керують властивостями символів. CDR - елемент символа вказує на список властивостей. Разом з функціями флагів вони полегшують процес побудови динамічних баз даних.
1. (PUT <символ> <ключ> <об’єкт>). У список властивостей <символа> кладеться значення <об’єкта> відповідно до вказівника <ключ>.
(DEFUN PUT (SYM KEY OBJ)
((NULL (ASSOC KEY (CDR SYM)))
(RPLACD SYM (ACONS KEY OBJ (CDR SYM)))
OBJ)
(RPLACD (ASSOC KEY (CDR SYM)) OBJ)
OBJ)
$ (PUT ‘capital ‘usa ‘washington) $ (SETQ capital ‘world)
$ (PUT ‘capital ‘germany ‘bonn) $ (PUT ‘world ‘ocean ‘atlantic)
$ (PUT ‘capital ‘england ‘london)
$ (CDR ‘capital)
((ENGLAND . LONDON) (GERMANY . BONN) (USA . WASHINGTON))
$ (CDR capital)
((ocean . atlantic))
$ (CAR ‘capital) $ capital
world world
2. (GET <символ> <ключ>). Повертає значення властивості, яке відповідає <символу> відповідно до вказівника <ключ>. Якщо такого вказівника не існує, то повертається NIL.
(DEFUN GET (SYM KEY)
((NULL (ASSOC KEY (CDR SYM))) NIL)
(CDR (ASSOC KEY (CDR SYM))) )
Якщо змінна capital має властивості, які їй були надані у попередньому прикладі, то:
$ (GET ‘capital ‘england) $ (GET 'capital 'germany)
london bonn
3. (REMPROP <символ> <ключ>). Видалення зі списка властивостей <символа> властивості, яка відповідає <ключу>. Повертається старе значення властивості, якщо воно знайдено, та NIL – інакше.
(DEFUN REMPROP (SYM KEY)
((ATOM (CDR SYM)) NIL)
((EQUAL (CAADR SYM) KEY)
(SETQ KEY (CDADR SYM))
(RPLACD SYM (CDDR SYM))
KEY )
(REMPROP (CDR SYM) KEY) )
Нехай символ capital має три попередні властивості.
(REMPROP ‘capital ‘germany)
bonn
(REMPROP ‘capital ‘usa)
washington
(CDR ‘capital)
((england . london))
4.2. Функції розпізнання
Функції розпізнання — це твердження, які використовуються для розпізнання або ідентифікації об’єктів даних muLisp. Ці функції мають тільки один аргумент, а повертають булеве значення. Вони розпізнають об’єкт, який може мати довільну структуру. Ми вже розглянули деякі функції розпізнання: SYMBOLP, INTEGERP, NUMBERP, ATOM, LISTP, NULL. Розглянемо інші.
(ZEROP obj). Повертає Т, якщо obj — число 0.
(PLUSP obj). Повертає Т, якщо obj — додатне ціле число.
(MINUSP obj). Повертає Т, якщо obj — від’ємне ціле число.
(ODDP obj). Повертає Т, якщо obj — непарне ціле число.
(EVENP obj). Повертає Т, якщо obj — парне ціле число.
Функція (ASCII sym) повертає ASCII-код символа sym. Функція (ASCII num) повертає символ, ASCII код якого дорівнює числу num. Для того, щоб визначити, чи є символ sym літерою, можна використати функцію:
(< (ASCII ‘a) (ASCII sym) (ASCII ‘z)).
Оскільки muLisp не розрізняє малі та великі літери, то (ASCII ‘s) = (ASCII ‘S) для будь-якого символа s. Функція ISCHAR розпізнає літери. Для знаходження ASCII кодів символів, які позначають цифри, необхідно використовувати одинарний Escape-символ.
$ (DEFUN ISCHAR (char) $ (ASCII ‘f) $ (ASCII 70)
(<= (ASCII ‘a) (ASCII char) (ASCII ‘z)) ) 70 F
$ (ASCII ‘9) $ (ASCII 57)
57 9
Наступні функції дають можливість розпізнавати символи та числа.
(ALPHA-CHAR-P <obj>) – повертає T, якщо <obj> – літера.
(NUMERIC-CHAR-P <obj>) – повертає T, якщо <obj> – цифра.
(ALPHANUMERICP <obj>) – повертає T, якщо <obj> – літера або цифра.
$ (ALPHA-CHAR-P W) $ (ALPHA-CHAR-P 3) $ (ALPHA-CHAR-P ~)
T NIL NIL
$ (NUMERIC-CHAR-P W) $ (NUMERIC-CHAR-P 3)
NIL T
$ (NUMERIC-CHAR-P ~) $ (ALPHANUMERICP W)
NIL T
$ (ALPHANUMERICP 3) $ (ALPHANUMERICP ~)
T NIL
Зазначимо, що символ проміжку (‘ ‘ ) є літерою.
Похожие работы
-
Обpобка масивiв
Реферат на тему: Обpобка масивiв В Лiспi є поняття списку, але немає поняття масиву. Масиви можна емулювати за допомогою спискiв. Для цього необхiдно написати функцiї конструювання масивiв, доступу до елемента масива, та змiни значення елемента масива. Розглянемо цю технiку на прикладi.
-
Функції рядків
Реферат на тему: Функції рядків Функції рядків призначені для роботи з текстами. Вони забезпечують виконання великої кількості операцій над текстовими данними — порівняння, пошуку та перетворення P - імен символів та чисел.
-
Програмування масиви та рядки
Реферат з інформатики Програмування: масиви та рядки. 1. Одновимірні масиви Масив у програмуванні – це тип структури даних, що має складені значення.
-
Засоби та принципи програмування на Ліспі
Реферат на тему: Засоби та принципи програмування на Ліспі 1. Контрольні конструкції MuLisp використовує неявну форму PROGN для обчислення форм, які складають тіло функції. Окрім того, інтерпретатор muLіsp розпізнає в тілі функції неявні COND конструкції. Неявні COND-и роблять визначення функцій читабельними, короткими та ефективними.
-
Функції конструктора
Реферат на тему: Функції конструктора muLISP-програми можуть автоматично генерувати нові структури даних, використовуючи функції конструктора. Ці функції можуть утворювати бінарні дерева або зв’язні списки, які моделюють структури даних практично для довільної задачі.
-
Програмування рядкових величин
Тема 7. . 1. Поняття рядкової величини. Величиною рядкового типу ( strings ) називається послідовність символів, укладена в одинарні лапки. Цей тип даних є стандартним для мови ПАСКАЛЬ, хоча він є структурованим. Величини можуть бути як константами, так і змінними. При завданні змінних символьного типу можна вказати кількість символів у цій величині.
-
Інтерпретатор muLisp
Реферат на тему: Інтерпретатор muLisp 1. Примітивні об’єкти даних Примітивними об’єктами даних є символи числа конси . muLisp має безліч функцій розпізнання, порівняння, комбінування та обробки цих об’єктів. Це дозволяє конструювати будь-які складні об’єкти даних. Як було сказано раніше, muLisp має два типи даних: атоми та списки.
-
Примітивні об єкти даних
Реферат на тему: Примітивними об’єктами даних є символи числа конси . muLisp має безліч функцій розпізнання, порівняння, комбінування та обробки цих об’єктів. Це дозволяє конструювати будь-які складні об’єкти даних. Як було сказано раніше, muLisp має два типи даних:
-
Функції модифікатора
Реферат на тему: Функції модифікатора Функції модифікатора виконують переадресацію вказівників в структурах даних мови програмування Лісп. 1. RPLACA <об’єкт1> <об’єкт2>.
-
Множини 3
Практичні заняття Множини Paskal дозволяє оперувати трьома множинами, як трьома типами даних. Для визначення типу множина використовується вираз: