Функції властивостей та розпізнання
Функції властивостей призначені для керування властивостями, пов’язаними із символами. 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 ) – повертає T, якщо – літера.

(NUMERIC-CHAR-P ) – повертає T, якщо – цифра.

(ALPHANUMERICP ) – повертає T, якщо – літера або цифра.



$ (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



Зазначимо, що символ проміжку (‘ ‘ ) є літерою.
Случайные рефераты:
Реферати - Питання і тести з української літератури
Реферати - Життя та творчість Леоніда Глібова
Реферати - Олександр Потебня
Реферати - Ключові слова в художньому творі
Реферати - Життя і творчість Павла Тичини
Реферати - Михайло Драй-Хмара. Життєвий і творчій шлях
Реферати
  • Всі реферати
  • Архітектура
  • Астрономія, авіація
  • Аудит
  • Банківська справа
  • Безпека життєдіяльності
  • Біографія, автобіографія
  • Біологія
  • Бухгалтерський облік
  • Військова кафедра
  • Географія
  • Геологія
  • Гроші і кредит
  • Державне регулювання
  • Діловодство
  • Екологія
  • Економіка підприємства
  • Економічна теорія
  • Журналістика
  • Іноземні мови
  • Інформатика, програмування
  • Історія всесвітня
  • Історія України
  • Історія економічних вчень
  • Краєзнавство
  • Кулінарія
  • Культура
  • Література
  • Макроекономіка
  • Маркетинг
  • Математика
  • Медицина та здоров'я
  • Менеджмент
  • Міжнародні відносини
  • Мікроекономіка
  • Мовознавство
  • Педагогіка
  • Підприємництво
  • Політологія
  • Право
  • Релігієзнавство
  • Промисловість
  • Сільське господарство
  • Сочинения на русском
  • Соціологія
  • Литература на русском
  • Страхування
  • Твори
  • Фізика
  • Фізична культура
  • Філософія
  • Фінанси
  • Хімія
  • Цінні папери
  • Логіка
  • Туризм
  • Психологія