2.4 Практическая работа №1
2.4.1 Постановка задачи
Тема: Обработка списков и арифметические операции в языке ЛИСП.
Цель работы: Изучить среду программирования Allegro CL Lite 3.0.1. Закрепить теоретические сведения о базовых функциях языка Lisp: арифметические вычисления, обработка списков, рекурсивные вычисления, создание пользовательских функций.
Задание.
1. Выбрать индивидуальный вариант практической работы из таблицы 2.7 согласно учебной группе (ПО-А, ПО-Б, ПО-В, ПО-Г, ИС-А, ИС-Б) и номеру в журнале студента. Текст радиограммы, заданной в таблице 2.7 номером, находится в таблице 2.6.
2. Согласно варианту (см. табл. 2.8) реализовать на языке Lisp пользовательскую функцию по рекурсивной обработке радиограммы.
3. Описание алгоритма обработки радиограммы (колонки 2, 4, 6 в табл. 2.8) находится в таблице 2.9.
Таблица 2.7 – Номера радиограмм для групп
Группа |
Номер радиограммы |
ПО-А, ПО-Г |
№ 1 – 20 |
ПО-Б |
№ 21 – 40 |
ПО-В |
№ 41 – 70 |
ИС–А, ИС-В |
№ 71 – 86 |
ИС-Б |
№ 87 – 100 |
Таблица 2.8 - Варианты практической работы № 1
Номер радио-граммы |
№ алгоритма |
Номер радио-граммы |
№ алгоритма |
Номер радио-граммы |
№ алгоритма |
Номер радио-граммы |
№ алгоритма |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
1 |
1 |
26 |
2 |
51 |
1 |
76 |
4 |
2 |
2 |
27 |
12 |
52 |
5 |
77 |
21 |
3 |
3 |
28 |
4 |
53 |
16 |
78 |
13 |
4 |
4 |
29 |
10 |
54 |
13 |
79 |
20 |
5 |
12 |
30 |
13 |
55 |
16 |
80 |
7 |
6 |
5 |
31 |
1 |
56 |
6 |
81 |
4 |
7 |
6 |
32 |
7 |
57 |
21 |
82 |
2 |
8 |
7 |
33 |
12 |
58 |
2 |
83 |
22 |
9 |
8 |
34 |
2 |
59 |
22 |
84 |
13 |
10 |
2 |
35 |
11 |
60 |
7 |
85 |
8 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
11 |
5 |
36 |
14 |
61 |
1 |
86 |
18 |
12 |
7 |
37 |
6 |
62 |
18 |
87 |
22 |
13 |
17 |
38 |
5 |
63 |
11 |
88 |
7 |
14 |
5 |
39 |
10 |
64 |
7 |
89 |
12 |
15 |
23 |
40 |
6 |
65 |
16 |
90 |
2 |
16 |
6 |
41 |
1 |
66 |
2 |
91 |
1 |
17 |
8 |
42 |
15 |
67 |
12 |
92 |
19 |
18 |
2 |
43 |
5 |
68 |
13 |
93 |
17 |
19 |
10 |
44 |
4 |
69 |
7 |
94 |
7 |
20 |
4 |
45 |
13 |
70 |
5 |
95 |
19 |
21 |
1 |
46 |
7 |
71 |
1 |
96 |
13 |
22 |
7 |
47 |
6 |
72 |
6 |
97 |
6 |
23 |
11 |
48 |
7 |
73 |
8 |
98 |
15 |
24 |
5 |
49 |
23 |
74 |
15 |
99 |
20 |
25 |
5 |
50 |
2 |
75 |
5 |
100 |
23 |
Таблица 2.9 – Описание алгоритма обработки списка
№ алгоритма |
Алгоритм обработки списка |
1 |
2 |
1 |
Подсчитать в списке количество элементов, которые являются символами |
2 |
В заданном списке подсчитать количество элементов, которые являются атомами |
3 |
Подсчитать количество чисел, которые больше N (N - число) |
4 |
Подсчитать в заданном списке количество элементов, являющихся числом |
5 |
В заданном списке определить количество подсписков, состоящих из M (M=1,2,3 или 4) элементов |
6 |
Подсчитать количество пустых подсписков |
7 |
Определить количество какой-либо одной (А,Б,В…) повторяющейся буквы |
8 |
Найти сумму чисел, которые больше N (N - число) |
9 |
Подсчитать количество положительных чисел в списке |
10 |
Подсчитать количество отрицательных чисел |
11 |
Вычесть из каждого числа списка N и подсчитать количество отрицательных чисел (N - число) |
12 |
Определить количество чисел, которые меньше N (N - число) |
13 |
Подсчитать количество пар подряд идущих одинаковых элементов |
14 |
Подсчитать количество подсписков с последним элементом – буквой “Е” |
1 |
2 |
15 |
Определить количество элементов, являющихся строковыми элементами |
16 |
Подсчитать сумму чисел, которые меньше N (N - число) |
17 |
Найти в списке 2 самых маленьких числа |
18 |
Определить количество подсписков, в которых первый элемент – буква “Ф” |
19 |
Найти сумму чисел, которые меньше N и больше K (N и K - числа) |
20 |
Найти в списке сумму всех отрицательных чисел |
21 |
Найти в списке 2 самых больших числа и удалить их из списка |
22 |
Определить количество элементов, которые меньше N и больше K (N и K - числа) |
23 |
Найти сумму положительных чисел |
24 |
Прибавить к каждому элементу списка N и определить количество элементов, которые больше K (N и K - числа) |