іспі зображена на рис.2. Про основні процедурах написано в розділі "Розробка процедур оболонки", в якому представлені схеми алгоритмів їх роботи. Текст програми знаходиться в Додатку А, текст бази знань - у Додатку В.
Тепер перейдемо безпосередньо до опису програми. Головна процедура start запускає процедуру mainmenu (вона представлена ​​у вигляді нескінченного циклу do, також представлені і всі підменю: menufiles, menubd і т.д.). Mainmenu малює головне меню і тут же за допомогою виразу cond і eq? організовано отримання вибору і запуск обраної процедури.
Процедура saving здійснює запис БД в файл за допомогою вбудованого виразу with-output-to-file і функції write (все це організовано у вигляді lambda-вирази).
Завантаження файлу (Процедура loading) відбувається за допомогою вбудованих with-input-from-file і read (причому БД хвороб представлена ​​у вигляді списку * it_is *, а симптомів у вигляді списку * simptom *).
Постановка діагнозу здійснюється за допомогою функції experting. З БД вибирається хвороба ill, береться список її симптомів spis_num і за допомогою функції exp_ill (Spis_num, ill) визначається, чи є у користувача ці симптоми. Якщо ця функція буде помилковою (на запит користувач відповів негативно), то відбудеться рекурсивний виклик функції experting від кінця списку хвороб (тобто в Надалі буде обрана наступна і т.д.). У процесі роботи функції з допомогою функції set! формуються списки позитивних і негативних відповідей користувача * yes * і * no *. Якщо функція experting виконала свою роботу і діагноз поставлений успішно, то функція log_out (пояснення логічного виводу) виводить на екран назву певної хвороби і її симптоми (Функція використовує для цього функцію cond і рекурсію). p> У режимі переглянути список хвороб і симптомів (view_ill) використовується cond і рекурсивний виклик функції від хвоста списку, що дозволяє вивести всі вміст БД на екран.
У режимі додавання хвороб (add_ill) і симптомів (add_sym) використовується вбудована функція append (для з'єднання списків), а рекурсивний виклик функції addsyms забезпечує можливість додавання до хвороби декількох симптомів. При редагуванні хвороб (red_ill) і симптомів (red_sym) старе значення віддаляється за допомогою функції delete! (Видалення елемента зі списку), а нове обавляется за допомогою append.
Видалення хвороб (del_ill) здійснюється за допомогою функції delete!. При видаленні хвороби автоматично видаляються і всі її симптоми (рекурсивно викликаючи сама себе від кінця видаляється списку ознак функція delsyms послідовно видаляє всі симптоми цієї хвороби).
Видалення симптому (del_sym) також здійснюється за допомогою delete!, але при цьому з допомогою функції append формується новий список симптомів хвороби, симптом якої видаляється. Потім відбувається видалення хвороби зі старим списком симптомів {(set! * it_is * (delete! (list ill spis_nums) * it_is))} і додавання до списку * it_is * цієї ж хворо...