Вы находитесь на странице: 1из 7

Министерство образования Республики Беларусь

Учреждение образования
“Белорусский государственный университет
информатики и радиоэлектроники”
Факультет информационных технологий и управления
Кафедра интеллектуальных информационных технологий

Лабораторная работа №1
по дисциплине «Логические основы интеллектуальных систем»

Выполнил: Загорский А.Г.


студент группы
721702

Проверил Ивашенко В.П.

Минск 2020
Тема: Программирование операций обработки знаний над простыми типами и структурами.

Вариант: Реализовать процедуру построения перевёрнутой цепочки (sc-цепочки)

Исходники: тык

Порядок выполнения:
1. Разархивировать fs_repo.lib.rar в пустую папку.
2. Запустить консоль командного процессора, перейти в папку с разархивированным
fs_repo.lib.rar.

3. Выполнить команду clean для очистки репозитория.


4. Выполнить команду place для трансляции исходных текстов и размещения базы знаний в
репозитории.
5. Выполнить команду start cmd.

6. В новом окне командного процессора выполнить команду run -d >log

7. Открыть файл log, убедиться, что тестовые процедуры отработали успешно, без ошибок.
8. Закрыть последнее окно командного процессора.
9. В папке fs_repo_src в файле /lib/test/main.m4scp вызовы тестовых процедур, кроме
hello_world, заключить в макрос DISABLE([ ... ]).
10. Повторить шаги 2-8.

11. Скопировать тестовую процедуру hello_world в новый файл (/lib/test/reverse.m4scp) и


соответственно её переименовать (внести изменения в строку, содержащую "Location:",
задающую сегмент памяти, в который будет помещён граф процедуры: "/lib/test/reverse").
12. Добавить вызов в main.m4scp.
13. Проверить, повторяя шаги 2-8.
14. Реализовать в тестовой процедуре подготовку тестовых данных с помощью операторов
генерации (genEl, genElStr3).
15. Распечатать тестовые данные, используя оператор printEl - аналог оператора print.

16. Проверить, повторяя шаги 2-8.

17. Реализовать в тестовой процедуре удаление всех тестовых данных с помощью


операторов удаления (eraseEl).
18. Создать пустой узел протоколирования, для передачи в протоколирующие процедуры
(logger), добавить оператор его удаления по завершении тестовой процедуры (eraseEl).
19. Реализовать формирование цепочки синглетонов тестовых данных, используя оператор
call для вызова процедур push_first_singlet, push_singlet.

20. Реализовать получение и распечатку тестовых данных из цепочки, используя операторы


printEl, ifVarAssign и оператор call для вызова процедуры get_next_singlet.

21. Проверить, повторяя шаги 2-8.

22. Реализовать удаление данных из цепочки и самой цепочки, используя оператор


ifVarAssign и оператор call для вызова процедур pop_destroy_singlet и destroy.
23. Реализовать подпрограмму - процедуру построения перевёрнутой цепочки (sc-цепочки)
(/lib/chain/reverse/chain_reverse), имеющую интерфейс:
1 - state,
2 - true,
3 - stack = (Chain, ...),
4 - parameters = ((then_routine, then_parameters), (else_routine, else_parameters), ...) -
необязательно вся структура,
5 - logger.
Алгоритм:
1. Сгенерировать узел пустого sc-множества empty.
2. Построить результат в соответствии с выбранным вариантом (перевёрнутую
цепочку).
3. Если цепочка построена успешно, то
3.1. Добавить её в стек (push).
3.2. Если then_parameters не задан, то then_parameters = empty (оператор
varAssign).
3.3. Если есть then_routine и then_routine != then_parameters (оператор ifCoin),
то вызвать then_routine (c параметрами - state, true, stack, then_parameters,
logger), дождаться её завершения,
иначе state = true (оператор varAssign).
3.4. Извлечь (pop) перевёрнутую цепочку из стека.
4. Если цепочка не построена успешно (пустой stack), то
4.1. Если else_parameters не задан, то else_parameters = empty.
4.2. Если есть else_routine и else_routine != else_parameters,
то вызвать else_routine (c параметрами - state, true, stack, else_parameters,
logger), дождаться её завершения.
5. Удалить empty.
24. Добавить вызов реализованной процедуры (/lib/chain/reverse/chain_reverse) в тестовую
процедуру.
25. Отладить и протестировать /lib/chain/reverse/chain_reverse.

Вывод: В рамках лабораторной работы были освоены и реализованы на практике основные


операции обработки знаний над простыми типами и структурами при помощи языка SCP.
Также были получены навыки работы с форматом m4scp. Основными операциями над
простейшими структурами являются: генерация узла, генерация 3-элементной конструкции,
генерация 5-элементной конструкции, поиск 3-элементной конструкции, поиск 5-
элементной конструкции, удаление узла, удаление 3-элементной конструкции. Также
присутствуют операторы условного и безусловного перехода, операторы вызова сторонней
процедуры.

Оценить