Метод таблиц решений.
Метод таблиц решений базируется на использовании таблиц следующего вида (см. табл. 12.1).
Верхняя часть этой таблицы определяет различные ситуации, в которых требуется выполнять некоторые действия (операции). Каждая строка этой части задает ряд значений некоторой переменной или некоторого условия, указанной (указанного) в первом поле (столбце) этой строки. Таким образом, первый столбец этой части представляет собой список переменных или условий, от значений которых зависит выбор определяемых ситуаций. В каждом следующем столбце указывается комбинация значений этих переменных (условий), определяющая конкретную ситуацию. При этом последний столбец определяет ситуацию, отличную от предыдущих, т.е.для любых других комбинаций значений (будем обозначать их звездочкой *), отличных от первых, определяется одна и та же, (m+1)-ая, ситуация. Впрочем в некоторых таблицах решений этот столбец может отсутствовать. Эта часть таблицы решений аналогична соответствующей части таблицы, определяющей какую-либо функцию обычным способом – в ней задаются комбинации значений аргументов функции, которым ставится в соответствие значения этой функции.
| Переменные/условия | Ситуации(комбинации значений) | ||||
| x1 | a[1,1] | a[1,2] | … | a[1,m] | * |
| x2 | a[2,1] | a[2,2] | … | a[2,m] | * |
| . . . | . . . | ||||
| xn | a[n,1] | a[n,2] | … | a[n,m] | * |
| s1 | u[1,1] | u[1,2] | … | u[1,m] | u[1,m+1] |
| s2 | u[2,1] | u[2,2] | … | u[2,m] | u[1,m+1] |
| . . . | . . . | ||||
| sk | u[k,1] | u[k,2] | … | u[k,m] | u[k,m+1] |
| Действия | Комбинации выполняемых действий | ||||
Табл. 12.1. Общая схема таблиц решений.
Нижняя часть таблицы решений определяет действия, которые требуется выполнить в той или иной ситуации, определяемой в верхней части таблицы решений. Она также состоит из нескольких (k) строк, каждая из которых связана с каким-либо одним конкретным действием, указанным в первом поле (столбце) этой строки. В остальных полях (столбцах) этой строки (т.е. для u[i, j], i=1, … m+1, j=1, … k) указывается, следует ли выполнять (u[i, j]= ‘+’) это действие в данной ситуации или не следует (u[i, j]= ‘-’). Таким образом, первый столбец нижней части этой таблицы представляет собой список обозначений действий, которые могут выполняться в той или иной ситуации, определяемой этой таблицей. В каждом следующем столбце этой части указывается комбинация действий, которые следует выполнить в ситуации, определяемой в том же столбце верхней части таблицы решений. Для ряда таблиц решений эти действия могут выполняться в произвольном порядке, но для некоторых таблиц решений этот порядок может быть предопределен, например, в порядке следования соответствующих строк в нижней части этой таблицы.
| Условия | Ситуации | |||||||
| Состояние светофора | Кр | Кр | Кр | Жел | Жел | Зел | Зел | Зел |
| T=Tкр | Нет | Нет | Да | * | * | * | * | * |
| T=Tжел | * | * | * | Нет | Да | * | * | * |
| T>Tзел | * | * | * | * | * | Нет | Да | Да |
| Появление привиле-гированной машины | Нет | Да | * | * | * | * | Нет | Да |
| Включить красный | - | - | - | - | - | - | + | - |
| Включить желтый | - | + | + | - | - | - | - | - |
| Включить зеленый | - | - | - | - | + | - | - | - |
| T:=0 | - | + | + | - | + | - | + | - |
| T:=T+1 | + | - | - | + | - | + | - | + |
| Освобож-дение пе-шеходной дорожки | - | - | - | + | - | - | - | - |
| Пропуск пешеходов | + | + | + | - | - | - | - | - |
| Пропуск машин | - | - | - | - | - | + | + | + |
| Действия | Комбинации выполняемых действий | |||||||
Рис. 12.2. Таблица решений “Светофор у пешеходной дорожки”.
Рассмотрим в качестве примера описание работы светофора у пешеходной дорожки. Переключение светофора в нормальных ситуациях должно производиться через фиксированное для каждого цвета число единиц времени (Tкр – для красного цвета, Tжел – для желтого, Tзел – для зеленого). У светофора имеется счетчик таких единиц. При переключении светофора в счетчике устанавливается 0. Работа светофора усложняется необходимостью пропускать привилегированные машины (на светофор о их появлении поступает специальный сигнал) с минимальной задержкой, но при обеспечении безопасности пешеходов. Приведенная на рис. 11.2 таблица решений описывает работу такого светофора и порядок движения у него в каждую единицу времени . Звездочка (*) в этой таблице означает произвольное значение соответствующего условия.
Поясним сказанное на примере спецификации процесса выбора символов из входного потока по следующим правилам:
а) если очередной символ является управляющим, то подать звуковой сигнал и вернуть код ошибки;
б) если буфер формируемой строки заполнен, то подать звуковой сигнал и вернуть код ошибки;
в) если очередной символ не находится в заданном диапазоне, (положим, от ‘а’ до ‘я’), то подать звуковой сигнал и вернуть код ошибки;
г) иначе поместить символ в буфер, увеличить значение счетчика выбранных символов и вернуть новое значение счетчика.
Таблица решений для данного примера приведена ниже ( таблица 1.1).
Здесь ‘Д’ означает ‘да’, ‘Н’ – ‘нет’, 1,2 – помеченные действия выполняются в указанном порядке.
Таблица 12.3 – ТР для функции выбора символов из входного потока
| Условия | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| С1 символ управляющий? | Д | Д | Д | Д | Н | Н | Н | Н |
| С2 буфер заполнен? | Д | Д | Н | Н | Д | Д | Н | Н |
| С3 символ от ‘a’ до ’я’? | Д | Н | Д | Н | Д | Н | Д | Н |
| Действия | ||||||||
| D1 подать звуковой сигнал | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
| D2 вернуть код ошибки (>0) | 2 | 2 | 2 | 2 | 2 | 2 | 2 | |
| D3 увеличить значение счетчика и вернуть его | 2 | |||||||
| D4 поместить символ в буфер | 1 |
Заметим, что если выполняется условие С1, то нет необходимости в проверке условий С2 и С3. Поэтому комбинации условий 1,2,3,4 могут быть заменены обобщающей комбинацией (Д, -, -), где ‘-’ означает любую из возможных альтернатив (в данном случае Д или Н).
Аналогично комбинации условий 5 и 6 могут быть заменены обобщающей комбинацией (Н, Д, -). Редуцированная таким образом ТР будет иметь вид таблицы 12.4.
Таблица 12.4 Редуцированная ТР
| Условия | 1 | 2 | 3 | 4 |
| С1 символ управляющий? | Д | Н | Н | Н |
| С2 буфер заполнен? | - | Д | Н | Н |
| С3 символ от ‘a’ до ’я’? | - | - | Д | Н |
| Действия | ||||
| D1 подать звуковой сигнал | 1 | 1 | 1 | |
| D2 вернуть код ошибки (>0) | 2 | 2 | 2 | |
| D3 увеличить значение счетчика и вернуть его | 2 | |||
| D4 поместить символ в буфер | 1 | |||
Похожие записи
No user прокомментировали сообщение
Оставить комментарий