- •Лабораторная работа 1 Знакомство с инструментальными средствами для создания экспертных систем.
- •Краткие теоретические сведения
- •Режимы работы
- •Характеристики эс
- •Оперативная помощь
- •Правила "guru"
- •Стратегии управления
- •5.1. Прямой вывод
- •Обратный вывод
- •6. Переменные
- •6.1. Рабочие переменные
- •6.2. Предварительно определенные переменные
- •6.3. Выражения с переменными
- •7. Объяснение аргументации
- •8. Синтаксис правил "guru"
- •9. Отладка зс
- •9.1. Запрос во время консультации
- •9.2. Запрос после консультации
- •Порядок выполнения работы
- •Описание переменных среды
- •Основные команды "guru"
- •Выражения и функции "guru"
- •Контрольные вопросы
- •Лабораторная работа 2 Создание пробной экспертной системы.
- •Подготовка и работе
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа 3 Учет факторов уверенности при создании экспертной системы
- •Факторы уверенности
- •Объединение фу
- •3. Методы объединения фу для переменной е.Gfjo, описывающей среду
- •4. Методы объединения фу для переменной e.Cfco, описывающей среду
- •5.Методы объединения фу для переменной e.Cfva, описывающей среду
- •6.Значения фу для выражений, содержащих переменные
- •Подготовка к работе
- •Порядок выполнения работы
- •Контрольные вопросы.
- •Лабораторная работа 4 Командный режим "guru"
- •Краткие теоретические сведения
- •1. Основные команды
- •Команда build
- •Команда compile
- •Команда consult
- •Команда run
- •Команда dir
- •Команда let
- •Команда output
- •Команда input
- •Команда if-theh-else
- •Подготовка к работе
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа 5 Электронные таблицы "guru"
- •Краткие теоретические сведения
- •Режим обработки эв
- •2. Команды эв
- •2.13 Использование эв в программе
- •3. Пример программы с использованием эв
- •Подготовка к лабораторной работе
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа 6 Графические средства "guru"
- •Краткие теоретические сведения
- •Управление графами с помощью утилитных переменных и
- •Команда plot bar
- •Команда plot pie
- •Команда plot line
- •Команда plot function
- •Команда range
- •Команда pattern
- •Команда plot to
- •Команда plot from
- •2. Пример программы, выводящей данные из эв
- •Подготовка к лабораторной работе
- •Порядок выполнения работы
- •Контрольные вопросы
- •Система guru Общие характеристики системы
- •Функциональные возможности
- •Построение экспертной системы
- •Р ис. 3.1. Дерево целей
- •Тестирование экспертной системы
- •Запуск системы и работа в режиме меню Запуск системы
- •Некоторые сведения о работе в режиме меню
- •Использование режима меню
- •Описание команд меню Expert Systems
- •Режим редактирования набора правил (guru Rule Set Manager)
- •Режим редактирования правил
- •Часть if – посылка правила. Может быть любым выражением.
- •Режим редактирования переменных
- •Описание команд меню Information Manager
- •Примеры использования системы
- •Приложение 1 Листинг 1. Эс для оценки надежности поставщика (в среде guru)
- •Листинг 2. Пример работы эс для оценки надежности поставщика
- •Пример объяснений
- •Листинг 3. Подсистема прогнозирования цен Текст программы
- •Пример консультации
Выражения и функции "guru"
Арифметические:
+ - сложение;
- - вычитание;
* - умножение;
/ - деление;
** - возведение в степень;
MOD - деление по модулю.
Сравнение:
EQ = - равно;
NЕ, <> - не равно;
GT, > - больше чем;
LT, < - меньше чем;
GE, < = - меньше или равно;
LE, > = - больше или равно.
Логические:
NОТ - нет;
AND, & - и;
OR - или;
XОR - исключающее "или";
= - присвоение;
( ) - индексы массива.
Строковые:
+ - сцепление строк;
' - кавычка;
$ - символ соответствия символа;
* - символ соответствия строки.
Числовые функций:
ABS - абсолютное значение;
ARCSIN - арксинус;
ЕХР – е в степени;
INIT - инициализирует массив;
LEN - определяет длину строки;
LN - вычисляет натуральный логарифм;
LOG - вычисляет логарифм с основанием 10;
МАХ - наибольшее из двух чисел;
MENU - создает меню;
MIN - меньшее из двух чисел;
RAND - случайное число;
SIN - синус;
SQRT - квадратный корень.
Символьные функции:
CHR - преобразует код ASCII в его символьный эквивалент;
VAL - преобразует символ в его код ASCII;
INIT - инициализирует массив;
SUBSTR - выделяет подстроку из строки;
TIME - возвращает текущее время;
TOSTR - преобразует числа в символы;
TONUM - преобразует строку в число;
TRIM - отсекает конечные пробелы;
ТУРЕ - тип переменной.
Логические функции:
ALPHASTR - вся ли строка состоит из букв;
INIT - инициализирует массив.
Приложение 4
Варианты заданий к лабораторной работе 1
Вариант 1
GOAL: ways
/* ЭТОТ НАБОР ПРАВИЛ ПОЗВОЛИТ ВАМ ПОЛУЧИТЬ РЯД СОВЕТОВ ПО */ /* УСТРАНЕНИЮ НЕПОЛАДОК ВАШЕГО ЛЮБИМОГО АВТОМОБИЛЬЧИКА И */ /* ПРИЧИН ИХ ПОЯВЛЕНИЯ. КОНЕЧНО, ЭТО МАЛЕНЬКИЙ И НЕ ПОЛНЫЙ */ /* НАБОР, НАПИСАННЫЙ ПЛОХО ЗНАЙЩИМ ЭТУ ОТРАСЛЬ ЧЕЛОВЕКОМ, НО */ /* ВЕДЬ ОН И ПРЕДНАЗНАЧЕН ДЛЯ ПОКАЗА САМЫХ ТРИВИАЛЬНЫХ */ /*СРЕДСТВ GURU. ТАК ЧТО ИЗВИНИТЕ, ПОЖАЛУЙСТА, ЗА НЕКОРРЕКТНЫЕ */ /* СОВЕТЫ. */
/* НА ВОПРОСЫ СИСТЕМЫ СЛЕДУЕТ ВВОДИТЬ СООТВЕТСТВУЮЩЕЕ */
/* ЗНАЧЕНИЕ БУЛЕВСКОЙ ПЕРЕМЕННОЙ ( ДА-TRUE, HET-FALSE ) */
INITIAL:
Clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr=250 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
output "ДОБРЫЙ ДЕНЬ, МИСТЕР (МИССИС)."
output
output "ВЫ, ПУТЕШЕСТВУЯ НА СВОЕМ АВТОМОБИЛЕ, ОСТАНОВИЛИСЬ ПЕРЕ-"
output "ДОХНУТЬ. А КОГДА НАБРАЛИСЬ СИЛ, ТО ОБНАРУЖИЛИ, ЧТО
output "ВАША МАШИНА НЕ ЗАВОДИТСЯ. MЫ ПОСТАРАЕМСЯ ДАТЬ ВА СОВЕТ"
output "ПО УСТРАНЕНИЮ И ПРИЧИНАМ ПОЯВЛЕНИЯ НЕИСПРАВНОСТЕЙ."
output "НО ДЛЯ ЭТОГО ВЫ ДОЛЖНЫ ПРЕДОСТАВИТЬ ВНЕ ВСЮ ИНФОРМАЦИЮ."
output " ИТАК, ПОЕХАЛИ"
output
fires = true
input fires logic with "ЕСТЬ ЛИ ИСКРА В БЛОКЕ ЗАЖИГАНИЯ?"
DO:
clear
output "ВОТ ЧТО Я ВАМ СКАЖУ, ЛЮБЕЗНЕЙШИЙ."
output
output reasons
output
output "А ВОТ ЧТО ВАМ СЛЕДУЕТ СДЕЛАТЬ В ДАННОЙ СИТУАЦИИ."
output
output ways
RULE: Rl
IF: fires
THEN: output
input petrol logic with " ПОСТУПАЕТ ЛИ БЕНЗИН В КАРБЮРАТОР ?"
REASON: ЕСЛИ ЕСТЬ ИСКРА, ТО НУЖЕН ЕЩЕ И БЕНЗИН.
COMMENT: ПОСТУПАЕТ ЛИ БЕНЗИН В КАРБЮРАТОР.
RULE: R2
IF: not fires
THEN: output
input acommulate logic with " ОКИСЛЕНЫ КЛЕММЫ АККУМУЛЯТОРА?"
REASON: ЕСЛИ НЕТ ИСКРЫ, ТО СКОРЕЕ ВСЕГО ОКИСЛИЛИСЬ КЛЕММЫ АК-РА.
COMMENT: ОКИСЛИЛСЯ ЛИ АККУМУЛЯТОР.
RULE: R3
IF: not petrol
THEN: output "ЕСТЬ ЛИ БЕНЗИН В БАКЕ ВАШЕГО АВТОМОБИЛЯ?"
input ptrltank logic
REASON: ЕСЛИ БЕНЗИН В КАРБЮРАТОР НЕ ПОСТУПАЕТ, ТО СКОРЕЕ ВСЕГО, ОН ПРОСТО КОНЧИЛСЯ. COMMENT: НЕТ БЕНЗИНА В БАКЕ АВТОМОБИЛЯ.
RULE: R4
IF: not ptrltank
THEN: rasons="KOHЧИЛСЯ БЕНЗИН В БАКЕ ВАШЕГО АВТОМОБИЛЯ."
ways=" ЗАПРАВЬТЕ МАШИНУ ГОРЮЧИМ."
REASON: ЕСЛИ НЕТ БЕНЗИНА, ТО НАДО ЗАПРАВИТЬСЯ.
COMMENT: ПУСТОЙ БАК.
RULE: R5
IF: ptrltank
THEN: геаsons="ЗАСОРИЛАСЬ ТРУБКА БЕНЗОНАСОСА."
wavs="ОТСОЕДИНИТЕ ТРУБКУ И ПРОДУЙТЕ. ЗАТЕМ, УСТАНОВИВ"
ways=ways+" НА МЕСТО, ПОПРОБУЙТЕ СНОВА ЗАВЕСТИ."
REASON: ЕСЛИ БЕНЗИН В БАКЕ ЕСТЬ, А В КАРБЮРАТОРЕ ЕГО НЕТ, ТО НАДО ПРОЧИСТИТЬ ТРУБКИ, ПОСТАВЛЯЮЩИЕ ТОПЛИВО В КАРБЮРАТОР
COMMENT: ЗАСОРИЛИСЬ КАНАЛЫ ПОДАЧИ БЕНЗИНА.
RULE: R6
IF: acommulate
THEN: reasons="ПЛОХОЙ КОНТАКТ ЦЕПИ ЗАЖИГАНИЯ С АККУ-РОМ"
ways="ЗАЧИСТИТЕ КЛЕММЫ НАЖДАЧНОЙ ШКУРКОЙ И ПОПЫТАЙТЕСЬ"
ways=ways+" ЗАВЕСТИ ВНОВЬ."
REASON: ЕСЛИ ОКИСЛЕНЫ КОНТАКТЫ, ТО ИХ НАДО ЗАЧИСТИТЬ.
COMMENT: ПЛОХОЙ КОНТАКТ АККУМУЛЯТОРА С ПРОВОДКОЙ.
RULE: R7
IF: not acommulate
THEN: output "АККУМУЛЯТОР ВЫРАБОТАЛ СВОЙ РЕСУРС ?"
input lowenergy logic
REASON: ЕСЛИ НЕТ ИСКРЫ И КОНТАКТ В ПОРЯДКЕ, ТО СКОРЕЕ ВСЕГО ВАШ АККУМУЛЯТОР ПРИШЕЛ В НЕГОДНОСТЬ.
COMMENT: РЕСУРС АККУМУЛЯТОРА.
RULE: R8
IF: lowenergy
THEN: reasons="ВАШ АККУМУЛЯТОР СТАЛ НЕПРИГОДНЫМ."
ways=" ЕСЛИ ЕСТЬ ВОЗМОЖНОСТЬ, ТО ЗАМЕНИТЕ СВОЙ АККУМУ-"
ways=ways+"ЛЯТOP. B ПРОТИВНОМ СЛУЧАЕ ВАМ ПРИДЕТСЯ"
ways=ways+" ЗАВОДИТЬ СВОИ АППАРАТ 'РУЧКОЙ' (ИЗОГНУТЫЙ "
wауs=wауs+" КУСОК ЖЕЛЕЗКИ )"
REASON: ЕСЛИ СЕЛ АККУМУЛЯТОР, ТО ЕГО НАДО МЕНЯТЬ ЛИБО ЗАВОДИТЬ МАШИНУ 'РУЧКОЙ'
COMMENT: СЕЛ АККУМУЛЯТОР.
VAR: fires
LABEL: НАЛИЧИЕ ИСКРЫ В БЛОКЕ ЗАЖИГАНИЯ
VAR: WAYS
FIND: reasons="ПРИЧИНА ПОЯВЛЕНИЯ ЭТИХ НЕПОЛАДОК НЕИЗВЕСТНА."
ways="ПОПРОБУЙТЕ ОБРАТИТЬСЯ В АВТОСЕРВИС."
LABEL: СПОСОБ УСТРАНЕНИЯ НЕПОЛАДОК
END:
В варианте 1 предлагается предусмотреть изменения, учитывающие ситуации:
а) автомобиль заводится, но не едет;
б) автомобиль заводится, едет, но не туда, куда его направляет водитель.
Вариант 2
GOAL: computer
/* ЭТОТ НАБОР ПРАВИЛ ПОЗВОЛИТ ВАМ ПОЛУЧИТЬ РЯД СОВЕТОВ, */
/* КАК ДЕЙСТВОВАТЬ, ЕСЛИ ВДРУГ ВАШ КОМПЬЮТЕР ПРИ ВКЛЮЧЕНИИ */
/* ЕГО В СЕТЬ ВЕДЕТ СЕБЯ НЕ ТАК, КАК ОБЫЧНО. И ВОТ, В ЗАВИСИ- */
/* МОСТИ ОТ ВНЕШНЕГО ПРОЯВЛЕНИЯ ЭТИХ СТРАННОСТЕЙ ВАМ БУДЕТ */
/* ДАН СОВЕТ, КАКОЕ ДЕЙСТВИЕ ПРЕДПРИНЯТЬ. КОНЕЧНО, ЭТО МАЛЕНЬ- */
/* КИИ И ДАЛЕКО НЕПОЛНЫЙ НАБОР, И, ВОЗМОЖНО, СОВЕТЫ ВАМ ПОКА- */
/* ЖУТСЯ НЕУМЕСТНЫМИ, НО ВЕДЬ ОН И ПРЕДНАЗНАЧЕН ДЛЯ ПОКАЗА */
/* САМЫХ ТРИВИАЛЬНЫХ СРЕДСТВ GURU. */
/* НА ВОПРОСЫ СИСТЕМЫ СЛЕДУЕТ ВВОДИТЬ СООТВЕТСТВУЮЩЕЕ */ /* ЗНАЧЕНИЕ БУЛЕВСКОЙ ПЕРЕМЕННОЙ ( ДА-TRUE, HET-FALSE) */
INITIAL:
clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr=250 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
output " ДЕНЬ ДОБРЫЙ, МИСТЕР (МИССИС)."
output
output " ПРИ ВКЛЮЧЕНИИ КОМПЬЮТЕРА ВЫ НЕ ПОЛУЧАЕТЕ ОБЫЧНОГО"
output " РЕЗУЛЬТАТА. МЫ ПОСТАРАЕМСЯ ДАТЬ ВАМ СОВЕТ В ЭТОМ НЕ-"
output "ПРОСТОМ ДЕЛЕ. НО ДЛЯ ЭТОГО ВЫ ДОЛЖНЫ ПРЕДОСТАВИТЬ"
output " МНЕ ВСЮ ИНФОРМАЦИЮ. ИТАК, НАЧНЕМ"
power=true
output "ЗАГОРАЕТСЯ ЛИ ИНДИКАТОР ПИТАНИЯ НА ВАШЕМ КОМПЬЮТЕРЕ ?"
input power logic
DO:
clear
output " ВОТ ЧТО Я ВАМ СКАЖУ, ЛЮБЕЗНЕЙШИЙ ."
output
output computer
RULE: R1
IF: power
THEN: output
output "НУ ХОТЬ ПИТАНИЕ В ПОРЯДКЕ, И ТО ХОРОШО!"
output "ИСПРАВЕН И ПРАВИЛЬНО ЛИ ПОДКЛЮЧЕН ДИСПЛЕЙ?"
input displ logic
REASON: ЕСЛИ В ПОРЯДКЕ ПИТАНИЕ, ТО В ПОРЯДКЕ ЛИ ДИСПЛЕЙ.
COMMENT: ДЛЯ, ТОГО ЧТОБЫ ЧТО-ТО УВИДЕТЬ, НЕОБХОДИМО УСТРОЙСТВО ОТОБРАЖЕНИЯ ИНФОРМАЦИИ.
RULE: R2
IF: not power
THEN: output
computer="ПРОВЕРЬТЕ НАПРЯЖЕНИЕ В СЕТИ. ВКЛЮЧИТЕ ПИТА-"
computer=computer+"HИE ИЛИ ПОЧИНИТЕ БЛОК ПИТАНИЯ И"
computer=computer+"ПОПРОБУЙTE ЕЩЕ РАЗ."
REASON: ЕСЛИ НЕТ ПИТАНИЯ, ТО НЕОБХОДИМО ЕГО ОБЕСПЕЧИТЬ
COMMENT: БЕЗ НОРМАЛЬНОГО ПИТАНИЯ НИКТО ВАМ РАБОТАТЬ НЕ БУДЕТ.
RULE: R3
IF: not displ
THEN: output
computer= EPbTE НАПРЯЖЕНИЕ СЕТИ. ВКЛЮЧИТЕ ДИСПЛЕИ"
computer=computer+"ИЛИ УСТРОИТЕ ТАК, ЧТОБЫ ОН РАБОТАЛ"
computer=computer+"И ПОПРОБУЙТЕ ЕЩЕ РАЗ."
"ПPOB
REASON: HE РАБОТАЕТ ДИСПЛЕИ. НЕОБХОДИМО, ЧТОБЫ ОН РАБОТАЛ.
COMMENT: БЕЗ РАБОТАЮЩЕГО ДИСПЛЕЯ - НЕ ЖИЗНЬ.
RULE: R4
IF: displ
THEN: output "ЕСТЬ ЛИ У ВАШЕГО КОМПЬЮТЕРА ЖЕСТКИЙ ДИСК?"
input harddisk logic
REASON: ЕСЛИ ПИТАНИЕ КОМПЬЮТЕРА И ДИСПЛЕИ В ПОРЯДКЕ, ТО НАДО ЗНАТЬ, ПОДКЛЮЧЕН ЛИ К ВАШЕЙ МАШИНЕ ЖЕСТКИЙ ДИСК.
COMMENT: ПОДКЛЮЧЕН ЛИ ЖЕСТКИЙ ДИСК.
RULE: R5
IF: harddisk
THEN: output "ПРОИСХОДИТ ОБРАЩЕНИЕ К ДИСКУ (ИНДИКАТОР "
output "ГОРИТ)?"
input HDtest logic
REASON: ЕСЛИ УСТАНОВЛЕН "ВИНЧЕСТЕР", ТО ПРОВЕРИМ ПОДКЛЮЧЕНИЕ.
COMMENT: ЕСЛИ "ВИНТ" НА МЕСТЕ, ТО ЗАМЕЧАЕТ ЛИ ЕГО СИСТЕМА.
RULE: R6
IF: not harddisk
THEN: output "УСТАНОВЛЕНЫ НА ВАШЕЙ МАШИНЕ ДИСКОВОДЫ ГИБ-"
output "КИХ ДИСКОВ (1 И БОЛЕЕ)? "
input diskete logic
REASON: ЕСЛИ НЕТ "ВИНТА", ТО ДИСКОВОДЫ НА МАШИНЕ УСТАНОВЛЕНЫ?
COMMENT: ЕСТЬ ЛИ ДИСКОВОДЫ.
RULE: R7
IF: not HDtest
output "УСТАНОВЛЕНЫ ЛИ НА ВАШЕЙ МАШИНЕ ДИСКОВОДЫ"
output " ГИБКИХ ДИСКОВ (1 И БОЛЕЕ)?
THEN: input diskete logic
REASON: УСТАНОВЛЕНЫ ЛИ ДИСКОВОДЫ НА МАШИНЕ?
COMMENT: ЕСТЬ ЛИ ДИСКОВОДЫ.
RULE: R8
IF: HDtest
THEN: output "ВЫДАЕТСЯ ЛИ СООБЩЕНИЕ ОБ ОШИБКЕ ЧТЕНИЯ 'ВИ-"
output "НЧЕСТЕРА'?"
input HDerror logic
REASON: БЕЗ ОШИБОК ЛИ ПРОХОДИТ ОПЕРАЦИЯ ТЕСТИРОВАНИЯ.
COMMENT: НАЛИЧИЕ ОШИБОК ТЕСТИРОВАНИЯ ДИСКА.
RULE: R9
IF: HDerror
THEN: output "УСТАНОВЛЕНЫ ЛИ НА ВАШЕЙ МАШИНЕ ДИСКОВОДЫ ГИ-"
output "БКИХ ДИСКОВ (1 И БОЛЕЕ)? "
input diskete logic
REASON: ЕСЛИ ЕСТЬ ОШИБКИ В РАБОТЕ "ВИНТА", ТО ИНТЕРЕСНО, УСТАНОВЛЕНЫ ЛИ ДИСКОВОДЫ НА МАШИНЕ? COMMENT: ЕСТЬ ЛИ ДИСКОВОДЫ.
RULE: R10
IF: diskete
THEN: computer="BAM СЛЕДУЕТ ВСТАВИТЬ В ДИСКОВОД СИСТЕМНУЮ "
computer=computer+"ДИСКЕТУ СООТВЕТСТВУЮЩЕГО ФОРМАТА "
computer=computer+" И ПЕРЕЗАГРУЗИТЬ КОМПЬЮТЕР."
REASON: ЕСЛИ "ВИНТ" НЕ В ПОРЯДКЕ, ТО СЛЕДУЕТ ИСПОЛЬЗОВАТЬ ГИБКИЙ ДИСК ДЛЯ ЗАГРУЗКИ СИСТЕМЫ.
COMMENT: СЛЕДУЕТ ИСПОЛЬЗОВАТЬ ГИБКИЙ ДИСК ДЛЯ ЗАГРУЗКИ СИСТЕМЫ.
RULE: R11
IF: not diskete
THEN: computer="BAM ЛУЧШЕ ВСЕГО ДАЛЬШЕ НЕ УГЛУБЛЯТЬСЯ В "
computer=computer+"ЭТУ ПРОБЛЕМУ, А ВЫЗВАТЬ МАСТЕРА."
REASON: ЕСЛИ НЕ РАБОТАЮТ (ОТСУТСТВУЮТ ) ДИСК И ДИСКОВОДЫ, ТО НЕ СТОИТ ПЫТАТЬСЯ ПЕРЕЗАГРУЗИТЬ МАШИНУ.
COMMENT: HE РАБОТАЮТ ДИСК И ДИСКОВОДЫ, СЛЕДОВАТЕЛЬНО, НЕ СТОИТ ПЫТАТЬСЯ ПЕРЕЗАГРУЗИТЬ МАШИНУ.
RULE: R12
IF: not HDerror
THEN: computer="ECЛИ HE ПОЯВЛЯЕТСЯ ПРИГЛАШЕНИЕ ОПЕРАЦИОННОЙ"
computer=computer+" СИСТЕМЫ, ТО ПРОВЕРЬТЕ СОДЕРЩИМОЕ"
computer=computer+"ФАЙЛОВ autoexec.bat И config.sys,"
computer=computer+'3AГРУЗИВШИСЬ С ДИСКЕТЫ. И ЕСЛИ ТАМ"
computer=computer+" ВСЕ В ПОРЯДКЕ, ПЕРЕЗАПИШИТЕ ОС."
REASON: ЕСЛИ НЕТ ОШИБКИ ЧТЕНИЯ "ВИНЧЕСТЕРА" ТО ВСЕ ЕЩЕ МОЖНО ИСПРАВИТЬ, ЛИШЬ БЫ ДИСКОВОД ГИБКИХ ДИСКОВ БЫЛ ИСПРАВЕН.
COMMENT: НЕТ ОШИБКИ ЧТЕНИЯ "ВИНТА".
VAR: POWER
LABEL: СРАБАТЫВАНИЕ СВЕТОВОЙ ИНДИКАЦИИ ПРИ ВКЛЮЧЕНИИ КОМПЬЮТЕРА
END:
В варианте 2 предлагается предусмотреть изменения, учитывающие ситуации:
а) неисправность клавиатуры компьютера;
б) неисправность манипулятора типа "мышь".
Вариант 3
GOAL: ways
/* ЭТОТ НАБОР ПРАВИЛ ПОЗВОЛИТ ВАМ ПОЛУЧИТЬ РЯД СОВЕТОВ ПО */
/* УСТРАНЕНИЮ НЕКОТОРЫХ ДЕФЕКТОВ ВОДНЫХ КРАСОК И СООБЩИТ */
/* ПРИЧИНЫ ИХ ПОЯВЛЕНИЯ. КОНЕЧНО, ЭТО МАЛЕНЬКИЙ И НЕ ПОЛНЫЙ */
/* НАБОР, НО ВЕДЬ ОН И ПРЕДНАЗНАЧЕН ДЛЯ ПОКАЗА САМЫХ */
/* ТРИВИАЛЬНЫХ СРЕДСТВ GURU. ТАК ЧТО НЕ ОЖИДАЙТЕ */
/* ЧЕГО-ЛИБО СВЕРХИНТЕЛЛЕКТУАЛЬНОГО. */
/* НА ВОПРОСЫ СИСТЕМ СЛЕДУЕТ ВВОДИТЬ СООТВЕТСТВУЮЩЕЕ*/
/* ЗНАЧЕНИЕ БУЛЕВСКОЙ ПЕРЕМЕННОЙ. (ДА-TRUE, HET-FALSE ) */
INITIAL:
clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr=250 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
output " ДЕНЬ ДОБРЫЙ, МИСТЕР (МИССИС)."
output
output " ПОСЛЕ ОКРАСКИ ПОВЕРХНОСТИ ВОДНЫМИ КРАСКАМИ МОГУТ"
output " ПРОЯВИТЬСЯ ДЕФЕКТЫ."
output " МЫ ПОСТАРАЕМСЯ ДАТЬ ВАМ СОВЕТ ПО ИХ УСТРАНЕНИЮ И"
output " ПРИЧИНАМ ПОЯВЛЕНИЯ."
output " НО ДЛЯ ЭТОГО ВЫ ДОЛЖНЫ ПРЕДОСТАВИТЬ МНЕ ВСЮ "
output "ИНФОРМАЦИЮ."
output " ИТАК, НАЧНЕМ ..."
defects=true
output " ПОЯВИЛИСЬ ЛИ ДЕФЕКТЫ НА ОКРАШЕННОЙ ПОВЕРХНОСТИ?"
input defects logic
DO:
clear
output " ВОТ ЧТО Я ВАМ СКАЖУ, ЛЮБЕЗНЕЙШИЙ ."
output
output reasons
output
output "А ВОТ ЧТО ВАМ СЛЕДУЕТ СДЕЛАТЬ В ДАННОЙ СИТУАЦИЙ."
output
output ways
RULE: Rl
IF: defects
THEN: output
input circle logic with " ЭТИ ДЕФЕКТЫ - ПЯТНА?"
REASON: ЕСЛИ ЕСТЬ ДЕФЕКТЫ, ТО СКОРЕЕ ВСЕГО ЭТО ПЯТНА.
COMMENT: ЯВЛЯЮТСЯ ЛИ ДЕФЕКТЫ ПЯТНАМИ.
RULE: R2
IF: not defects
THEN: output
reasons="HET ДЕФЕКТОВ НА ПОВЕРХНОСТИ, ЗНАЧИТ ВЫ "
reasons=reasons+"BCE СДЕЛАЛИ ПРАВИЛЬНО."
ways="ПОЙДИТЕ ЛУЧШЕ ОТДОХНИТЕ. ВЕДЬ У ВАС"
ways=ways+" ВСЕ В ПОРЯДКЕ."
REASON: ЕСЛИ НЕТ ДЕФЕКТОВ, ТО НИЧЕГО ДЕЛАТЬ НЕ НУЖНО.
COMMENT: НЕТ ДЕФЕКТОВ - ОТДЫХАЙ.
RULE: R3
IF: not circle
THEN: output
input lines logic with " ЭТИ ДЕФЕКТЫ - ПОЛОСЫ? "
REASON: ЕСЛИ ДЕФЕКТЫ НЕ ПЯТНА, ТО СКОРЕЕ ВСЕГО ЭТО ПОЛОСЫ.
COMMENT: ЯВЛЯЮТСЯ ЛИ ДЕФЕКТЫ ПОЛОСАМИ.
RULE: R4
IF: circle
THEN: output
input fatcrcl logic with "ЭТО ЖИРНЫЕ ПЯТНА ?"
REASON: ЕСЛИ ДЕФЕКТЫ ПЯТНА, ТО СКОРЕЕ ВСЕГО ЭТО ЖИРНЫЕ ПЯТНА.
COMMENT: ЯВЛЯЮТСЯ ЛИ ПЯТНА ЖИРНЫМИ.
RULE: R5
IF: fatcrcl
THEN: output
output "ОКРАШЕННАЯ ПОВЕРХНОСТЬ ЯВЛЯЕТСЯ "
output " ШТУКАТУРКОЙ?"
input sfcshtkr logic
output
REASON: ЕСЛИ ПЯТНА ЖИРНЫЕ, ТО ВАЖНО ЗНАТЬ, КАКАЯ ПОВЕРХНОСТЬ ОКРАШЕНА. COMMENT: НА ШТУКАТУРКЕ ЖИРНЫЕ ПЯТНА.
RULE: R6
IF: not sfcshtkr
THEN: output
output "ОКРАШЕННАЯ ПОВЕРХНОСТЬ ЯВЛЯЕТСЯ"
output " ЖЕЛЕЗОБЕТОННОЙ?"
input sfcsteel logic
REASON: ЕСЛИ ПЯТКА ЖИРНЫЕ, ТО ВАЖНО ЗНАТЬ, КАКАЯ ПОВЕРХНОСТЬ ОКРАШЕНА.
COMMENT: НА ЖЕЛЕЗОБЕТОНЕ ЖИРНЫЕ ПЯТНА.
RULE: R7
IF: not sfcsteel
THEM: output
reasons="ПPИЧИHA ПОЯВЛЕНИЯ ЭТИХ ЖИРНЫХ ПЯТЕН"
reasons=reasons+" МНЕ НЕИЗВЕСТНА."
ways="ПОПРОБУКТЕ ОБРАТИТЬСЯ К БОЛЕЕ ОПЫТНОМУ"
ways=ways+" СПЕЦИАЛИСТУ."
REASON: ЕСЛИ ЖИРНЫЕ ПЯТНА ПОЯВИЛИСЬ НА КАКОЙ-ТО ДРУГОЙ ПОВЕРХНОСТИ, ТО НИЧЕГО ПУТНОГО ПОСОВЕТОВАТЬ ВАМ Я НЕ МОГУ.
COMMENT: ЖИРНЫЕ ПЯТНА НА НЕЗАРЕЗЕРВИРОВАННОЙ ПОВЕРХНОСТИ.
RULE: E8
IF: sfcsteel
THEN: reasons="HA ЖЕЛЕЗОБЕТОНЕ СЛЕДЫ НЕВЫСЫХАЮЩИХ "
reasons=reasons+"MACEЛ ОТ СМАЗКИ ФОРМ."
wауs="ОЧИСТИТЬ ПОВЕРХН. ОТ СЛОЯ КРАСКИ ВМЕСТЕ СО"
ways=ways+" ШПАКЛЕВКОЙ, ПРОМЫТЬ 5%-НЫМ РАСТВ. "
ways=ways+"ТРИНАТРИЙФОСФАТА ИЛИ КАЛЬЦ-ОЙ "
ways=ways+"СОДЫ, НЕЙТРАЛИЗОВАТЬ ПОВЕРХНОСТЬ 5%-НЫМ"
ways=ways+" PACTB. СОЛЯНОЙ КИСЛОТЫ И ВНОВЬ ОКРАСИТЬ."
REASON: ЕСЛИ ЖИРНЫЕ ПЯТНА НА ЖЕЛЕЗОБЕТОНЕ, ТО ЭТА ПРОБЛЕМА ВПОЛНЕ РАЗРЕШИМА.
COMMENT: СПОСОБ УСТРАНЕНИЯ ЖИРНЫХ ПЯТЕН НА ЖЕЛЕЗОБЕТОНЕ.
RULE: R9
IF: sfcshtkr
THEN: reasons="HA ШТУКАТУРКЕ ОСТАЛИСЬ ПЯТНА НЕВЫСЫХАЮЩИХ"
reasons=reasons+" МИНЕРАЛЬНЫХ И ЖИВОТНЫХ МАСЕЛ."
ways="ВЫРУБИТЬ ШТУКАТУРКУ НА УЧАСТКЕ ПЯТНА, ВНОВЬ "
ways=ways+"ОТШТУКАТУРИТЬ И ОКРАСИТЬ, ПРОМЫТЬ ПОВЕР-"
ways=ways+"XHOCTb ЩЕЛОЧНОЙ ВОДОЙ И ВНОВЬ ОКРАСИТЬ."
REASON: ЕСЛИ ЖИРНЫЕ ПЯТНА НА ШТУКАТУРКЕ, ТО ЭТА ПРОБЛЕМА ВПОЛНЕ РАЗРЕШИМА.
COMMENT: СПОСОБ УСТРАНЕНИЯ ЖИРНЫХ ПЯТЕН НА ШТУКАТУРКЕ.
RULE: R10
IF: not fatcrcl
THEN: output
output "ЭТО ЖЕЛТЫЕ РЖАВЫЕ ПЯТНА?"
input rsvcrcl logic
REASOH: ЕСЛИ ДЕФЕКТЫ НЕ ЖИРНЫЕ ПЯТНА, ТО СКОРЕЕ ВСЕГО ЭТО РЖАВЫЕ ПЯТНА.
COMMENT: ЯВЛЯЮТСЯ ЛИ ПЯТНА РЖАВЫМИ.
RULE: R11
IF: not rsvcrcl
THEN: reasons="ПРИЧИНА ПОЯВЛЕНИЯ ЭТИХ ПЯТЕН МНЕ"
reasons=reasons+" НЕИЗВЕСТНА."
ways="ПОПРОБУЙТЕ ОБРАТИТЬСЯ К БОЛЕЕ ОПЫТНОМУ"
ways=ways+" СПЕЦИАЛИСТУ."
REASOH: ЕСЛИ ПОЯВИЛИСЬ КАКИЕ-ТО ДРУГИЕ ПЯТНА,ТО НИЧЕГО ПУТНОГО ПОСОВЕТОВАТЬ ВАМ Я НЕ МОГУ.
СОММЕНТ: КАКИЕ-ТО НЕЗАРЕЗЕРВИРОВАННЫЕ ПЯТНА НА ПОВЕРХНОСТИ.
RULE: R12
IF: rsvcrcl
ТНЕН: reasons="ПРОИСХОДИТ ПРОСАЧИВАНИЕ СМОЛИСТЫХ ВЕЩЕСТВ "
reasons=reasons+"ЧЕРЕЗ ШТУКАТУРКУ И КРАСКУ."
ways="УДАЛИТЬ СТАРЫЙ НАБЕЛ, ПРОМЫТЬ ТЕПЛЫМ З% РАСТВ."
ways=ways+"СОЛЯНОЙ КИСЛОТЫ И, ЕСЛИ ПЯТНА НЕВЕЛИКИ"
ways=ways+", ОТГРУHTOBATЬ МЕДНОКУПОРОСНОЙ ГРУНТОВКОЙ"
ways=ways+" БЕЗ МЕЛА, А ПРИ БОЛЬШИХ РАЗМЕРАХ - ЩЕЛ"
ways=ways+"ОЧНЫМ, СПИРТОВЫМ ИЛИ КАНИФОЛЬНЫМ ЛАКОМ."
REASON: ЕСЛИ ЖИРНЫЕ ПЯТНА НА ШТУКАТУРКЕ, ТО ЭТА ПРОБЛЕМА ВПОЛНЕ РАЗРЕШИМА.
COMMENT: СПОСОБ УСТРАНЕНИЯ ЖИРНЫХ ПЯТЕН НА ШТУКАТУРКЕ.
RULE: R13
IF: lines
THEN: reasons="НЕДОСТАТОЧНО ПЕРЕМЕШАНЫ ПИГМЕНТЫ В КОЛЕРЕ,"
reasons=reasons+" ПЛОХОРАСТУШЕВАН КОЛЕР."
ways="ПРОМЫТЬ ПОВЕРХНОСТЬ И ОКРАСИТЬ ИЗ "
ways=ways+"KPACKOПУЛЬТА ."
REASON: ЕСЛИ ПОЛОСЫ НА ОКРАШЕННОЙ ПОВЕРХНОСТИ, ТО ЭТА ПРОБЛЕМА ВПОЛНЕ РАЗРЕШИМА.
COMMENT: СПОСОБ УСТРАНЕНИЯ ПОЛОС.
RULE: R14
IF: not lines
THEN: reasons="ПРИЧИНА ПОЯВЛЕНИЯ ДРУГИХ ДЕФЕКТОВ МНЕ"
reasons=reasons+" НЕИЗВЕСТНА."
ways="ПОПРОБУЙТЕ ОБРАТИТЬСЯ К БОЛЕЕ ОПЫТНОМУ"
ways=ways+"СПЕЦИАЛИСТУ."
REASON: ЕСЛИ ПОЯВИЛИСЬ КАКИЕ-ТО ДРУГИЕ ДЕФЕКТЫ, ТО НИЧЕГО ПУТНОГО ПОСОВЕТОВАТЬ ВАМ Я НЕ МОГУ.
COMMENT: КАКИЕ-ТО НЕЗАРЕЗЕРВИРОВАННЫЕ ДЕФЕКТЫ НА ПОВЕРХНОСТИ.
VAR: defects
LABEL: НАЛИЧИЕ ДЕФЕКТОВ НА ОКРАШЕННОЙ ПОВЕРХНОСТИ.
END:
В Варианте 3 предлагается предусмотреть изменения, учитывающие ситуации:
а) появление пузырей на окрашенной поверхности;
б) отслаивание краски после высыхания.
Вариант 4
GOAL: breaking
/*ЭТОТ НАБОР ПРАВИЛ ПОЗВОЛИТ ВАМ ПОЛУЧИТЬ РЯД СОВЕТОВ ПО */
/*ОРГАНИЗАЦИИ ОГРАБЛЕНИЯ БАНКА. КОНЕЧНО, ЭТО МАЛЕНЬКИЙ */
/*НАБОР И ОН ПРЕДНАЗНАЧЕН ДЛЯ ПОКАЗА САМЫХ */
/*ТРИВИАЛЬНЫХ СРЕДСТВ GURU. ТАК ЧТО НЕ ОЖИДАЙТЕ ЧЕГО-ЛИБО */
/*МОЩНОГО. НА ВОПРОСЫ СИСТЕМЫ СЛЕДУЕТ ВВОДИТЬ */
/*СООТВЕТСТВУЮЩЕЕ ЗНАЧЕНИЕ БУЛЕВСКОЙ ПЕРЕМЕНКОЙ */
/*( ДА-TRUE, HET-FALSE ) */
INITIAL:
clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr=250 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
output "ДЕНЬ ДОБРЫЙ, МИСТЕР (МИССИС)."
output
output " ВСЕ ХОТЯТ ОГРАБИТЬ БАНК, ДА НЕ ВСЕ МОГУТ..."
output "МЫ ПОСТАРАЕМСЯ ДАТЬ ВАМ СОВЕТ В ЭТОМ НЕПРОСТОМ ДЕЛЕ."
output " НО ДЛЯ ЭТОГО ВЫ ДОЛЖНЫ ПРЕДОСТАВИТЬ МНЕ ВСЮ"
output " ИНФОРМАЦИЮ."
output " ИТАК, ПОЕХАЛИ ..."
output
at 17,10 output "СКОЛЬКО У ВАС ВЕРНЫХ ЛЮДЕЙ?"
input people num using "nn"
at 19,10 output "СКОЛЬКО У ВАС 'СТВОЛОВ' ?"
input guns num using "nn"
at 21,10 output " А СКОЛЬКО ВЫ ХОТИТЕ ВЗЯТЬ?"
input nmoney num
output
clear
DO:
clear
output
output " ВОТ ЧТО Я ВАМ СКАЖУ, ЛЮБЕЗНЕЙШИЙ ."
output
output breaking
RULE: R1
IF: nmoney >=10000000
THEN: output
output "A У ВАС ГУБА НЕ ДУРА!"
output "А СКОЛЬКО ДЕНЕГ ХРАНИТСЯ В БАНКЕ "
output "НАЛИЧНЫМИ?"
input emoney num
REASON: ЕСЛИ ВЫ ТАК МНОГО ХОТИТЕ ВЗЯТЬ, ТО СЛЕДУЕТ ЗНАТЬ, РАСПОЛАГАЕТ ЛИ БАНК ТАКОЙ СУММОЙ.
COMMENT: ВЫ ТАК МНОГО ХОТИТЕ ВЗЯТЬ, СЛЕДОВАТЕЛЬНО. СЛЕДУЕТ ЗНАТЬ, РАСПОЛАГАЕТ ЛИ БАНК ТАКОЙ СУММОЙ.
RULE: R2
IF: nmoney<10000000
THEN: output "A СКОЛЬКО ДЕНЕГ ХРАНИТСЯ В БАНКЕ НАЛИЧНЫМИ?"
input emoney num
REASON: ЕСЛИ ВЫ ХОТИТЕ ОГРАБИТЬ БАНК, ТО СЛЕДУЕТ ЗНАТЬ, РАСПОЛАГАЕТ ЛИ ОН ТАКОЙ СУММОЙ.
COMMENT: ВЫ ХОТИТЕ ВЗЯТЬ ЧУЖИЕ ДЕНЬГИ, СЛЕДОВАТЕЛЬНО, СЛЕДУЕТ ЗНАТЬ, РАСПОЛАГАЕТ ЛИ БАНК ТАКОЙ СУММОЙ.
RULE: R3
IF: nmoney<emoney
THEN: output
output "И ТАК, ВЫ РЕШИЛИСЬ НА ДЕЛО, А КАК ОБСТОЯТ"
output "ДЕЛА С ОХРАНОЙ?"
output
output "ОХРАНЯЕТСЯ ЛИ БАНК ДНЕМ?"
input dayctrl logic
output
output "ОХРАНЯЕТСЯ ЛИ БАНК ПОЛИЦЕЙСКИМИ НОЧЬЮ?"
input nitectrl logic
REASON: ЕСЛИ В БАНКЕ ДОСТАТОЧНО ДЕНЕГ, ТО НАЧИНАЕМ СОБИРАТЬ ИНФОРМАЦИЮ ОБ ОХРАНЕ.
COMMENT: БАНК ИМЕЕТ ДОСТАТОЧНО СРЕДСТВ ДЛЯ УДОВЛЕТВОРЕНИЯ ВАШИХ ПОТРЕБНОСТЕЙ. УЗНАЕМ, ОХРАНЯЕТСЯ ЛИ ОН ДНЕМ И НОЧЬЮ.
RULE: R4
IF: dayctrl
THEN: output
output "СКОЛЬКО ЧЕЛОВЕК СТОИТ НА ОХРАНЕ БАНКА ДНЕМ?"
input dayсol num using "nn"
output
output "ПРОСМАТРИВАЕТСЯ ЛИ ПОМЕЩЕНИЕ БАНКА"
output "ВИДЕОКАМЕРОЙ ?"
input kamera logic
REASON: ЕСЛИ ДНЕМ БАНК ОХРАНЯЕТСЯ, ТО НАДО УЗНАТЬ КОЛ-ВО ОХРАНЫ И ПОЛУЧИТЬ ИНФОРМАЦИЮ О НАЛИЧИИ В ПОМЕЩЕНИИ БАНКА ВИДЕОКАМЕРЫ.
COMMENT: ЕСЛИ У ВХОДА ДНЕМ СТОЯТ ПОЛИЦЕЙСКИЕ, ТО НАДО УЗНАТЬ СКОЛЬКО ИХ, И ПРОСМАТРИВАЕТСЯ ЛИ ПОМЕЩЕНИЕ ВИДЕОКАМЕРОЙ
RULE: R5
IF: nitectrl
THEN: output
output"СКОЛЬКО ЧЕЛОВЕК СТОИТ НА ОХРАНЕ БАНКА НОЧЬЮ?"
input nitecol num using "nn"
output
output "МОЖЕТЕ ЛИ ВЫ ОТКЛЮЧИТЬ СИГНАЛИЗАЦИЮ,"
output "ЧТОБЫ ОНА НЕ СРАБОТАЛА ?"
input signal logic
REASON: ЕСЛИ НОЧЬЮ БАНК ОХРАНЯЕТСЯ, TO НАДО УЗНАТЬ КОЛ-ВО ОХРАННИКОВ И МОЖНО ЛИ ОТКЛЮЧИТЬ, СИГНАЛИЗАЦИЮ.
COMMENT: ЕСЛИ НОЧЬЮ БАНК ОХРАНЯЮТ ПОЛИЦЕЙСКИЕ, ТО НАДО УЗНАТЬ СКОЛЬКО ИХ И МОЖНО ЛИ ОТКЛЮЧИТЬ СИГНАЛИЗАЦИЮ.
RULE: R6
IF: not nitectrl
THEN: output
output "МОЖЕТЕ ЛИ ВЫ ОТКЛЮЧИТЬ СИГНАЛИЗАЦИЮ,"
output " ЧТОБЫ ОНА НЕ СРАБОТАЛА?"
input signal logic
REASON: ЕСЛИ НОЧЬЮ БАНК НЕ ОХРАНЯЕТСЯ, ТО НАДО УЗНАТЬ, ВОЗМОЖНО ЛИ ОТКЛЮЧИТЬ СИГНАЛИЗАЦИЮ.
COMMENT: ЕСЛИ НОЧЬЮ БАНК НЕ ОХРАНЯЮТ ПОЛИЦЕЙСКИЕ, ТО ВОЗМОЖНО ЛИ ОТКЛЮЧИТЬ СИГНАЛИЗАЦИЮ.
RULE: R7
IF: not nitectrl and signal
THEN: breaking="ОПЕРАЦИЮ НАДО НАЧИНАТЬ В 2 ЧАСА 17 МИНУТ"
breaking=breaking+" ПО МЕСТНОМУ ВРЕМЕНИ."
REASON: ЕСЛИ БАНК НОЧЬЮ ПОД ПЛОХОЙ ОХРАНОЙ, ТО ОГРАБЛЕНИЕ ПРОЙДЕТ ВПОЛНЕ УСПЕШНО. ГЛАВНОЕ НАЧАТЬ ЕГО В 2 ЧАСА 17 МИНУТ. В НОЧЬ НА ПЯТНИЦУ. COMMENT: ТАКИЕ БАНКИ НАДО БРАТЬ НОЧЬЮ.
RULE: R8
IF: not nitectrl and not signal and dayctrl
THEN: breaking="ОПЕРАЦИЮ НАДО НАЧИНАТЬ В 2 ЧАСА 17 МИНУТ "
breaking=breaking+"ПO МЕСТНОМУ ВРЕМЕНИ. НО БУДЬТЕ "
breaking=breaking+" OCTOPOЖНЫ, BAM НАДО ВСЕ СДЕЛАТЬ"
breaking=breaking+" ЗА 15 МИНУТ. ТРЕНИРУЙТЕСЬ!"
REASON: ЕСЛИ БАНК НОЧЬЮ ПОД ПЛОХОЙ ОХРАНОЙ, ТО ОГРАБЛЕНИЕ ПРОЙДЕТ ВПОЛНЕ УСПЕШНО. ГЛАВНОЕ НАЧАТЬ ЕГО В 2 ЧАСА 17 МИНУТ. В НОЧЬ НА ПЯТНИЦУ. И УЧТИТЕ, У ВАС ВСЕГО 15 МИНУТ.
COMMENT: ТАКИЕ БАНКИ НАДО БРАТЬ НОЧЬЮ.
RULE: R9
IF: (nitectrl or not signal and not nitectrl) and not dayctrl and not kamera
THEN: breaking="TAKOЙ БАНК НАДО БРАТЬ В 16 ЧАСОВ 45 МИНУТ"
breaking=breaking+" ВДВОЕМ, ИМЕЯ ПРИ СЕБЕ ПИСТОЛЕТЫ."
REASON: ЕСЛИ БАНК НОЧЬЮ ПОД ОХРАНОЙ ИЛИ СИГНАЛИЗАЦИЕЙ, НО ДНЕЙ БРОШЕН НА ПРОИЗВОЛ СУДЬБЫ, ТО ОГРАБЛЕНИЕ ПРОЙДЁТ ВПОЛНЕ УСПЕШНО. ГЛАВНОЕ НАЧАТЬ ЕГО В 16 ЧАСОВ 45 МИНУТ В ПЯТНИЦУ.
COMMENT: ТАКИЕ БАНКИ НАДО БРАТЬ ДНЕМ ПРИ ВСЕМ ЧЕСТНОМ НАРОДЕ.
RULE: R10
IF: (nitectrl or not signal and not nitectrl) and not dayctrl and kamera
THEN: breaking="TAKOЙ БАНК НАДО БРАТЬ В 16 ЧАСОВ 45 МИНУТ"
breaking=breaking+" ВДВОЕМ, ИМЕЯ ПРИ СЕБЕ ПИСТОЛЕТЫ"
breaking=breaking+" И МАСКИ."
REASON: ЕСЛИ БАНК НОЧЬЮ ПОД ОХРАНОЙ ИЛИ СИГНАЛИЗАЦИЕЙ, НО ДНЕМ БРОШЕН НА ПРОИЗВОЛ СУДЬБЫ, ТО ОГРАБЛЕНИЕ ПРОЙДЕТ ВПОЛНЕ УСПЕШНО. ГЛАВНОЕ НАЧАТЬ ЕГО В 16 ЧАСОВ 45 МИНУТ В ПЯТНИЦУ.
COMMENT: ТАКИЕ БАНКИ НАДО БРАТЬ ДНЕМ ПРИ ВСЕМ ЧЕСТНОМ НАРОДЕ.
RULE: R11
IF: dayctrl and nitectrl and (people<nitecol or guns<daycol)
THEN: breaking="СИДЕЛИ БЫ ВЫ ЛУЧШЕ ДОМА И НЕ РЫПАЛИСЬ "
breaking=breaking+"ПОНАПРАСНУ."
RULE: R12
IF: (people or guns)<l and not signal
THEH: breaking="СИДЕЛИ БЫ ВЫ ЛУЧШЕ ДОНА И НЕ РЫПАЛИСЬ "
breaking=breaking+"ПОНАПРАСНУ ПРИ ТАКОМ РАСКЛАДЕ "
breaking=breaking+"BЫ ОБЯЗАТЕЛЬНО ПОПАДЕТЕСЬ. МОЙ "
breaking=breaking+"BAM СОВЕТ: ИЩИТЕ ЛЮДЕЙ И "
breaking=breaking+"ПРИОБРЕТАЙТЕ ОРУЖИЕ."
RULE: R13
IF: not dayctrl and people>1 and guns>l and nitectrl
THEN: breaking="У ВАС НЕПЛОХИЕ ШАНСЫ НА УСПЕХ ПРИ РАБОТЕ"
breaking=breaking+" ДНЕМ. И ЕСЛИ ВЫ ЗАХВАТИТЕ ДВУХ "
breaking=breaking+"CAMHX ЛОВКИХ РЕБЯТ, ТО ПРИ "
breaking=breaking+"НЕПЛОХОМ РАСКЛАДЕ ВЫ СДЕЛАЕТЕ ЭТО"
breaking=breaking+" УСПЕШНО. ДА, И НЕ ЗАБУДЬТЕ МАСКИ,"
breaking=breaking+"TAM НАВЕРНЯКА УСТАНОВЛЕНА "
breaking=breaking+"BИДEOKAMEРА."
COMMENT: ДНЕМ БАНК НЕ ОХРАНЯЕТСЯ.
RULE: R14
IF: daycol<min(people,guns)-2 and nitecol>daycol+l
THEN: breaking="ЛУЧШE ВСЕГО БРАТЬ ЭТОТ БАНК ШТУРМОМ,"
breakine=breaking+"TAK КАК У ВАС ВПОЛНЕ ДОСТАТОЧНО"
breaking=breaking+" ЛЮДЕЙ. НО СТОИТ ЛИ ДЕЛАТЬ ЭТО?"
COMMENT: ДНЕМ КОНТРОЛЬ ПОСЛАБЕЕ, ЧЕМ НОЧЬЮ.
VAR: GUNS
LABEL: КОЛ-ВО ИМЕЮЩИХСЯ В ВАШЕМ РАСПОРЯЖЕНИИ ЕД. ОГНЕСТРЕЛЬНОГО ОРУЖИЯ.
VAR: NMONEY
LABEL: ПЛАНИРУЕМАЯ СУММА ОГРАБЛЕНИЯ.
VAR: PEOPLE
LABEL: КОЛ-ВО ЧЛЕНОВ ВАШЕЙ ТУСОВКИ.
END:
В варианте 4 предлагается предусмотреть изменения, учитывающие ситуации:
а) ограбление транспорта, перевозящего банковские ценности;
б) ограбление банка в условиях стихийного бедствия.
Вариант 5
GOAL: dinner
/* ЭТОТ НАБОР ПРАВИЛ ПОЗВОЛИТ ВАМ. ПОЛУЧИТЬ РЯД СОВЕТОВ ПО */
/*ПРИГОТОВЛЕНИЮ ОБЕДА НА ЖЕЛАЕМОЕ ЧИСЛО ПЕРСОН В */
/* ЗАВИСИМОСТИ ОТ НАБОРА И КОЛИЧЕСТВА ПРОДУКТОВ, */
/* ИМЕЮЩИХСЯ В ВАШЕМ РАСПОРЯЖЕНИИ. СООБЩИТ ПРИЧИНЫ */ /*ПОЯВЛЕНИЯ ИМЕННО ЭТИХ СОВЕТОВ. */
/* КОНЕЧНО, ЭТО ДАЛЕКО НЕ ПОЛНЫЙ НАБОР, НО ВЕДЬ ОН И ПРЕДНА- */
/*ЗНАЧЕН ДЛЯ ПОКАЗА САМЫХ ТРИВИАЛЬНЫХ СРЕДСТВ GURU. ТАК ЧТО */
/* НЕ ИЩИТЕ В НЕМ ЧЕГО-ЛИБО СВЕРХИНТЕЛЛЕКТУАЛЬНОГО. */
/* НА ВОПРОСЫ СИСТЕМЫ СЛЕДУЕТ ВВОДИТЬ СООТВЕТСТВУЮЩЕЕ */
/* ЗНАЧЕНИЕ БУЛЕВСКОЙ ПЕРЕМЕННОЙ ( ДА-Y, HET-N ) */
INITIAL:
clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr=250 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
output " ДЕНЬ ДОБРЫЙ, МИСТЕР (МИССИС)."
output " ПОШАРИВ В СВОЕМ ХОЛОДИЛЬНИКЕ И ОБНАРУЖИВ ТАМ "
output "КОЕ-КАКИЕ ЗАПАСЫ, ВЫ РЕШИЛИ ЧТО-НИБУДЬ СОСТРЯПАТЬ. НО "
output "ЧТО ИМЕННО ВЫ ЕЩЕ НЕ ПРИДУМАЛИ. МЫ ПОСТАРАЕМСЯ ДАТЬ "
output "ВАМ СОВЕТ, КАК ИЗ ИМЕЮЩИХСЯ ПРОДУКТОВ СДЕЛАТЬ НЕЧТО"
output " СЪЕДОБНОЕ. НО ДЛЯ ЭТОГО ВЫ ДОЛЖНЫ ПРЕДОСТАВИТЬ МНЕ "
output "ВСЮ ИНФОРМАЦИЮ."
output " ИТАК, НАЧНЕМ ..."
meatexst="Y"
output " СКАЖИТЕ, ВЫ НАШЛИ В ХОЛОДИЛЬНИКЕ МЯСО (Y/N) ?"
input meatexst str using "a"
DO:
clear
output " ВОТ ЧТО МНЕ КАЖЕТСЯ ПРИЕМЛЕМЫМ В ДАННОЙ СИТУАЦИИ."
output
output dinner
RULE: Rl
IF: meatexst<>"Y" or meatexst<>"y"
THEN: output " ИЗВИНИТЕ, А ВЫ ВЕГЕТАРИАНЕЦ (Y/N)?"
input vegitar str using "a"
RULE: R2
IF: (meatexst<>"Y" or meatexst<>"y") and (vegitar<>"y" or vegitar<>"Y")
THEN: dinner=" ЛУЧШЕ ВСЕГО ВОЗЬМИТЕ СВОЙ ТОЛСТЫЙ БУМАЖНИК"
dinner=dinner+" И ОТПРАВЛЯЙТЕСЬ В РЕСТОРАН, ИБО БЕЗ "
dinner=dinner+"MЯCA НОРМАЛЬНОГО ОБЕДА НЕ ПОЛУЧИТСЯ "
RULE: R3
IF: vegitar="y" or vegitar="Y"
THEN: output
output " НУ, РАЗ ВЫ ВЕГЕТАРИАНЕЦ, ТО, НАВЕРНО,ОВОЩЕЙ "
output "У ВАС НАВАЛОМ (Y/N)?"
input vagitables str using "a"
RULE: R4
IF: meatexst="Y" or meatexst="y"
THEN: output
output " СКОЛЬКО ГРАММ МЯСА ВЫ ИМЕЕТЕ?"
input howmeat num using "nnnn"
output
output " НА СКОЛЬКО ПЕРСОН ЗАДУМАН ВАШ ОБЕД?"
input howfamily num using "n"
RULE: R5
IF: meatexst<>"Y" or meatexst<>"y"
THEN: output
output " ИЗВИНИТЕ, А ВЫ ВЕГЕТАРИАНЕЦ (Y/N)?"
input vegitar str using "a"
RULE: R6
IF: howmeat/howfamily>300
THEN: dinner="ЛУЧШЕ ВСЕГО ВОЗЬМИТЕ ЭТОТ КУСОК МЯСА,"
dinner=dinner+"ПOPEЖTE ЕГО ВДОЛЬ ВОЛОКОН НА "
dinner=dinner+"HETOЛCTЫE ПЛАСТЫ, ОТБЕЙТЕ, НАШПИГУЙТЕ"
dinner=dinner+" И НА 30 МИН. ОТЛОЖИТЕ. ЗАТЕМ БЕРЕТЕ"
dinner=dinner+" СКОВОРОДУ И ЖАРИТЕ НА МЕДЛЕННОМ "
dinner=dinner+"ОГHE. КАК ГОВОРИТСЯ, СОЛЬ, АНАНАСЫ,"
dinner=dinner+" ФИСТАШКИ - ПО ВКУСУ."
RULE: R7
IF: (howmeat/howfamily>80) and (howmeat/howfamily<=300)
THEN: enoughmeat=true
RULE: R8
IF: enoughmeat
THEN: output
output " МЯСО - ЭТО ЗАЛОГ УСПЕХА ."
output
output"ИМЕЕТСЯ ЛИ В ВАШЕМ РАПОРЯЖЕНИИ КАПУСТА (Y/N)?"
input kapusta str using "a"
output
input svekla str using "a" with " СВЕКЛА (Y/N) ?".
output
input potetou str using "a" with " КАРТОФЕЛЬ (Y/N)?"
RULE: R9
IF: (kapusta="y" or kapusta="Y") and (svekla="y" or svekla="Y") and (potetou= "y" or potetou="Y")
THEN: dinner=" ВАРИТЕ УКРАИНСКИЙ БОРЩ."
RULE: R10
IF: howmeat/howfamily<=80
THEN: enoughmeat=false
RULE: R11
IF: not enoughmeat
THEN: dinner=" МЯСА ОЧЕНЬ МАЛО, ЧТОБЫ ПРИГОТОВИТЬ ПЕРВОЕ ИЛИ"
dinner=dinner+"BTOPOE, HO, БЫТЬ МОЖЕТ, ЕГО ХВАТИТ НА "
dinner=dinner+"МЯСНОЙ САЛАТ."
RULE: R12
IF: vagitables="Y" or vagitables="y"
THEN: dinner=" СВАЛИТЕ ВСЕ В ОДНУ КУЧУ, ЗАТЕМ МЕЛКО ПОКРОШИТЕ"
diriner=dinner+"(МОЖНО ПРОПУСТИТЬ ЧЕРЕЗ МЯСОРУБКУ),"
dinner=dinner+" ПЕРЕЛОЖИТЕ ПОЛУЧИВШУЮСЯ МАССУ В " dinner=dinner+"САЛАТНИЦЫ И ПОДАВАЙТЕ К СТОЛУ. ЕСЛИ ВАМ "
dirmer=dinner+':ПОBE3ET, TO ВСЕ БУДУТ ДОВОЛЬНЫ. ЕСЛИ НЕТ -"
dinner=dinner+" HE ОБЕССУДЬТЕ."
VAR: DINNER
FIND: dinner="ПРИЧИНА ПОЯВЛЕНИЯ ЭТИХ НЕПОЛАДОК НАМ НЕИЗВЕСТНА."
LABEL: КАК ПОСТУПИТЬ, ЕСЛИ НУЖНО ПРИГОТОВИТЬ ОБЕД.
VAR: MEATEXST
LABEL: НАЛИЧИЕ МЯСА В ВАШЕМ ХОЛОДИЛЬНИКЕ.
VAR: ENOUGHMEAT
LABEL: ДОСТАТОЧНО ЛИ МЯСА ДЛЯ ОДНОГО ИЗ ПЕРВЫХ БЛЮД.
VAR: HOWMEAT
LABEL: ПРИМЕРНЫЙ ВЕС КУСКА МЯСА.
VAR: HOWFAMILY
LABEL: КОЛИЧЕСТВО ПЕРСОН, ПРИГЛАШЕННЫХ НА ОБЕД.
VAR: KAPUSTA
LABEL: ЕСТЬ ЛИ В ДОМЕ КАПУСТА.
VAR: SVEKLA
LABEL: ЕСТЬ ЛИ В ДОМЕ СВЕКЛА.
VAR: POTETOU
LABEL: ЕСТЬ ЛИ В ДОМЕ КАРТОФЕЛЬ.
VAR: VEGITAR
LABEL: ЯВЛЯЕТЕСЬ ЛИ ВЫ ВЕГЕТАРИАНЦЕМ.
END:
В варианте 5 предлагается предусмотреть изменения, учитывающие ситуации:
а) наличие в холодильнике сыра;
б) наличие в холодильнике пива.
Вариант 6
GOAL: whattodo
/* ЭТОТ НАБОР ПРАВИЛ ПОЗВОЛИТ ВАМ ПОЛУЧИТЬ РЯД СОВЕТОВ НА */
/* ТЕМУ "КАК УСПЕТЬ НА ЭКЗАМЕН", В ЗАВИСИМОСТИ ОТ ОПОЗДАНИЯ И*/
/* ВАЖНОСТИ СВОЕВРЕМЕННОГО ПРИХОДА. ОЧЕВИДНО, ЧТО ЭТО */
/* ДАЛЕКО НЕ ПОЛНЫЙ НАБОР, НО ВЕДЬ ОН И ПРЕДНАЗНАЧЕН ДЛЯ */
/* ПОКАЗА САМЫХ ТРИВИАЛЬНЫХ СРЕДСТВ GURU. ТАК ЧТО НЕ */
/* ИЩИТЕ В НЕМ СВЕРХИНТЕЛЛЕКТУАЛЬНОГО. */
/* НА ВОПРОСЫ СИСТЕМЫ СЛЕДУЕТ ВВОДИТЬ СООТВЕТСТВУЮЩЕЕ */
/* ЗНАЧЕНИЕ БУЛЕВСКОЙ ПЕРЕМЕННОЙ ( ДА-Y, НЕТ-N ) */
/* НУ, И КОНЕЧНО, НА ПРОСЬБУ СИСТЕМЫ ВВЕСТИ СООТВЕТ- */
/* СТВУЮЩЕЕ ЧИСЛО. */
INITIAL:
clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr=250 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
output " ДЕНЬ ДОБРЫЙ, МИСТЕР (МИССИС)."
output
output " У ВАС СЕГОДНЯ ЭКЗАМЕН, А ВЫ ПРОСНУЛИСЬ СЛИШКОМ "
output "ПОЗДНО... ВАМ, ЕСТЕСТВЕННО, НАДО УСПЕТЬ НА НЕГО, НО "
output "КАК ? МЫ ПОСТАРАЕМСЯ ДАТЬ ВАМ СОВЕТ, КАК, ИСХОДЯ ИЗ "
output "СЛОЖИВШЕЙСЯ СИТУАЦИИ, ВАМ СЛЕДУЕТ ПОСТУПИТЬ. НО ДЛЯ "
output "ЭТОГО ВЫ ДОЛЖНЫ ПРЕДОСТАВИТЬ МНЕ ВСЮ ИНФОРМАЦИЮ."
output " ИТАК, НАЧНЕМ ..."
output
lating="Y"
output" СКАЖИТЕ, ВЫ ДЕЙСТВИТЕЛЬНО ОПАЗДЫВАЕТЕ (Y/N)?"
input lating str using "a"
DO:
clear
output " ВОТ ЧТО МНЕ КАЖЕТСЯ ПРИЕМЛЕМЫМ В ДАННОЙ СИТУАЦИИ."
output
output whattodo
RULE: Rl
IF: mainexam and biglate
THEN: whattodo=" БЕРИТЕ ТАКСИ НА ВЕСЬ ПУТЬ ДО ИНСТИТУТА. В"
whattodo=whattodo+"TAKОЙ СИТУАЦИИ ДЕНЬГИ ЗНАЧЕНИЯ НЕ "
whattbdo=whattodo+"ИМЕЮT."
RULE: R2
IF: not mainexam
THEN: whattodo=" УСПОКОИТЕСЬ, НА НЕ ОЧЕНЬ ВАЖНЫЙ ЭКЗАМЕН "
whattodo=whattodo+"HE СТОИТ СИЛЬНО СПЕШИТЬ. ПОВЕРЬТЕ,"
whattodo=whattodo+"BAM ПРОСТЯТ ВАШЕ ОПОЗДАНИЕ ИЛИ ДАЖЕ"
whattodo=whattodo+"ОТСУТСТВИЕ. ТАК ЧТО НЕСПЕША ПО-"
whattodo=whattodo+"EЗЖAЙTE НА ОБЩЕСТВЕННОМ ТРАНСПОРТЕ."
RULE: R3
IF: not biglate and mainexam
THEN: whattodo=" HE ВОЛНУЙТЕСЬ, ВСЕ ЕЩЕ БУДЕТ ХОРОШО. ВАМ "
whattodo=whattodo+"СТОИТ ВЗЯТЬ ТАКСИ НА ЧАСТЬ ПУТИ,"
whattodo=whattodo+" НАПРИМЕР, ДО КАКОГО-НИБУДЬ "
whattodo=whattodo+"УЗЛОВОГО ПУНКТА (ДО МЕТРО, АВТ."
whattodo=whattodo+"OCTAHQBKИ). "
RULE: R4
IF: onlyge4
THEN: mainexam=false
RULE: R5
IF: veroyatn >= 90
THEN: mainexam=false
RULE: R6
IF: (veroyatn <90) and not onlyge4
THEN: mainexam=true
ROLE: R7
IF: lating<>"Y" and lating<>"y"
THEN: whattodo=" ВСЕ В ПОРЯДКЕ. ЖЕЛАЮ ВАМ НИ ПУХА ."
RULE: R8
IF: howcommon<onwalk+bymetro+bybus+15
THEN: biglate=true
RULE: R9
IF: howcommon >= onwalk+bymetro+bybus+15
THEN: biglate=false
VAR: WHATTODO
FIND: whattodo=" СОЖАЛЕЮ, Я НЕ ЗНАЮ, ЧТО ВАМ ПОСОВЕТОВАТЬ..."
LABEL: СОВЕТ КАК ДЕЙСТВОВАТЬ В ДАННОЙ СИТУАЦИИ.
VAR: MAINEXAM
LABEL: ПРЕДСТОЯЩИЙ ЭКЗАМЕН - ВАЖНЫЙ.
VAR: BIGLATE
LABEL: ТЕКУЩЕЕ ОПОЗДАНИЕ - ЗНАЧИТЕЛЬНОЕ.
VAR: LATING
LABEL: ВЫ РЕАЛЬНО ОПАЗДЫВАЕТЕ.
VAR: HOWCOMMON
FIND: output
output " СКОЛЬКО МИНУТ ВАМ ДОБИРАТЬСЯ ДО ИНСТИТУТА "
output "ОБЩЕСТВЕННЫМ ТРАНСПОРТОМ?"
input howcommon num using "nnn"
LABEL: ВРЕМЯ В ПУТИ ДО ИНСТИТУТА.
VAR: ONWALK
FIND: output
output " СКОЛЬКО МИНУТ ВАМ ПРИХОДИТСЯ ИДТИ ПЕШКОМ?"
input onwalk num using "nn"
LABEL: ВРЕМЯ ПЕШЕГО ПЕРЕДВИЖЕНИЯ.
VAR: BYMETRO
FIND: output
output " СКОЛЬКО МИНУТ ВАМ ПРИХОДИТСЯ ПРОВОДИТЬ В "
output "МЕТРО?"
input byinetro num using "nnn"
LABEL: ВРЕМЯ ПРОЕЗДА В МЕТРОПОЛИТЕНЕ.
VAR: BYBUS
FIND: output
output " СКОЛЬКО МИНУТ ВАМ ПРИХОДИТСЯ ПРОВОДИТЬ В "
output "АВТОБУСЕ?"
input bybus num using "nnn"
LABEL: ВРЕМЯ ПРОЕЗДА В АВТОБУСЕ, ТРОЛЛЕЙБУСЕ, ТРАМВАЕ.
VAR: ONLYGE4
FIND: output
output " НА ПРЕДСТОЯЩЕМ ЭКЗАМЕНЕ НЕ СТАВЯТ МЕНЬШЕ 4?"
input onlyge4 logic
LABEL: НА ПРЕДСТОЯЩЕМ ЭКЗАМЕ НЕ НЕ СТАВЯТ МЕНЬШЕ 4.
VAR: VEROYATN
FIND: output
output " КАКОВА ОБЪЕКТИВНАЯ ВЕРОЯТНОСТЬ ПОЛУЧЕНИЯ ВАМИ"
output " ЖЕЛАЕМОЙ ОЦЕНКИ?"
input veroyatn num using "nn"
LABEL: ОБЪЕКТИВНАЯ ВЕРОЯТНОСТЬ ПОЛУЧЕНИЯ ВАМИ ЖЕЛАЕМОЙ ОЦЕНКИ.
END:
В варианте 6 предлагается предусмотреть изменения, учитывающие ситуации:
а) свое плохое самочувствие (болезнь);
б) возможность позвонить экзаменатору в аудиторию, где проходит экзамен (предупредить).
Вариант 7
GOAL: youhouse
/* ЭТА ЭКСПЕРТНАЯ СИСТЕМКА ДАСТ ВАМ РЯД СОВЕТОВ НА ТЕМУ: */
/* ХВАТИТ ЛИ ВАМ ЗАГОТОВЛЕННЫХ СТРОЙМАТЕРИАЛОВ ДЛЯ */
/* ПОСТРОЙКИ ЗАДУМАННОГО ВАМИ СОБСТВЕННОГО ДОМИКА НА */
/* СОБСТВЕННОЙ ЗЕМЛЕ. КОНЕЧНО, ЭТО ДАЛЕКО НЕ ПОЛНЫЙ */
/* НАБОР, НО ВЕДЬ ОН И ПРЕДНАЗНАЧЕН ДЛЯ ПОКАЗА */
/* САМЫХ ТРИВИАЛЬНЫХ СРЕДСТВ GURU. */
/* ТАК ЧТО НЕ ИЩИТЕ В НЕМ ЧЕГО-ЛИБО СВЕРХИНТЕЛЛЕКТУАЛЬНОГО. */
/* НА ВОПРОСЫ СИСТЕМЫ СЛЕДУЕТ ВВОДИТЬ СООТВЕТСТВУЮЩЕЕ */
/* ЗНАЧЕНИЕ СТРОКОВОЙ ПЕРЕМЕННОЙ ( ДА-Y, HET-N) ИЛИ ЧИСЛО. */
INITIAL:
clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr=250 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
output " ДЕНЬ ДОБРЫЙ, МИСТЕР (МИССИС)."
output " НАСТАЛА ПОРА ОБЗАВЕСТИСЬ НЕДВИЖИМОСТЬЮ ( ВЫ РЕШИЛИСЬ "
output "ПОСТРОИТЬ СЕБЕ ДОМ). МЫ ПОСТАРАЕМСЯ ДАТЬ ВАМ СОВЕТ, С "
output "ПОМОЩЬЮ КОТОРОГО ВЫ СМОЖЕТЕ ОПРЕДЕЛИТЬ, ХВАТИТ ЛИ ВАМ *
output "СТРОЙМАТЕРИАЛОВ НА НЕГО."
output "НО ДЛЯ ЭТОГО ВЫ ДОЛЖНЫ ПРЕДОСТАВИТЬ МНЕ ВСЮ "
output "ИНФОРМАЦИЮ."
output " ИТАК, НАЧНЕМ ..."
sqrland=0
output " СКОЛЬКО СОТОК ЗЕМЛИ НАХОДИТСЯ В ВАШЕМ ВЛАДЕНИИ?"
input sqrland num using "nn"
DO:
clear
output " ВОТ ЧТО МНЕ КАЖЕТСЯ ПРИЕМЛЕМЫМ В ДАННОЙ СИТУАЦИИ."
output
output youhouse
RULE: Rl
IF: sqrland<10
THEN: enoughland=false
RULE: R2
IF: sqrland>=10
THEN: enoughland=true
RULE: R3
IF: enoughland
THEN: output "СКОЛЬКО ЭТАЖЕЙ В ДОМЕ БУДЕТ?"
input howflors num using "nn"
output "КАКОВА ПЛОЩАДЬ ОДНОГО ЭТАЖА ( KB. M.)?"
input howsqr num using "rin"
RULE: R4
IF: howsqr>sqrland*5
THEN: rightsqr=false
RULE: R5
IF: howsqr<=sqrland*5
THEN: rightsqr=true
RULE: R6
IF: not rightsqr
THEN: youhouse="ДЛЯ ВАШЕГО УЧАСТКА ТАКАЯ ПЛОЩАДЬ ЭТАЖА НЕ " уоuhouse=youhousa+"ПОДХОДИТ."
RULE: R7
IF: howflors<=2
THEN: rightflors=true
RULE: R8
IF: howflors>2
THEN: rightflors=false
RULE: R9
IF: rightflors and rightsqr
THEN: output
output "СКОЛЬКО ТЫС. ШТ. КИРПИЧА ВЫ ПРИГОТОВИЛИ ДЛЯ"
output " СТРОИТЕЛЬСТВА?"
input howbloks num using "nn"
RULE: R10
IF: howbloks<howflors*howsqr*3
THEN: enoughbloks=false
RULE: R11
IF: howbloks>=howflors*howsqr*3
THEN: enoughbloks=true
RULE: R12
IF: not enoughbloks
THEM: youhouse="HA ЖЕЛАЕМЫЙ ДОМ ВАМ НЕ ХВАТАЕТ КИРПИЧА."
RULE: R13
IF: enoughbloks
THEN: output "СКОЛЬКО KB. M. ШИФЕРА ИЛИ ДРУГОГО "
output "КРОВЕЛЬНОГО МАТЕРИАЛА ВЫ ИМЕЕТЕ?"
input howshifers num using "nn"
RULE: R14
IF: howshifers>=howsqr*l .2
THEH: enoughshifers=true
RULE: R15
IF: howshifers<howsqr*1.2
THEN: enoughshifers=false
RULE: R16
IF: not enoughshifers
THEN: youhouse="BAM HE ХВАТАЕТ КРОВЕЛЬНОГО МАТЕРИАЛА ДЛЯ " youhouse=youhouse+"TOГO, ЧТОБЫ НАКРЫТЬ СВОЙ " youhouse=youhouse+"БУДУЩИЙ ДОМ. ВАМ НУЖНО ЕЩЕ " youhouse=youhouse+"МАЛОСТЬ ПОДЗАКУПИТЬСЯ ИЛИ" youhouse=youhouse+" ПЕРЕСМОТРЕТЬ ПРОЕКТ."
RULE: R17
IF: enoughshifers and enoughbloks and enoughland
THEN: youhouse="ВЫ ИМЕЕТЕ ПОЧТИ ВСЕ НЕОБХОДИМОЕ ДЛЯ"
youhouse=youhouse+"ОСУЩЕСТВЛЕНИЯ СВОИХ ПЛАНОВ."
youhouse=youhouse+"И ЕСЛИ ВЫ ПРИЛОЖИТЕ ДОСТАТОЧНО"
youhouse=youhouse+"УСИЛИЙ, TО ЧЕРЕЗ ГОДИК-ДРУГОЙ " youhouse=youhouse+"БУДЕТ У ВАС СВОИ ДОМИК."
RULE: R18
IF: not rightflors
THEN: youhouse="TAKHE ДОМА СТРОИТЬ НЕ НАДО. НЕ ДРАЗНИТЕ"
youhouse=youhouse+"BAШИX СОСЕДЕЙ. ВЕДЬ ОНИ ПРОСТЫЕ " yotshouse=youhouse+"CMEPTHЫE. ПОДЖЕЧЬ МОГУТ..."
VAR: SQRLAND
LABEL: ПЛОЩАДЬ ВАШЕГО УЧАСТКА
VAR: EHOUGHLAND
LABEL: ДОСТАТОЧНО ЛИ ПЛОЩАДИ ВАШЕГО УЧАСТКА
VAR: HOWSQR
LABEL: ПЛОЩАДЬ ОДНОГО ЭТАЖА В ДОМЕ
VAR: HOWFLORS
LABEL: КОЛИЧЕСТВО ЭТАЖЕЙ В ДОМЕ
VAR: RIGHTSQR
LABEL: СООТВЕТСТВИЕ ПЛОЩАДИ ЭТАЖА ПЛОЩАДИ ДОМА
VAR: RIGHTFLORS
LABEL: ВОЗМОЖНОСТЬ ПОСТРОЙКИ ДОМА С ТАКОЙ ЭТАЖНОСТЬЮ
VAR: HOWSHIFERS
LABEL: КОЛ-ВО КРОВЕЛЬНОГО МАТЕРИАЛА (КВ. М.)
VAR: EHOUGHSHIFERS
LABEL: ДОСТАТОЧНО ЛИ КРОВЕЛЬНОГО МАТЕРИАЛА
END:
В варианте 7 предлагается предусмотреть изменения, учитывающие ситуации:
а) возможность заказать строительство дома строительной организации;
6) необходимость постройки гаража.
Вариант 8
GOAL: ways
/* ЭТОТ НАБОР ПРАВИЛ ПОЗВОЛИТ ВАМ ПОЛУЧИТЬ РЯД СОВЕТОВ ПО */
/* УСТРАНЕНИЮ НЕКОТОРЫХ ДЕФЕКТОВ ПИСТОЛЕТОВ- */
/* КРАСКОПУЛЬТОВ И СООБЩИТ ПРИЧИНЫ ИХ ПОЯВЛЕНИЯ. */
/* КОНЕЧНО, ЭТО МАЛЕНЬКИЙ И ДАЛЕКО НЕ ПОЛНЫЙ */
/* НАБОР, НО ВЕДЬ ОН И ПРЕДНАЗНАЧЕН ДЛЯ */
/* ПОКАЗА САМЫХ ТРИВИАЛЬНЫХ СРЕДСТВ GURU. TAK ЧТО */
/* НЕ ИЩИТЕ В НЕМ СВЕРХИНТЕЛЛЕКТУАЛЬНОГО. */
/* НА ВОПРОСЫ СИСТЕМЫ СЛЕДУЕТ ВВОДИТЬ СООТВЕТСТВУЮЩЕЕ */
/* ЗНАЧЕНИЕ БУЛЕВСКОЙ ПЕРЕМЕННОЙ (ДА-Y, HET-N) */
INITIAL:
clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr=250 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
output "ДЕНЬ ДОБРЫЙ, МИСТЕР (МИССИС)."
output "ВЫ РЕШИЛИСЬ ОКРАСИТЬ КАКУЮ-ТО ПОВЕРХНОСТЬ ПРИ ПОМОЩИ"
output "ПИСТОЛЕТА-КРАСКОПУЛЬТА. А ВАШ ПИСТОЛЕТИК ЧТО-ТО"
output "НЕНОРМАЛЬНО РАБОТАЕТ. МЫ ПОСТАРАЕМСЯ ДАТЬ ВАМ СОВЕТ, "
output "КАК УСТРАНИТЬ НЕКОТОРЫЕ НЕИСПРАВНОСТИ И СОВЩИМ ВАМ "
output "ПРИЧИНЕ ИX ПОЯВЛЕНИЯ."
output "НО ДЛЯ ЭТОГО ВЫ ДОЛЖНЫ ПРЕДОСТАВИТЬ МНЕ ВСЮ"
output "ИНФОРМАЦИЮ."
output "ИТАК, ПОЕХАЛИ..."
gunsdef=true
output "ПРИ РАБОТЕ ПИСТОЛЕТА ПОЯВИЛИСЬ КАКИЕ-ТО ДЕФЕКТЫ (Y/N)?"
input gunsdef str using "a"
DO:
clear
output
output " ВОТ ЧТО Я ВАМ СКАЖУ :"
output
output reasons
output
output '"А ВОТ ЧТО ВАМ СЛЕДУЕТ СДЕЛАТЬ В ДАННОЙ СИТУАЦИИ."
output ways
RULE: Rl
IF: gunsdef="Y" or gunsdef="y"
THEN: output " ЧТО-ТО НЕЛАДНОЕ СО СТРУЕЙ КРАСКИ (Y/N)? "
input drops str using "a"
REASON: ЕСЛИ ЕСТЬ ДЕФЕКТЫ, ТО СКОРЕЕ ВСЕГО ОНИ СВЯЗАНЫ СО
СТРУЕК КРАСКИ.
COMMENT: СВЯЗАНЫ ЛИ ДЕФЕКТЫ СО СТРУЕЙ.
RULE : R2
IF: gunsdef<>"Y" or gunsdef<>"y"
THEN: output
reasons="HET ДЕФЕКТОВ, ЗНАЧИТ НЕЧЕГО ВОЛНОВАТЬСЯ ЗРЯ." wауs="ПОЙДИТЕ ЛУЧШЕ ОТДОХНИТЕ, ВЕДЬ У ВАС ВСЕ В "
wауs=wауs+"ПОРЯДКЕ."
REASON: ЕСЛИ НЕТ ДЕФЕКТОВ, ТО НИЧЕГО ДЕЛАТЬ НЕ НУЖНО COMMENT: НЕТ ДЕФЕКТОВ - ОТДЫХАЙ
RULE: R3
IF: notkrask="Y" or notkrask="y"
THEN: reasons=" ЗАСОРЕНА СЕТКА РЕЗЕРВУАРА ДЛЯ КРАСКИ ИЛИ"
reasons=reasons+"НЕДОСТАТОЧНЫЙ УРОВЕНЬ КРАСКИ В "
reasons=reasons+''БАКЕ. "
ways="В ПЕРВОМ СЛУЧАЕ НАДО ПРОЧИСТИТЬ СЕТКУ, А ВО "
ways=ways+"ВТОРОМ ДОБАВИТЬ КРАСКУ В КРАСКОНАГНЕТА"
ways=ways+''ТЕЛЬНЫЙ БАЧОК."
REASON: ЕСЛИ СОВСЕМ НЕ ПОСТУПАЕТ КРАСКА В КРАСКОПУЛЬТ,
ТО ЭТА ПРОБЛЕМА ВПОЛНЕ РАЗРЕШИМА.
COMMENT: СПОСОБ УСТРАНЕНИЯ НЕПОЛАДОК, СВЯЗАННЫХ С НЕПОСТУПЛЕНИЕМ КРАСКИ В ПИСТОЛЕТ.
RULE: R4
IF: drops="Y" or drops="y"
THEN: output
output "СЛАБЫЙ РАСПЫЛ СТРУИ?"
input lowfluct str using "a"
REASON: ЕСЛИ ДЕФЕКТЫ СВЯЗАНЫ СО СТРУЕЙ, ТО СКОРЕЕ ВСЕГО ЭТО
ЕЕ СЛАБЫЙ РАСПЫЛ.
COMMENT: СЛАБЫЙ ЛИ РАСПЫЛ СТРУИ.
RULE: R5
IF: (drops="Y" or drops="y") and lowfluct<>"Y" and lowfluct<>"y"
THEN : output
output " СЛИШКОМ РАЗБРОСАННАЯ СТРУЯ, СИЛЬНОЕ "
output "ТУМАНООБРАЗОВАНИЕ?"
Input highfluct str using "a"
REASON: ЕСЛИ ДЕФЕКТЫ СВЯЗАННЫ СО СТРУЕЙ И СТРУЯ НЕ СЛАБАЯ,
ТО СКОРЕЕ ВСЕГО СЛИШКОМ СИЛЬНЫЙ РАСПЫЛ ОННОЙ.
COMMENT: СИЛЬНЫЙ ЛИ РАСПЫЛ СТРУИ.
RULE: R6
IF: (drops="Y" or drops="y") and (harddrops="Y" or harddrops="y")
THEN: reasons=" ТАКОЙ ЭФФЕКТ ВОЗМОЖЕН ТОЛЬКО В ТРЕХ "
reasons=reasons+"СЛУЧАЯХ: СЛАБОЕ ДАВЛЕНИЕ НА "
reasons=reasons+''КРАСКУ, СЛИШКОМ ГУСТАЯ КРАСКА ИЛИ "
reasons=reasons+"HEПЛOTHO ПРИЖАТ ВОЗДУХОПРОВОД."
ways=" СООТВЕТСТВЕННО НЕОБХОДИМО: ОТРЕГУЛИРОВАТЬ "
ways=ways+"ДАВЛЕНЙЕ, РАЗБАВИТЬ КРАСКУ РАСТВОРИТЕЛЕМ,"
ways=ways+"ПРИЖАТЬ И ЗАКРЕПИТЬ ВОЗДУХОПРОВОД."
REASON: ЕСЛИ СТРУЯ КРАСКИ ПОДАЕТСЯ РЕЗКИМИ ТОЛЧКАМИ, ТО ЭТА ПРОБЛЕМА ВПОЛНЕ РАЗРЕШИМА.
COMMENT: СПОСОБ УСТРАНЕНИЯ НЕПОЛАДОК, СВЯЗАННЫХ С РЕЗКИМИ ТОЛЧКАМИ СТРУИ КРАСКИ В ПИСТОЛЕТЕ.
RULE: R7
IF: (drops="Y" or drops="y") and (lowfluct="Y" or lowfluct="y")
THEM: reasons="ТАКОЙ ЭФФЕКТ ВОЗМОЖЕН ТОЛЬКО В ДВУХ СЛУЧАЯХ:"
reasons=reasons+"MAЛO ВОЗДУХА ИЛИ ЗАГРЯЗНЕНО ОТВЕРСТИЕ"
reascns=reasons+" COПЛA."
ways=" СООТВЕТСТВЕННО НЕОБХОДИМО : ПРОВЕРИТЬ И УСТРА"
ways=ways+"НИТЬ МЕСТА УТЕЧКИ ВОЗДУХА, ПРОЧИСТИТЬ СОПЛО."
REASON: ЕСЛИ СТРУЯ КРАСКИ ИМЕЕТ СЛАБЫЙ РАСПЫЛ, ТО ЭТА ПРОБЛЕМА ВПОЛНЕ РАЗРЕШИЛА.
COMMENT: СПОСОБ УСТРАНЕНИЯ НЕПОЛАДОК, СВЯЗАННЫХ СО СЛАБЫМ РАСПЫЛОМ СТРУИ КРАСКОПУЛЬТА.
RULE: R8
IF: (drops="Y" or drops="y") and (highfluct="Y" or highfluct="y")
THEN: reasons="TAKOH ЭФФЕКТ ВОЗМОЖЕН ТОЛЬКО В ТРЕХ СЛУЧАЯХ:"
reasons=reasons+" ЗАГРЯЗНЕН КОНЧИК ИГЛЫ, СРАБОТАЛОСЬ"
reasons=reasons+" САЛЬНИКОВОЕ УПЛОТНЕНИЕ ИГЛЫ "
reasons=reasons+"ИЗЛИШНЯЯ ПОДАЧА ВОЗДУХА ИЛИ НЕДОС"
reasons=reasons+"TATОЧНАЯ ПОДАЧА КРАСКИ."
ways=" СООТВЕТСТВЕННО НЕОБХОДИМО: ОЧИСТИТЬ КОНЧИК "
ways=ways+"ИГЛЫ, ПОДТЯНУТЬ ГАЙКУ САЛЬНИКОВОГО "
ways=ways+"УПЛОТНЕНИЯ, ОТРЕГУЛИРОВАТЬ ПОДАЧУ ВОЗДУХА"
ways=ways+"И КРАСКИ."
REASON: ЕСЛИ СТРУЯ КРАСКИ ИМЕЕТ СИЛЬНЫЙ РАСПЫЛ, ТО ЭТА ПРОБЛЕМА ВПОЛНЕ РАЗРЕШИМА.
COMMENT: СПОСОБ УСТРАНЕНИЯ НЕПОЛАДОК, СВЯЗАННЫХ С СИЛЬНЫМ РАСПЫЛОМ СТРУИ КРАСКОПУЛЬТА.
RULE: R9
IF: not (drops="Y" or drops="y") and (badklap="Y" or badklap="y")
THEN: reasons=" ТАКОЙ ЭФФЕКТ ВОЗМОЖЕН ТОЛЬКО В ДВУХ "
reasons=reasons+"СЛУЧАЯХ: СРАБОТАЛАСЬ ИГЛА СОПЛА,"
reasons=reasons+"ИГЛА HE ЗАКРЫВАЕТ ОТВЕРСТИЯ СОПЛА."
ways=" СООТВЕТСТВЕННО НЕОБХОДИМО: ПРИТЕРЕТЬ ИЛИ "
ways=ways+"CMEНИТЬ ИГЛУ, ВЫДВИНУТЬ ИГЛУ ПУТЕМ "
ways=ways+"ОТВИНЧИВАНИЯ РЕГУЛИРОВОЧНЫХ ГАЕК."
REASON: ЕСЛИ НЕПОЛАДКИ СОСТОЯТ В ПРОТЕЧКЕ КРАСКИ ПРИ ЗАКРЫТОМ КЛАПАНЕ, ТО ЭТА ПРОБЛЕМА ВПОЛНЕ РАЗРЕШИМА.
COMMENT: СПОСОБ УСТРАНЕНИЯ НЕПОЛАДОК, СВЯЗАННЫХ С ПРОТЕКАНИЕМ КРАСКИ ПРИ ЗАКРЫТОМ КЛАПАНЕ.
VAR: GUNSDEF
LABEL: НАЛИЧИЕ ДЕФЕКТОВ ПИСТОЛЕТА-КРАСКОПУЛЬТА.
VAR: NOTKRASK
FIND: output " КРАСКА СОВСЕМ НЕ ПОДАЕТСЯ В ПИСТОЛЕТ (Y/N)?"
input notkrask str using "a"
LABEL: ПОДАЧА КРАСКИ В ПИСТОЛЕТ.
VAR: HARDDROPS
FIND: output " НАБЛЮДАЮТСЯ РЕЗКИЕ ТОЛЧКИ И ПУЛЬСАЦИЯ "
output " СТРУИ (Y/N)? "
input harddrops str using "a"
LABEL: СТРУЯ ПУЛЬСИРУЕТ И БЫВАЮТ РЕЗКИЕ ТОЛЧКИ.
VAR: BADKLAP
FIND: output "KPACKA ПРОХОДИТ ПРИ ЗАКРЫТОМ КЛАПАНЕ(Y/N)?"
input badklap str using "a"
LABEL: НЕГОДЕН КЛАПАН ПИСТОЛЕТА.
VAR: WAYS
FIND: reasons="ПРИЧИНА ПОЯВЛЕНИЯ ЭТИХ НЕПОЛАДОК МНЕ "
reasons=reasons+"HEИ3BECTHA."
ways="ПОПРОБУЙТЕ ОБРАТИТЬСЯ В МАСТЕРСКУЮ."
LABEL: СПОСОБ УСТРАНЕНИЯ НЕПОЛАДОК.
END:
В варианте 8 предлагается предусмотреть изменения, учитывающие ситуацию:
наличие дефекта в пистолете, не связанного со струей (не нажимается кнопка приведения пистолета в действие или краска вытекает из пистолета через какие-то щели, но не через сопло).
Вариант 9
GOAL: ways
/* ЭТОТ НАБОР ПРАВИЛ ПОЗВОЛИТ ВАМ ПОЛУЧИТЬ РЯД СОВЕТОВ ПО */
/* УСТРАНЕНИЮ НЕКОТОРЫХ НЕИСПРАВНОСТЕЙ ОБЫЧНОГО */
/* ПАЯЛЬНИКА И СООБЩИТ ВОЗМОЖНЫЕ ПРИЧИНЫ ИХ ПОЯВЛЕНИЯ. */
/* КОНЕЧНО, ЭТО МАЛЕНЬКИЙ, НЕПОЛНЫЙ НАБОР, НО ОН И */
/* ПРЕДНАЗНАЧЕН ДЛЯ ПОКАЗА САМЫХ ТРИВИАЛЬНЫХ СРЕДСТВ GURU.*/
/* ТАК ЧТО БЫЛО БЫ С ВАШЕЙ СТОРОНЫ НАИВНО ОЖИДАТЬ ЧЕГО-ЛИБО*/
/* СВЕРХИНТЕЛЕКТУАЛЬНОГО. */
/* НА ВОПРОСЫ СИСТЕМЫ СЛЕДУЕТ ВВОДИТЬ СООТВЕТСТВУЮЩЕЕ */
/* ЗНАЧЕНИЕ БУЛЕВСКОЙ ПЕРЕМЕННОЙ ( ДА-ТRUE, HEТ-FALSE ). */
INITIAL:
clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr=250 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
output " ДЕНЬ ДОБРЫЙ, МИСТЕР (МИССИС)."
output
output " ВЫ ВКЛЮЧИЛИ В СЕТЬ ПАЯЛЬНИК И ОБНАРУЖИЛИ, ЧТО ОН "
output " НЕИСПРАВЕН. МЫ ПОСТАРАЕМСЯ ДАТЬ ВАМ СОВЕТ ПО "
output " УСТРАНЕНИЮ И ПРИЧИНАМ ПОЯВЛЕНИЯ НЕИСПРАВНОСТЕЙ."
output " НО ДЛЯ ЭТОГО ВЫ ДОЛИНЫ ПРЕДОСТАВИТЬ МНЕ "
output " ВСЮ ИНФОРМАЦИЮ."
output " ИТАК, НАЧНЕМ ..."
output
temperature=true
output " ПАЯЛЬНИК НЕДОСТАТОЧНО РАЗОГРЕЛСЯ?"
input temperature logic
DO:
clear
output " ВОТ ЧТО Я ВАМ СКАЖУ, ЛЮБЕЗНЕЙШИЙ."
output
output reasons
output
output "А ВОТ ЧТО ВАМ СЛЕДУЕТ СДЕЛАТЬ В ДАННОЙ СИТУАЦИИ."
output
output ways
RULE: Rl
IF: temperature
THEN: output
output "ПОСЛЕ ВКЛЮЧЕНИЯ ПАЯЛЬНИК НАГРЕЛСЯ?"
input lowtemp logic
REASON: ЕСЛИ НЕДОСТАТОЧНО НАГРЕЛСЯ, ТО ДО КАКОЙ ТЕМПЕРАТУРЫ. COMMENT: НАГРЕЛСЯ ЛИ ПАЯЛЬНИК ХОТЬ НА МАЛОСТЬ.
RULE: R2
IF: not temperature
THEN: output
output "ПОСЛЕ ВКЛЮЧЕНИЯ ПАЯЛЬНИК ПЕРЕГРЕЛСЯ? "
input hightemp logic
REASON: ЕСЛИ ПЕРЕГРЕЛСЯ, ТО СКОРЕЕ ВСЕГО ЭТО МЕЖВИТКОВОЕ ЗАМЫКАНИЕ.
COMMENT: ПЕРЕГРЕЛСЯ ЛИ ПАЯЛЬНИК.
RULE: R3
IF: not lowtemp or hightemp
THEN: output
output "В ПОРЯДКЕ ЛИ НАПРЯЖЕНИЕ В СЕТИ? "
input power logic
REASON: ЕСЛИ ПАЯЛЬНИК НЕ НАГРЕЛСЯ ХОТЬ НА МАЛОСТЬ ИЛИ ПЕРЕГРЕЛСЯ, ТО СКОРЕЕ ВСЕГО НЕИСПРАВНА СЕТЬ.
COMMENT: НАПРЯЖЕНИЕ В СЕТИ.
ROLE: R4
IF: lowtemp
THEN: output
output " HE СЛЫШНО ЛИ ПОТРЕСКИВАНИЯ В ПАЯЛЬНИКЕ "
output " ИЛИ СОЕД. ШНУРЕ ?"
input noice logic
REASON: ЕСЛИ ПАЯЛЬНИК НЕДОСТАТОЧНО РАЗОГРЕЛСЯ, ТО СКОРЕЕ ВСЕГО ЭТО ОЗНАЧАЕТ РАЗРЫВ В ЦЕПИ ПИТАНИЯ ИЛИ НАГРЕВАТЕЛЬНОГО ЭЛЕМЕНТА .
COMMENT: СЛЫШЕН ЛИ ТРЕСК.
RULE: R5
IF: not hightemp and not temperature
THEN: reasons="ПО ВАШИМ ОТВЕТАМ ПАЯЛЬНИК И НЕ ПЕРЕГРЕЛСЯ"
reasons=reasons+" И НЕ НЕДОГРЕЛСЯ ОДНОВРЕМЕННО."
ways="ПОЙДИТЕ ЛУЧШЕ ОТДОХНИТЕ, ПОСПИТЕ И Т. Д.."
REASON: ЕСЛИ ТАКОЙ РАСКЛАД, ТО НАДО ПОСПАТЬ.
COMMENT: НЕТ ДЕФЕКТОВ - ОТДЫХАЙ.
RULE: R6
IF: not power
THEN: output
reasons="ПРИЧИНА ПОЯВЛЕНИЯ ЭТИХ НЕПОЛАДОК ЛЕЖИТ ВНЕ"
reasons=reasons+" ПРЕДЕЛОВ ПАЯЛЬНИКА. ОНА КРОЕТСЯ В "
reasons=reasons+"BE3OTBETCTBEHHОЙ РАБОТЕ "
reasons=reasons+ГОРЭЛЕКТРОСЕТЕЙ, НЕИСПРАВНОСТИ ПРОБОК"
reasons=reasons+" ИЛИ ПРОТИВОЗАКОННОМ ДЕЯНИИ КАКИХ-ТО" reasons=reasons+" ХУЛИГАНОВ, ЛИБО ВАШИХ СОСЕДЕЙ."
ways="ECЛИ ВЫ В СОСТОЯНИЙ УСТРАНИТЬ ВСЕ ПЕРЕЧИСЛЕННЫЕ"
ways=ways+" ВЫШЕ ПРИЧИНЫ, ТО СДЕЛАЙТЕ ЭТО."
REASON: ЕСЛИ НЕТ НАПРЯЖЕНИЯ В СЕТИ, ТО СТОИТ ПОДОЖДАТЬ, ПОКА ОНО ПОЯВИТСЯ, ЛИБО САМОРУЧНО УСТРАНИТЬ ПРИЧИНЫ ЕГО ОТСУТСТВИЯ.
COMMENT: ОТСУТСТВИЕ НАПРЯЖЕНИЯ В СЕТИ.
RULE: R7
IF: power and not lowtemp
THEN: output
output "В ПОРЯДКЕ ЛИ ШНУР ПИТАНИЯ (НЕТ ЛИ ПОРЫВОВ,"
output " ГОРЕЛЫХ МЕСТ )?"
input cabel logic
REASON: ЕСЛИ СЕТЕВОЕ НАПРЯЖЕНИЕ В ПОРЯДКЕ, ТО СКОРЕЕ ВСЕГО ЭТО ОЗНАЧАЕТ РАЗРЫВ ШНУРА ПИТАНИЯ ПАЯЛЬНИКА.
COMMENT: В ПОРЯДКЕ ЛИ ШНУР ПИТАНИЯ.
RULE: R8
IF: power and hightemp
THEN: reasons="ПРИЧИНА ПОЯВЛЕНИЯ ЭТИХ НЕПОЛАДОК СКОРЕЕ " reasons=reasons+"ВСЕГО КРОЕТСЯ В ТОМ, ЧТО ПРОИЗОШЛО" reasons=reasons+" МЕЖВИТКОВОЕ ЗАМЫКАНИЕ В " reasons=reasons+"НАГРЕВАТЕЛЬНОМ ЭЛЕМЕНТЕ ПАЯЛЬНИКА." ways="ВСКРЫТЬ ПАЯЛЬНИК И ПЕРЕМОТАТЬ НАГРЕВАТЕЛЬНЫЙ " ways=ways+"ЭЛЕМЕНТ, ИЛИ ОТДАТЬ В РЕМОНТ ИЛИ ПРОСТО" ways=ways+" ВЫКИНУТЬ."
REASON: ЕСЛИ СЕТЕВОЕ НАПРЯЖЕНИЕ В ПОРЯДКЕ, ТО СКОРЕЕ ВСЕГО ПРОИЗОШЛО МЕЖВИТКОВОЕ ЗАМЫКАНИЕ В НАГРЕВАТЕЛЬНОМ ЭЛЕМЕНТЕ ПАЯЛЬНИКА.
COMMENT: КОРОТКОЕ ЗАМЫКАНИЕ.
RULE: R9
IF: noice
THEN: cabel=false
REASON: ЕСЛИ СЛЫШЕН ТРЕСК, ТО НЕ В ПОРЯДКЕ ШНУР ПИТАНИЯ. COMMENT: СПОСОБ УСТРАНЕНИЯ НЕИСПРАВНОСТИ, СОПРОВОЖДАЕМОЙ ТРЕСКОМ.
RULE: R10
IF: not noice
THEN: reasons="ПАЯЛЬНИК ПОДКЛЮЧЕН К НЕСООТВЕТСТВУЮЩЕМУ "
reasons=reasons+"ИСТОЧНИКУ НАПРЯЖЕНИЯ."
ways="ПОДКЛЮЧИТЕ ПРИБОР К ИСТОЧНИКУ НАПРЯЖЕНИЯ, " ways=ways+" УДОВЛЕТВОРЯЮЩЕМУ УСЛОВИЯМ ЭКСПЛУАТАЦИИ,"
ways=ways+" УКАЗАННЫМ НА КОРПУСЕ ПАЯЛЬНИКА."
REASON: ЕСЛИ ПАЯЛЬНИК НЕ ДОСТИГАЕТ НЕОБХОДИМОЙ ТЕМПЕРАТУРЫ БЕЗ КАКИХ-ЛИБО ДОПОЛНИТЕЛЬНЫХ ОТКЛОНЕНИЙ, ТО СКОРЕЕ ВСЕГО ЭТО ПРОИСХОДИТ ИЗ-ЗА НЕСООТВЕТСТВИЯ ИСТОЧНИКА ПИТАНИЯ.
COMMENT: НЕСООТВЕТСТВУЮЩИЙ ИСТОЧНИК ПИТАНИЯ.
RULE: R11
IF: not cabel
THEN: reasons="ИЗНОСИЛСЯ ШНУР ПИТАНИЯ (ПЕРЕЛОМИЛСЯ ПРОВОД)" reasons=reasons+" ИЛИ ШТЕПСЕЛЬНАЯ ВИЛКА."
ways="ЗАМЕНИТЬ ШНУР ПИТАНИЯ ИЛИ ШТЕПСЕЛЬНУЮ ВИЛКУ."
COMMENT: ИЗНОСИЛСЯ ШНУР ПИТАНИЯ.
RULE: R12
IF: cabel
THEN: reasons="ПРИЧИНА ПОЯВЛЕНИЯ ЭТИХ НЕПОЛАДОК НАМ " reasons=reasons+" HEИ3BECTHA. "
ways="ПОПРОБУЙТЕ ОБРАТИТЬСЯ К БОЛЕЕ ОПЫТНОМУ "
ways=ways+''СПЕЦИАЛИСТУ."
REASON: ЕСЛИ ТАКОВО ВНЕШНЕЕ ОПИСАНИЕ НЕИСПРАВНОСТИ, ТО НИЧЕГО ПУТНОГО ПОСОВЕТОВАТЬ ВАМ Я НЕ МОГУ.
COMMENT: КАКИЕ-ТО НЕ ЗАРЕЗЕРВИРОВАННЫЕ ПОЛОМКИ.
VAR: temperature
LABEL: ПАЯЛЬНИК РАЗОГРЕЛСЯ НЕДОСТАТОЧНО.
VAR: WAYS
FIND: reasons="ПРИЧИНА ПОЯВЛЕНИЯ ЭТИХ НЕПОЛАДОК НАМ НЕИЗВЕСТНА"
ways="ПОПРОБУЙТЕ ОБРАТИТЬСЯ К БОЛЕЕ ОПЫТНОМУ СПЕЦИАЛИСТУ."
LABEL: СПОСОБ УСТРАНЕНИЯ НЕПОЛАДОК.
END:
В варианте 9 предлагается предусмотреть изменения, учитывающие ситуации:
а) поломку жала паяльника;
б) очень длительное нагревание паяльника.
Вариант 10
GOAL: howrest
/* ЭТА ЭКСПЕРТНАЯ СИСТЕМКА ДАСТ ВАМ РЯД СОВЕТОВ, КАК ПРОВЕСТИ*/
/* ДОЛГОЖДАННЫЙ ЛЕТНИЙ ОТПУСК ПРИ ВАШЕМ ФИНАНСОВОМ */
/* ПОЛОЖЕНИИ И ПРИ ОПРЕДЕЛЕННОМ ЧИСЛЕ ЖЕЛАЮЩИХ */
/* ОТДОХНУТЬ ЗА ВАШ СЧЕТ. ЕСЛИ СРЕДСТВ ДЛЯ ОТДЫХА НА ВОДЕ */
/* НЕДОСТАТОЧНО, ТО МОЖЕТ БЫТЬ, ВАШИ СИМПАТИИ БУДУТ */
/* ОТДАНЫ ОТДЫХУ В ЛЕСУ И ГОРАХ. КОНЕЧНО, */
/* ЭТО ДАЛЕКО НЕ ПОЛНЫЙ НАБОР, НО ВЕДЬ ОН И ПРЕДНАЗНАЧЕН */
/* ДЛЯ ПОКАЗА САМЫХ ТРИВИАЛЬНЫХ СРЕДСТВ GURU. ТАК */
/* ЧТО НЕ ИЩИТЕ В НЕМ СВЕРХИНТЕЛЕКТУАЛЬНОГО. */
/* НА ВОПРОСЫ СИСТЕМЫ СЛЕДУЕТ ВВОДИТЬ СООТВЕТСТВУЮЩЕЕ */
/* ЗНАЧЕНИЕ СТРОКОВОЙ ПЕРЕМЕННОЙ (ДА-Y, HET-N) ИЛИ ЧИСЛО. */
INITIAL:
clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr=250 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
output " ДЕНЬ ДОБРЫЙ, МИСТЕР (МИССИС)."
output " НАСТАЛА ПОРА ВАШЕГО ДОЛГОЖДАННОГО ЛЕТНЕГО ОТПУСКА."
output "КАК ЕГО ПРОВЕСТИ? МЫ ПОСТАРАЕМСЯ ДАТЬ ВАМ СОВЕТ, КАК "
output "ПРИ ВАШЕМ ФИНАНСОВОМ ПОЛОЖЕНИИ ПРОВЕСТИ ЖЕЛАННЫЕ "
output "ДЕНЬКИ."
output "НО ДЛЯ ЭТОГО ВЫ ДОЛЖНЫ ПРЕДОСТАВИТЬ МНЕ"
output " ВСЮ ИНФОРМАЦИЮ."
output " ИТАК, НАЧНЕМ ..."
finance=0
output " КАКУЮ СУММУ ВЫ ГОТОВЫ БЫЛИ БЫ ПОТРАТИТЬ?"
input finance num
DO:
clear
output " ВОТ ЧТО МНЕ КАЖЕТСЯ ПРИЕМЛЕМЫМ В ДАННОЙ СИТУАЦИИ. "
output
output howrest
RULE: Rl
IF: (finance/acount)>=5000 and (f inance/acount)<9000
THEN: howrest=" BЫ МОЖЕТЕ ПРИОБРЕСТИ КАЖДОМУ ПО ПУТЕВКЕ В" howrest=howrest+" САНАТОРИИ НА ПОБЕРЕЖЬЕ КАКОЙ-ЛИБО" howrest=howrest+" РЕКИ, ОЗЕРА ИЛИ ВОДОХРАНИЛИЩА."
RULE: R2
IF: (finance/acount)>=9000 and (finance/acount)<90000
THEN: howrest=" ВЫ МОЖЕТЕ ПРИОБРЕСТИ КАЖДОМУ ПО ПУТЕВКЕ В " howrest=howrest+"CAHATОРИЙ НА ПОБЕРЕЖЬЕ ЧЕРНОГО "
howrest=howrest+"МОРЯ. ТАКОЙ ОТДЫХ ВАМ ЗАПОМНИТСЯ"
howrest=howrest+"НАДОЛГО."
RULE: R3
IF: (finance/acount)>=90000
THEN: howrest=" BЫ МОЖЕТЕ ПЕРЕВЕСТИ ЧАСТЬ ВАШИХ СРЕДСТВ В " howrest=howrest+" СКВ И ПРИОБРЕСТИ КАЖДОМУ ПО "
howrest=howrest+"ПУТЕВКЕ НА КАНАРСКИЕ ОСТРОВА ИЛИ " howrest=howrest+''ДВУХНЕДЕЛЬНЫИ КРУИЗ. ФИРМА" howrest=howrest+" ГАРАНТИРУЕТ, ЧТО ТАКОЙ ОТДЫХ " howrest=howrest+"ПОЗВОЛИТ ВАМ ЗАБЫТЬ АБСОЛЮТНО ВСЕ" howrest=howrest+" ВАШИ ПРОБЛЕМЫ."
RULE: R4
IF: (finance/acount)<5000 and (finance/acount)>=3000
THEN: howrest=" ВАМ СТОИТ ПОДУМАТЬ ОБ ОТДЫХЕ В ЛЕСУ ИЛИ" howrest=howrest+" ГОРАХ, ДЛЯ ТАКОГО ОТДЫХА У ВАС " howrest=howrest+"CPEДCTB ВПОЛНЕ ДОСТАТОЧНО, А " howrest=howrest+"BОЗMOЖHO СТОИТ ОТПРАВИТЬСЯ ДИКАРЯМИ" howrest=howrest+" НА МОРЕ."
RULE: R5
IF: finance>3000
THEN: output
output "А СКОЛЬКО ЧЕЛОВЕК БУДУТ ОТДЫХАТЬ ЗА ВАШ СЧЕТ ?"
input acount num using "nn"
output
RULE: R6
IF: (finance/acount)<3000
THEN: howrest=" ВАМ СТОИТ ПОДУМАТЬ ЛИБО О СОКРАЩЕНИЙ ЧИСЛА " howrest=howrest+"ОТДЫХАЩИХ ЗА ВАШ СЧЕТ, ЛИБО ОБ"
howrest=howrest+" УВЕЛИЧЕНИИ СУММЫ НА ОТДЫХ."
RULE: R7
IF: finance<=3000 and finance>1000
THEN: output " ПРОСТИТЕ ЗА БЕСТАКТНЫЙ ВОПРОС, ВЫ "
output "ЖЕНАТЫ (ЗАМУЖЕМ) (Y/H)?"
input wife str using "a"
RULE: R8
IF: (wife="Y") or (wife="y")
THEN: output " ВЫ ПРОВЕДЕТЕ ОТПУСК ВМЕСТЕ (Y/H)? "
input withwife str using "a"
RULE: R9
IF: (withwife="Y") or (withwife="y")
THEN: howrest="HA ТАКУЮ СУММУ НА ДВОИХ МОЖНО ОТДОХНУТЬ "
howrest=howrest+"TOЛЬKO СИДЯ ДОМА ИЛИ КОВЫРЯЯСЬ НА ДАЧЕ."
RULE: R10
IF: finance<=1000
THEN: howrest="HA ТАКУЮ СУММУ МОЖНО ОТДОХНУТЬ ТОЛЬКО "
howrest=howrest+''СИДЯ ДОМА ИЛИ КОВЫРЯЯСЬ НА ДАЧЕ."
RULE: R11
IF: wife<>"Y" or wife<>"y" or withwife<>"Y" or withwife<>"y"
THEN: output " ВЫ ХОТЕЛИ БЫ ВЫБРАТЬСЯ НА ПРИРОД (Y/N)?"
input townout str using "a"
RULE. R12
IF: townout="Y" or townout="y"
output " ВАМ НРАВИТСЯ ОТДЫХ В ЛЕСУ (Y/N)?"
input forest str using "a"
RULE: R13
IF: (townout="Y" or townout="y") and forest<>"Y"
and forest<>"y"
THEN: output " ВАМ НРАВИТСЯ ОТДЫХ В ГОРАХ (Y/N)? "
input mountain str using "a"
RULE: R14
IF: (townout="Y" or townout="y'') and mountain<>"Y" and mountain<>"y"
THEN: howrest=" В ТАКОМ ФИНАНСОВОМ ПОЛОЖЕНИИ ВАМ СТОИТ " howrest=howrest+"OCTATЬСЯ ДОМА И ВОЗМОЖНО РАЗОК - " howrest=howrest+"ДРУГОЙ СХОДИТЬ В КАФЕ 'МОРОЖЕННОЕ'."
howrest=howrest+"ИHOЙ ОТДЫХ ДЛЯ ВАС НЕДОСТУПЕН."
RULE: R15
IF: forest="Y" or forest="y"
THEN: howrest=" ПРИ ВАШИХ СРЕДСТВАХ ВАМ СТОИТ ВЗЯТЬ " howrest=howrest+"HAПPOKAT, HA 3 НЕДЕЛИ, ОДНОМЕСТНУЮ" howrest=howrest+" ПАЛАТКУ, РЮКЗАК, СПАЛЬНЫЙ МЕШОК, " howrest=howrest+"ЗАГОТОВИТЬ НА ОСТАВШУЮСЯ СУММУ" howrest=howrest+" МАКАРОНЫ, ТУШЕНКУ, СУХОФРУКТЫ," howrest=howrest+"CПИЧКИ И Т. П. И ОТПРАВИТЬСЯ В" howrest=howrest+" ПРИГЛЯНУВШИЙСЯ ЛЕСОК."
RULE: R16
IF: mountain="Y" or mountain="y"
THEN: howrest=" ПРИ ВАШИХ СРЕДСТВАХ ВАМ СТОИТ ВЗЯТЬ НА " howrest=howrest+"IIPOKAT,HA 2 НЕДЕЛИ, ОДНОМЕСТНУЮ " howrest=howrest+"ПАЛАТКУ, РЮКЗАК, СПАЛЬНЫЙ МЕШОК," howrest=howrest+"КУПИТЬ БИЛЕТ ТУДА-ОБРАТНО." howrest=howrest+"3AГOTOBHTЬ НА ОСТАВШУЮСЯ СУММУ " howrest=howrest+"MAKAPOH, ТУШЕНКИ, СУХОФРУКТОВ "
howrest=hewrest+"И Т.П. И ОТПРАВИТЬСЯ К ВЕРШИНАМ..."
RULE: R17
IF: townout<>"y" or townout<>"Y"
THEN: howrest=" В ТАКИХ ИНТЕРЕСАХ ВАМ СТОИТ ОСТАТЬСЯ ДОМА" howrest=howrest+" И ВОЗМОЖНО РАЗОК-ДРУГОЙ СХОДИТЬ" howrest=howrest+" В КАФЕ 'МОРОЖЕНОЕ'. БЫТЬ МОЖЕТ, ЗА" howrest=howrest+" ОТПУСК ВЫ УСПЕЕТЕ СДЕЛАТЬ МНОГО " howrest=howrest+''ПОЛЕЗНОГО ДЛЯ СЕБЯ И БЛИЗКИХ ВАМ" howrest=howrest+" ЛЮДЕЙ."
VAR: finance
LABEL: СУММА, КОТОРУЮ ВЫ ГОТОВЫ ПОТРАТИТЬ НА ОТДЫХ.
END:
В варианте 10 предлагается предусмотреть изменения, учитывающие:
а) возможность подзаработать за некоторое время отпуска и потратить заработанное на отпуск;
б) возможность одолжить деньги на проведение отпуска.
