Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Вычисления, изменяющие структуру.




Основными функциями, изменяющими физическую структуру списков, являются RPLACA и RPLACD, которые уничтожают прежние и записывают новые значения в поля CAR и CDR списочной ячейки:

(RPLACA ячейка значение-поля);поле CAR

(RPLACD ячейка значение-поля);поле CDR

 

Первым аргументом является указатель на списочную ячейку, вторым - записываемое в нее новое значение поля CAR или CDR. Обе функции возвращают в качестве результата указатель на измененную списочную ячейку:

 

_(SETQ a ‘(b c d)) ð (b c d)

_(RPLACA a ‘d) ð (d c d)

_(RPLACD a ‘(o n m)) ð (d o n m)

_a ð (d o n m)

 

Задания к лабораторной работе.

1. Определите с помощью лямбда-выражения функцию, вычисляющую:

a) +y-x*y;

b) x*x+y*y;

c) x*y/(x+y)-5*y;

2. Определите функции (NULL x), (CADDR x) и (LIST x1 x2 x3) с помощью базовых функций. (Используйте имена NULL1, CADDR1 и LIST1, чтобы не переопределять одноименные встроенные функции системы.

3. Используя композицию, напишите функции, которые осуществляют обращение списка из 2, 3,..., n элементов.

4. Используя композицию описанных выше предикатов и логических связок, постройте функцию, которая проверяет, является ли ее аргумент:

a) списком из 2, 3,... элементов;

b)списком из 2, 3,... атомов;

5. Напишите функцию:

a) такую, что P(n) для произвольного целого n есть список из трех элементов, а именно: квадрата, куба и четвертой степени числа n;

b) для двух аргументов значением которой является список из двух элементов (разности и остатка от деления);

c) такую, что A(n) есть список (The answer is n). Так, значением (A 12) будет (The answer is 12);

d) семи аргументов, значением которой служит сумма всех семи аргументов.

6. Для каждого из следующих условий определить функцию одного аргумента L, которая имеет значение T, если условие удовлетворяется, и NIL в противном случае:

a) n-ый элемент L есть 12;

b) n-ый элемент L есть атом;

c) L имеет не более n элементов (атомов или подсписков).

7. Напишите функцию, которая вводит фразу на естественном языке и преобразует ее в список.

8. Напишите функцию, которая спрашивает у пользователя ФИО студента из группы (список группы составлен раньше) и выдает следующие данные о нем:

a) год рождения;

b) средний бал;

c) родителей;

d) списки свойств, присвоенные ему раньше.

9. Напишите функцию:

a) от одного аргумента (ФИО любого студента), замещающую в списке с данными о нем (написанном раньше) подсписки со средними балами на списки свойств;

b) вычисляющую средние балы, беря данные из списков свойств.

10. Каковы будут значения выражений (RPLACA x x) и (RPLACD x x), если:

a) x = ’(a b);

b) x = ’(a);

11. Вычислите значение следующих выражений:

a) (RPLACD ‘(a) ‘b);

b) (RPLACA ‘(a) ‘b);

c) (RPLACD (CDDR ‘(a b x)) ‘c);

d) (RPLACD ‘(nil) nil)

 

Вопросы.

1. Что такое лямбда-выражение?

2. Для чего используется функция DEFUN?

3. Чем различаются основные функции вывода?

4. Что возвращает в качестве значения функция READ?

5. Особенности функций, изменяющих структуру

Лабораторная работа №3.

Тема: Организация вычислений в Лиспе.

Цель: Изучить основные функции и их особенности для организации вычислений в Лиспе.

1. Предложения LET и LET*.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...