Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры_прис.docx
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
171.68 Кб
Скачать
  1. Проектирование диалога с пользователем: текствое представление

Текстовое представление диалога.

1. If <условие> then … - Форма Бекуса-Науэра

2. логические выражения

3. регулярные выражения

Наибольшее распространение – продукционные правила (если, то). Не существует «иначе».

Основной принцип работы продукционных правил – все правила равны между собой, всегда все работают. Если выполняются все части условия, то переходим к действию.

Условная часть может представлять собой некоторую комбинацию событий и внутренних или других состояний. Действия – физические действия, которые выполняются в системе и переводят систему в другое состояние (изменение интерфейса, обращение к БД и т.д). Три типа систем, построенных на продукционных правилах:

  1. системы, ориентированные на события

  2. системы, ориентированные на состояния

  3. смешанные

1. В системах, ориентированных на события и условия, и действия представляют собой множество событий. События делятся на три вида:

А) пользовательские (те, которые сгенерировал пользователь). Такие события обозначают с заглавной буквы.

Б) внутренние события, используются для сохранения состояния диалога. Их имена начинаются со строчных букв. Это некоторые флаги. Хранятся в системе.

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

Пример: рисование ломаной линии.

1 правило:

Выбран_режим_ломанная_линия -> начало_линии, <курсор_линия>

2 правило: Одиночный_щелчок, начало_линии -> продолжение_линии, <резиновая_нить>

3 правило: Одиночный_щелчок, продолжение_линии -> продолжение_линии, <нарисовать_отрезок>

4 правило: Двойной_щелчок, продолжение_линии -> <рисовать_отрезок>, <отключить_резиновую_нить>, <стандартный_курсор>

5 правило: Esc -> <стереть_все>, <стандартный_курсор>, <отключить_резиновую_нить>

Модуль логики диалога имеет собственную память, которая может содержать множество событий. Правило срабатывает, если все события его условной части загружены в память. События пользователя записываются в память в момент возникновения. При срабатывании правила все события условной части из памяти удаляются, а действительной части туда заносятся. События отклика системы удаляются из памяти по мере их выполнения.

Плюс таких систем: просто добавить/удалить/изменить функционал (добавить/удалить/изменить правило).

2.Система правил, ориентированных на состояния.

Память представляет собой множество именованных значений (атрибутов). Состояние системы определяется конкретным значением этих атрибутов.

Атрибут – мышь. Значения – не_работает/ выбор_линии/ одиночный_щелчок/ двойной_щелчок.

Атрибут – линия. Значения – начало_линии/продолжение линии/выбор изменен.

Атрибут – резиновая нить. Значение – вкл, выкл.

Атрибут – рисование. Значение – ничего_не_рисуется/рисуется_линия.

Правила:

Мышь=выбор_линии -> мышь=не_работает, линия=начало_линии

Мышь=одиночный_щелчок, линия=начало_линии -> мышь=не_работает, линия=продолжение_линии, резиновая_нить=вкл.

Мышь=одиночный_щелчок, линия=продолжение_линии -> мышь=не_работает, рисование=рисуется_линия

Мышь=двойной_щелчок, линия=продолжение_линии -> мышь=не_работает, резиновая_нить=выкл, рисование=рисуется_линия

Правило выполняется, когда состояние соответствует его условной части. Выполнение правила не приводит к обязательной смене значения атрибутов. Если действительная часть правила содержит новое значение атрибута, то изменения произойдут.

3.смешанные системы.

Событие: условие -> действие

Наступление события представляется как сигнал к выполнению правила, но правило не сработает, если его условие ложно. События могут порождаться пользователем. Атрибуты при этом остаются неизменными, пока это явно не будет задано в действии, кроме того в действии могут порождаться новые события. Некоторые правила могут не иметь условия. Например, в нашем случае, нажатие клавиши ESC.

С помощью таких правил удобно описывать конкурентный диалог (жирный, курсив, подчеркивание).