TOSHKENT DAVLAT TRANSPORT UNIVERSITETI
“TRANSPORTDA AXBOROT TIZIMLARI VA TEXNOLOGIYALARI”
kafedrasi
“TEMIR YO‘L TRANSPORTIDA INTELLEKTUAL AXBOROT TIZIMLARI VA ULARNI LOYIHALASH”
fanidan
LABORATORIYA ISHI-3
Bajardi: AT-32 guruh talabasi
Egamberdiyev S.A.
Qabul qildi: Abdullayev E.S
Тошкент – 2021
Лабораторная работа №3. Обработка списков в Прологе
Цель лабораторной работы.
Освоение программирования на языке Пролог с использованием списков.
Рекомендации по выполнению лабораторной работы.
В Прологе нет такой распространенной и часто используемой структуры хранения данных как массивы, но зато есть развитые возможности работы со списками. Список – упорядоченный набор элементов одного типа. В отличие от массивов, количество элементов которых строго фиксировано (в большинстве языков программирования), списки позволяют модифицировать, добавлять или удалять из него элементы.
Списки в Прологе заключаются в квадратные скобки, например [1, 2, 8, 123] или ['Пн', 'Вт', 'Четверг']. Список [ ], не содержащий ни одного элемента, называется пустым. Каждый непустой список состоит из двух частей: головы и хвоста. Головой является первый элемент списка, хвостом – все остальное.
Списки и его составные части
В программе голова отделяется от хвоста символом «|».
Часто используемыми операциями при работе со списками являются:
- проверка наличия элемента в списке;
- добавление элемента в список;
- конкатенция (объединение) списков;
- удаление элемента из списка;
- задание обратного порядка следования элементов списка;
- разделение списка на два.
Программный код и примеры вопросов, содержащие предикаты для работы со списками, показаны на следующем рисунке.
Рис.1. Предикаты обработки списков
Для операции добавление элемента в список не требуется отдельного правила, если этот элемент добавляется в начало списка (см. вопрос 1 на рис.1). Для остальных операций требуется определение отдельных предикатов, в т.ч. содержащих рекурсивные правила.
Задание на выполнение лабораторной работы.
Разработать программу с использованием списков, отвечающую следующим требованиям.
А) По индивидуальному заданию добавить в программу правила для решения задачи.
1. Даны два списка целых чисел A1, A2, ..., An и B1, B2, ..., Bn. Объединить эти списки в один, исключить все повторения чисел и упорядочить их по возрастанию.
2. В списке целых чисел S1, S2, ..., Sn исключить все последовательности указанного вида, например [1, 11, 24, 5].
3. В списке символов S1, S2, ..., Sn найти первое и последнее вхождения указанного символа и исключить все символы между ними.
4. В списке символов S1, S2, ..., Sn найти длину наибольшей последовательности, построенной повторением одного и того же символа.
5. В списке символов S1, S2, ..., Sn каждую указанную последовательность символов заменить на другую указанную последовательность.
6. В списке символов S1, S2, ..., Sn найти самое короткое слово, если разделителем между словами является один или несколько пробелов и удалить его.
7. В списке символов S1, S2, ..., Sn найти самое длинное слово, если разделителем между словами является один или несколько пробелов и удалить его.
8. В списке символов S1, S2, ..., Sn найти все вхождения указанного слова, если разделителем между словами является один или несколько пробелов.
9. В списке символов S1, S2, ..., Sn найти число слов с одинаковыми первой и последней буквами, если разделителем между словами является один или несколько пробелов. Определить самое длинное такое слово.
10. В списке символов S1, S2, ..., Sn найти среднюю длину слов, если разделителем между словами является один или несколько пробелов. Определить все слова, имеющие эту длину.
11. Преобразовать список целых чисел A1, A2, ..., An следующим образом: исключить нули, слева записать все положительные числа, справа - все отрицательные.
12. Преобразовать список целых чисел A1, A2, ..., An следующим образом: исключить нули, слева записать все четные числа, справа - все нечетные.
13. Преобразовать список целых чисел A1, A2, ..., An следующим образом: исключить нули, слева записать все простые числа, справа - все составные.
14. В списке целых чисел A1, A2, ..., An определить максимально длинную последовательность чисел, расположенных в возрастающем порядке.
15. В списке целых чисел A1, A2, ..., An определить максимально длинную последовательность чисел, расположенных в убывающем порядке.
16. Список целых чисел A1, A2, ..., An оставить без изменений, если он упорядочен по возрастанию или убыванию. В противном случае: каждый четный элемент списка утроить, каждый элемент, стоящий на нечетном месте и кратный четырем, удалить.
Б) Отчет должен содержать:
- титульный лист;
- описание задания;
- текст программы;
- вопросы с ответами, иллюстрирующие корректность работы программы;
- вывод.
Do'stlaringiz bilan baham: |