Лабораторная работа №1




Скачать 212.41 Kb.
НазваниеЛабораторная работа №1
страница1/4
Дата публикации21.05.2014
Размер212.41 Kb.
ТипЛабораторная работа
skachate.ru > Физика > Лабораторная работа
  1   2   3   4

Лабораторная работа № 1

Функциональное программирование на языке Lisp.

Обработка списочных структур



Цель работы


  1. Изучение основ функционального стиля программирования.

  2. Изучение способов программирования с помощью функций.

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

  4. Знакомство с особенностями программирования на языке Лисп.

  5. Освоение инструментальных средств разработки функциональных программ.



Содержание работы


Разработка простейших Лисп - программ.

Виды рекурсии. Использование накапливающего параметра. Вспомогательные переменные. Выбор вариантов данных для тестирования определений.

Отладка программы. Анализ ошибок.

^

Порядок выполнения работы


Выполнение лабораторной работы разбивается на два этапа.

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

  1. L – список списков. Обратить его элементы.

  2. L – список списков. Обратить L и все его элементы.

  3. L – простой список. Возвратить его последний элемент.

  4. L – список простых списков. Возвратить список из их последних элементов.

  5. L – список. Возвратить его N-ый элемент.

  6. L – список простых списков. Возвратить список из N-ых элементов.

Второй этап состоит в выполнении индивидуальных заданий в соответствии.

Содержание индивидуальных заданий по вариантам приведены в табл. 1.

Таблица 1

п/п

Задание



Дано: L1 – список, элементами которого являются списки.

Добавить список L2 после k –го элемента списка L1.

Пример:

f ( ‘( (a b) (c d) (e f) (g h) ) 2 ‘(x y z) )-> ( (a b) (c d) (x y z) (e f) (g h) )



Дано: ^ L – список, элементами которого являются списки.

Удалить m элементов списка L, следующих после k -го элемента L.

Пример:

f ( ‘( (a b) (c d) (e f) (g h) ) 1 2 )-> ( (a b) (g h) )



Дано: L1 – список, элементами которого являются списки. Заменить k -й элемент списка L1 списком L2.

Пример:

f ( ‘( (a b) (c d) (e f) (g h) ) 3 ‘(x y z) )-> ( (a b) (c d) (x y z) (g h) )



Дано: ^ L – список, элементами которого являются атомы.

Обратить отрезок списка L между k1 -ым и k2 –ым его элементами.

Пример:

f ( ‘( 1 2 3 4 5 6 7 8 9 ) 4 7 )-> ( 1 2 3 7 6 5 4 8 9 )



Дано: L1 – список, элементами которого являются атомы.

Получить «простой» список включением элементов списка L2 между i -ым и i+1 –ым элементами списка L1, если некоторый объект obj совпадает с k- ым элементом списка L1.

Пример:

f ( ‘( 10 20 30 40 50 60 70 80 90 ) 5 8 80 ‘(53 55 57) )

-> ( 10 20 30 40 50 53 55 57 60 70 80 90 )

Пример:

f ( ‘( 10 20 30 40 50 60 70 80 90 ) 5 8 70 ‘(53 55 57) )

-> ( 10 20 30 40 50 60 70 80 90 )



Дано: L – список, элементами которого являются атомы.

Получить «простой» список, в котором одинаковые элементы списка L сгруппированы в «отрезки».

f ( ‘( a b c d a b c e g h g ) )-> ( a a b b c c d e g g h )



Обратить данный список l, удалив из него элементы, совпадающие с первым элементом списка l. l - список, элементами которого являются списки.



Дано: l - "простой" список, obj – атом. Сформировать списки из заданного obj с каждым элементом списка l. Возвратить список, элементами которого являются сформированные по указанному правилу списки.



Исключить все повторные вхождения элементов списка l. l - список, элементами которого являются списки.



Обратить отрезок из m элементов, следующих за k-ым элементом данного списка l. l - список, элементами которого являются списки. Списки из обращенного отрезка не обращать.



l - список, элементами которого являются списки. Обратить списки, составляющие отрезок из m элементов списка l, следующих после k-го элемента.



Упорядочить по возрастанию все нечетные элементы списка l. l - список, элементами которого являются атомы.



l - список, элементами которого являются списки. Определить позицию и длину наиболее "длинного" элемента списка l.



Данный список l имеет структуру вложения вида: ((( ... ))). Определить "глубину" вложения. Например, в случае ((( a b ))) "глубина" вложения равна 3.



l - список, элементами которого являются списки, состоящие из чисел. Определить номер элемента списка l, содержащего наименьшее число. Например, в случае l = ( (1 3) (0) (6 1) ), ответ: n = 2. Не рассматривать случай, когда такой элемент не единственный.



l - список, элементами которого являются атомы. Проверить, является ли список l упорядоченным.



Упорядочить по убыванию все четные подсписки списка l.



Удалить из списка l все подсписки, длины которых равны их порядковым номерам в l. Например, в случае l = ( (a) (b) (c d e) ), необходимо удалить подсписки (a) и (c d e).



