Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vstup.doc
Скачиваний:
3
Добавлен:
20.11.2018
Размер:
250.88 Кб
Скачать

2.3 Особливості програмної реалізації

Функції системи повинні забезпечувати можливість збереження, виведення, редагування інформації, що зберігається в базі знань системи. Необхідно зауважити, що програмна реалізація системи повинна включати в себе аналіз нештатних ситуацій, тобто під час роботи системи, не повинно бути повідомлень про виявлені помилки, що генеруються компілятором Visual Prolog під час виконання програми, необхідно забезпечити аналіз таких ситуацій і перехоплювати стандартні повідомлення власними. Для цього в програмному коді системи передбачено цілий ряд перевірок, які дозволяють уникнути повідомлень про помилки, які генеруються компілятором. Розглянемо детальніше дану проблему на реальних прикладах.

а) Перевірка наявності файлу із зовнішньою базою даних на диску.

В реалізовані програмі для підключення інформації із зовнішньої бази даних використовується правило open_database(), яке має наступні реалізації:

% Opening database

open_database() :-

existfile(db_file_name),

consult(db_file_name, statinfo), !.

open_database() :-

write(db_error_file_not_present),

beep(),

exit().

Перша реалізація правила працює наступним чином: за допомогою службового предиката existfile(db_file_name) перевіряється наявність файлу db_file_name на диску, у разі успішного завершення перевірки вміст файлу підключається до системи в розділ оголошення предикатів зовнішньої динамічної бази знань facts. За допомогою операції ! (відсікання) забезпечується можливість ігнорування іншої реалізації даного правила при успішному завершенні першої. У випадку хибного завершення першої реалізації, операція відсікання забезпечує виконання другої реалізації даного правила.

б) Перевірка наявності інформації в базі даних

Дана операція призначена для забезпечення коректного видалення інформації з бази знань системи, а також для унеможливлення реєстрації подібних даних. Розглянемо дану процедуру на прикладі реалізації алгоритму перевірки даних про адміністративні одиниці.

Коли користувач системи викличе форму реєстрації даних про деяку авіакомпанію виникає необхідність перевірити інформацію в базі знань чи не присутня подібна інформація в базі.

Ще однією особливістю є використання структур-списків для зберігання інформації про місця посадки. Для запису (введення) даних структур з клавіатури використовується наступне правило.

% readList - List registration

readlist([H|T]):-

write("Пункт прибуття:> "),

readln(H), readchar(Ch), Ch='y', !,

readlist(T).

readlist([]).

Розглянемо як працює вищенаведений програмний код. Користувачу пропонується ввести деяку інформацію з клавіатури, яка буде поміщена в голову списку, після введення даних система очікує події від клавіатури, якщо була натиснута клавіша "y", пропонується ввести ще один елемент списку, і це буде доти, доки користувач не натисне іншої клавіші.

Використання списків для представлення інформації про місця посадки дозволило значно збільшити можливості системи, а саме це дало можливість пошуку по аеропортам посадки (пересадки) для рейсів, що мають декілька зупинок. В свою чергу для реалізації цих можливостей було застосовано наступні процедури для роботи із списками.

% presentItem - find element in list

presentItem(X, [X|_]).

presentItem(X, [_|T]) :- presentItem(X, T).

% showItemsList - showing arrived items from ItemsList

showItemsList([]).

showItemsList([X|Y]) :- write(X), nl, showItemsList(Y).

Перший предикат призначений для визначення приналежності елемента списку, дана процедура використовується при пошуку.

Другий предикат призначений для виводу списку на екран, дана процедура використовується при пошуку інформації про авіарейси по різним критеріям.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]