На этом шаге мы приведем несколько задач и их решения.
Простейшие типы данных языка LISP
Работа в интерактивном режиме. Функция COND
Приведем цитату из монографии Т.Куна, которая отражает наш подход к проведению лабораторных занятий:
"От первых (студентов) регулярно можно услышать, что они прочитали насквозь главу учебника, поняли досконально все, что в ней содержится, но тем не менее затрудняются в решении ряда задач, предлагаемых в конце главы. Обычно эти трудности разрешаются одним и тем же способом, как это происходило в истории науки. Студент находит с помощью или без помощи своего инструктора способ уподоблять задачу тем, с которыми он уже встречался. Усмотрев такое сходство, уловив аналогию между двумя и более различающимися задачами, студент начинает интерпретировать символы и сам приводить их в соответствие с природой теми способами, которые еще раньше доказали свою эффективность. Скажем формула закона F=ma функционировала как своего рода инструмент, информируя студента о том, какие существуют аналогии для нее, обозначая своего рода гештальт, через призму которого следует рассматривать данную ситуацию.
Формирующаяся таким образом способность видеть во всем многообразии ситуаций нечто сходное между ними ... представляет собой, я думаю, главное, что приобретает студент, решая задачи-образцы с карандашом и бумагой или в хорошо оборудованной лаборатории. После того, как он выполнил определенное число таких задач или упражнений (это число может сильно меняться в зависимости от его индивидуальных особенностей), он смотрит на ситуацию уже как ученый, теми же самыми глазами, что и другие члены группы по данной специальности. Для него эти ситуации не будут уже больше такими же, как те, с которыми он имел дело, приступая к выполнению учебных заданий. Теперь он владеет способом видения, проверенным временем и разрешенным научной группой" [1, с.246-247].
1. Изобразите с помощью графической нотации следующие S-выражения:
2. Эквивалентны ли следующие S-выражения:
3. Переведите следующие точечные записи в списочные:
4. Переведите следующие списочные записи в точечные, используя графическую нотацию:
1. Какая из функций, чье имя начинается с C, кончается R и содержит буквы A и D (например, CAADR) возвращает:
2. Какая функция, примененная к списку более чем из трех элементов, возвращает:
3. Для каждого из следующих условий определить условное выражение, которое возвращает значение T, если условие удовлетворяется и NIL в противном случае:
4. Напишите условное выражение, которое:
5. Напишите условное выражение, которое проверяет является ли ее аргумент:
6. Пусть L1 и L2 - списки. Напишите условное выражение, которое
возвращает T, если первые два элемента этих списков соответственно равны друг
другу, и NIL в противном случае.
Решение можно посмотреть здесь;
7. Числовой список содержит 2 элемента. Напишите условное выражение, возвращающее больший из элементов списка.
8. Числовой список содержит 3 элемента. Напишите условное выражение, возвращающее меньший из элементов списка.
На следующем шаге мы приведем правила работы с системой программирования muLISP81.
Простейшие типы данных языка LISP
Работа в интерактивном режиме. Функция COND