l1 - список списков списков чисел. Необходимо получить список чисел l2, в котором каждый элемент равен сумме чисел соответствующих подсписков. Например, в случае l1 = (((1 2 3)(4 5 6))((7 8 9))), l2 = ( A B ), где A = 1+2+3+4+5+6, B = 7+8+9.



l - список, элементами которого являются списки. Возвратить позицию того элемента списка l, который содержит наибольшее число. Известно, что повторяющихся чисел в списке l нет.



Удалить m элементов списка l, следующих за k-ым его элементом. l - список, элементами которого являются списки.



Заменить элементы списка l1 после k-го элементами списка l2 начиная с k-го, если первые k-1 элементов этих списков совпадают. l1 и l1 - простые списки.



Даны списки списков чисел l1 и l2. Определить, какой из списков меньше (как по значениям элементов, так и по длинам подсписков и самих списков).



Удалить из списка чисел l все элементы, кратные числу n.



Найти среднее арифметическое чисел, составляющих список l. l - список, элементами которого являются атомы.



l1,l2 - списки, элементами которых являются атомы. Найти список l3, являющийся подсписком и l1 и l2.



l1,l2 - списки, элементами которых являются атомы. Выяснить, содержит ли список l1 все элементы из списка l2 (только одно вхождение).



l1,l2,l3 - списки, элементами которых являются атомы. Заменить в списке l1 все вхождения элементов из списка l2 на элементы из списка l3 под соответствующими порядковыми номерами.



l - список, элементами которого являются числа в диапазоне от 0 до 9. Подсчитать число, получающееся по следующему правилу: если l = ( 5 1 2 6 ), то число = 5*1000 + 1*100 + 2*10 + 6 = 5126.



l1,l2 - списки, элементами которых являются атомы. Выяснить, содержит ли список l1 все элементы из списка l2 (только три вхождения).



l1 - список, элементами которого являются атомы. Построить список l2, содержащий все подсписки списка l1, имеющие длину не менее n и не более m.



l1 - список, элементами которого являются списки. Удалить из каждого подсписка списка l1 все элементы, расположенные посередине, но только если длина соответствующего подсписка нечетная.



l1 - список, элементами которого являются атомы. Сформировать список списков l2, содержащий элементы из списка l1, сгруппированные в подсписки длины n.



l1,l2 - списки, элементами которых являются атомы. Построить список l3, нечетные элементы которого содержат соответствующие нечетные элементы списка l1, а четные - из l2.



l1,l2 - списки, элементами которых являются атомы. Построить список l3, элементы которого содержат сначала элемент из списка l1, затем элемент из списка l2, затем следующий элемент из l1 и т.д.



^

Содержание отчета


Результатом выполнения студентом лабораторной работы является отчет, который представляет собой файл программы на языке Лисп, дополненный необходимыми комментариями, поясняющими описания функций, контрольными примерами выполнений функций.
  1   2   3   4

Похожие:

Лабораторная работа №1 iconЛабораторная работа № Установка и настройка ос семейства Windows...
Лабораторная работа № Изучение сетевых средств операционной системы ms windows. Диагностика сети средствами операционной системы....
Лабораторная работа №1 iconЛабораторная работа №4
Цель: Так как лабораторная работа разделена на варианты, то у данной работы две цели
Лабораторная работа №1 iconЛабораторная работа №3 Лабораторная работа №3 " анализ сетевого траффика "
Знакомство со структурой тср/ip-пакетов и с составом его отдельных частей – заголовочной части, блока данных и трейлером
Лабораторная работа №1 iconКонтрольная работа №1 Контрольная работа №2 Лабораторная работа №1...
Для допуска к сдаче экзамена за первый семестр студент должен иметь оценки «зачтено» за все письменные работы этого семестра
Лабораторная работа №1 iconКонтрольная работа №1 Контрольная работа №2 Лабораторная работа №1...
Для допуска к сдаче экзамена за первый семестр студент должен иметь оценки «зачтено» за все письменные работы этого семестра
Лабораторная работа №1 iconЛабораторная работа №5. Эксперимент лабораторная работа №6 Раздел...
Цель: Выявление типов поведения студентов (коллег) в дискуссии (наблюдение по схеме Р. Бейлза)
Лабораторная работа №1 iconЛабораторная работа №1 «Экономическое обоснование нир»
Лабораторная работа № Экономическая оценка нир (Определение текущих затрат на проведение нир)
Лабораторная работа №1 iconЛабораторная работа по теме «Тема 10. Лабораторная работа «Текстовые файлы»
Цель лабораторной работы состоит в изучении средств vb и средств vs для работы с текстовыми файлами
Лабораторная работа №1 iconЛабораторная работа № Групповые политики 50 Лабораторная работа №10....
Предлагаемый лабораторный практикум дополняет лекционный курс по дисциплине «Сетевое администрирование на основе Microsoft Windows...
Лабораторная работа №1 iconЛабораторная работа № Операционная система Microsoft
Лабораторная работа № Операционная система Microsoft Windows и ее стандартные приложения

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2014
контакты
skachate.ru
Главная страница