Мова програмування Лiсп, Детальна інформація

Мова програмування Лiсп
Тип документу: Реферат
Сторінок: 5
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 11.2
Скачувань: 917
Функцiя SETQ дозволяє здiйснювати замiну значень декiльком символам в однiй командi: (SETQ a 1 b 2 c 3). При цьому змiни виконуються послiдовно злiва направо. Пiсля цього значенням символу a стане 1, b - 2, c - 3.

Функцiя PSETQ iдентична до функцiї SETQ за винятком того, що всi форми оцiнюються до того, як будуть здiйсненi будь-якi замiни. Проiлюструємо це на прикладi. Значення символа Sym позначатимемо через Val(Sym).

$ (SETQ w 1 e 2) Val(w)=1, Val(e)=2 $ (SETQ w 1 e 2) Val(w)=1, Val(e)=2

$ (SETQ w e e w) Val(w)=2, Val(e)=2 $ (PSETQ w e e w) Val(w)=2, Val(e)=1

При виконаннi операцiї замiни необхiдно розрiзняти символ та значення. При стартi системи mulLsp значенням кожного символа є вiн сам. Якщо ми введемо DOG, то i результатом буде DOG. Присвоїмо символовi DOG значення CAT: (SET 'DOG 'CAT). Результатом виразу (SET DOG 'HEN) буде HEN, але значення HEN ми присвоювали не символу DOG, а значенню символа DOG, тобто символу CAT. Значення символа DOG залишилося без змiни. Розглянемо результат наступних дiй:

(SET 'car 'road) Val(car) = road Val(road) = road

(SET car flower) Val(car) = road Val(road) = flower Val(flower) = flower

(SET 'car car) Val(car) = road Val(road) = flower Val(flower) = flower

(SET road car) Val(car) = road Val(road) = flower Val(flower) = road

(SET 'road 4) Val(car) = road Val(road) = 4 Val(flower) = road

(SET road 'hen) помилка, 4 не є символом i не може приймати iншi значення

POP повертає голову списка (вершину стека) i замiнює значення symbol на його хвiст. PUSH кладе в стек та змiнює його значення на збiльшений стек.

$ (SETQ a '(q w e r t)) Val(a) = (q w e r t)

$ (POP a) Val(a) = (w e r t)

$ (PUSH 'n a) Val(a) = (n w e r t)

Завдання

I Варiант завдань

1. Побудувати список, який задовiльняє наступним умовам:

а) мiстить два пiдсписки, перший з яких має три атоми, а другий - чотири атоми;

б) мiстить три атоми, але його хвiст дорiвнює NIL;

в) мiстить три складенi об'єкти, i лише його другий елемент є атомом;

г) голова списку мiстить три атоми, а кiлькiсть атомiв в усьому списку дорiвнює 3.

д) мiстить тiльки порожнiй список, а голова списку не є атомом.

е) голова та хвiст є списками з пiдсписками.

2. Що буде в результатi обчислення наступних виразiв:

a) (CONS NIL NIL) г) (ATOM (CDR '(q NIL)))

б) (CONS (CAR '((q w))) (CDR '((q (w e))))) д) (EQL NIL 'NIL)

в) (EQL (CDR '(q)) NIL) е) (PUSH nil nil) (EQL (ATOM '(q w)) nil)

3. Скласти вираз, який би за вхiдними даними побудував би заданий результат.

a) дано: (A, B, C), (X, Y, Z). побудувати: (A, Y, Z).

The online video editor trusted by teams to make professional video in minutes