58 (Вопросы по разным темам с ответами (программирование))
Описание файла
Файл "58" внутри архива находится в следующих папках: ГОСЫ!!!, 19, 27, 58. Префиксная форма записи и списковая структура программы и данных на языке ЛИСП. Базовые принципы обработки списков на ЛИСПе. Документ из архива "Вопросы по разным темам с ответами (программирование)", который расположен в категории "". Всё это находится в предмете "окончание университета" из 12 семестр (4 семестр магистратуры), которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "к экзамену/зачёту", в предмете "окончание университета" в общих файлах.
Онлайн просмотр документа "58"
Текст из документа "58"
Префиксная форма записи и списковая структура программы и данных на языке ЛИСП. Базовые принципы обработки списков на ЛИСПе.
-
Префиксная форма записи.
Существуют три вида записи выражений:
-
инфиксная форма, в которой оператор расположен между операндами (например, "а + b");
-
постфиксная форма, в которой оператор расположен после операндов ("а b + ");
-
префиксная форма, в которой оператор расположен перед операндами ("+ а b").
Постфиксная и префиксная формы образуют т.н. польскую форму записи. Польская форма удобна, прежде всего, тем, что в ней отсутствуют скобки.
Пример: + 1 2 3 = 6 <=> 1 + 2 + 3 = 6
-
Списковая структура программы и данных на языке ЛИСП.
Программы и данные Лиспа существуют в форме i символьных выражений, которые хранятся в виде "списковых" структур. Употребляются два вида объектов: атомы и списки. Атомы ? это символы, применяемые для идентификации объектов, которые могут быть числовыми или символьными. Список ? это последовательность (возможно, пустая) элементов, заключенных в круглые скобки, каждый из которых является либо атомом, либо списком.
Характерная особенность языка Лисп состоит в том, что и программы, и данные, которые они обрабатывают, имеют одинаковую структуру.
{см. http://www.eduhmao.ru/portal/hmao/CDMuseum/museum/SOFT/lisp.htm }
-
Базовые принципы обработки списков на ЛИСПе.
Для манипулирования списками употребляются так называемые списочные примитивы (примитивные функции):
Название | Обозначение | Пример | Результат примера |
Выделение головы списка (head) | CAR <список> | (CAR ‘(1 2 3)) | 1 |
Выделение хвоста списка (tail) | CDR <список> | (CDR ‘(a b)) | (b) – список, не элемент |
Различные сочетания CAR & CDR позволят выделить любой элемент из списка | C…….R <список> | ( CADDDR ‘(1 2 3 4 5 6 7)) | 4. Идём с конца: D: хвост (2 3 4 5 6 7); D: хвост (3 4 5 6 7); D: хвост (4 5 6 7); A: голова 4. |
Слияние двух списков | APPEND <список1> <список2> | (APPEND ‘(1 2) ‘(3 4 5)) | (1 2 3 4 5) |
Добавление элемента в голову списка | CONS <элемент(атом)> <список> | (CONS ‘a ‘(b c)) (CONS ‘(1 2) ‘(3 4 5)) | (a b c) ((1 2) 3 4 5) |
Список, состоящий из последнего элемента | LAST <список> | (LAST ‘(5 6 7)) | (7) – список |
Удаляет вхождения S-выражений из списка заданное число раз | DELETE <Sвыражение> <список> [<число>] | (DELETE ‘a ‘(a b a c)) (DELETE ‘a ‘(a b a c) 1) | (b c) (b a c) |
Обращение элементов верхнего уровня списка | REVERSE <список> | (REVERSE ‘((a b) c d)) | (d c (a b)) |
Длина (количество элементов) списка верхнего уровня | LENGTH <список> | (LENGTH ‘((1 2) 3 4)) (LENGTH ‘(a b c)) | 3 3 |
Превращение атома в список символов (Например: слово разбиваем на буквы) | EXPLODE <атом> | (EXPLODE ‘true) | (t r u e) |
Cоставление атома из списка символов | IMPLODE <список атомов(символов)> | (IMPLODE ‘(F a l s e)) | False – атом!!! |
Соединение в список заданных элементов | LIST <элемент1> <элемент2> | (LIST ‘(a b) ‘(c d)) (LIST ‘a ‘b ‘c ‘d) | ((a b) (c d)) (a b c d ) |