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

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

ГоловнаМатематика, Геометрія, Статистика → Примітивні об’єкти даних - Реферат

Примітивні об’єкти даних - Реферат

дробові числа виводяться з n знаками після десяткової коми. При введенні дробового числа воно автоматично скорочується.
$ 3/4 $ 3/9 $ 5/1 $ 12/9
3/4 1/3 5 4/3
Внутрішня змінна *PRINT-BASE* відповідає за основу системи числення, в якій обробляються числа. Якщо значення цієї змінної є цілим та перебуває в інтервалі від 2 до 32, то такою і буде основа системи числення, інакше muLisp працює в десятковій системі числення.
$ (SETQ ten 10) $ (SETQ *PRINT-BASE* 2) $ 234
$ (SETQ *PRINT-BASE* 16) $ ten 11101010
$ ten 1010
0A
Функцією, яка розпізнає цілі числа, є INTEGERP. Вона повертає Т, якщо її аргумент є цілим числом та NIL інакше. Функція NUMBERP розпізнає число.
$ (INTEGERP 100) $ (INTEGERP 3.5)
T NIL
$ (NUMBERP 3.5) $ (NUMBERP 4/5)
T T
Число в подвійних лапках завжди є символом:
$ (SYMBOLP "23") $ (NUMBERP "23")
T NIL
Символи та числа є атомами. Наступні вирази повертають істину: (ATOM 3.5), (ATOM "23"), (ATOM 'APPLE).
Конс є примітивним об'єктом, який вказує на будь-які два інші об'єкти даних.. Він не є атомом. Назва конс пішла від функції конструктора CONS. Кожен конс склада- ється з CAR- та CDR- елементів. Конс часто називають точковою парою. Якщо X і Y об'єкти даних, то вираз (X . Y) є консом, CAR-елемент якого є X, а CDR-елемент - Y.
$ (SETQ A (cons X Y)) $ (CAR A) $ (CDR A) $ (CDR '(R . S))
$ A X Y S
(X . Y)
За допомогою точкового подання можна показати структурубудь-якого об'єкту. Список (x1 x2 x3) є ланцюгом консів, які зв'язані за допомогою CDR- елементів. Його CAR- елементи вказують на елементи списку. CDR- елемент останнього конса вказує на NIL. Вказаний список можна подати у вигляді (x1 . (x2 . (x3 . NIL))). Функція READ читання виразу розпізнає як точкове подання виразу, так і спискове. Функція виведення PRINT виводить об'єкти в списковому поданні.
$ (SETQ a '(q . (w . nil)) $ a $ (CONSP '(q . w)) $ (CONSP (q w))
(q w) (q w) T T
Функція (CONSP obj) розпізнає конси. Список не є примітивним об'єктом, а є ланцюгом консів. Отже, результатом застосування функції CONSP до списку буде Т.
Функції властивостей
Розглянемо, як можна працювати зі списком властивостей символа. Його можна по необхідності створювати, обробляти та видаляти. Властивості символа є глобальними, тобто доступними з довільної точки програми, поки вони не будуть явно змінені чи видалені. Використання символа в якості змінної чи імені функції не впливає на список властивостей.
Функції властивостей керують властивостями символів. CDR - елемент символа вказує на список властивостей. Разом з функціями флагів вони полегшують процес побудови динамічних баз даних.
1. (PUT символ ключ об'єкт). У список властивостей кладеться значення об'єкта відповідно до вказівника ключ.
$ (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. Якщо змінна capital має властивості, які їй були надані у попередньому прикладі, то:
$ (GET 'capital 'england) $ (GET 'capital 'germany)
london bonn
3. (REMPROP символ ключ). Видалення зі списка властивостей символа властивості, яка відповідає ключу. Повертається старе значення властивості, якщо воно знайдено, та NIL - інакше. Нехай символ capital має три попередні властивості.
(REMPROP 'capital 'germany)
bonn
(REMPROP 'capital 'usa)
washington
(CDR 'capital)
((england . london))
Функції розпізнання
Функції розпізнання - це твердження, які використовуються для розпізнання або ідентифікації об'єктів даних 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)
( (q (w (e (r (t (y))))))
б) '(q w e r t y -> ((((((y) t) r) e) w) q)
в) '(q w e r t y) -> ((q) (w) (e) (r) (t) (y))
г) '(q w e r t y) -> ((q w) (e r) (t y))
4. Написати функцію, яка за списком який дано в завданні 3 в другому стовпчику, будує лінійний список.
Loading...

 
 

Цікаве