
- •Глава 1. Анализ процессов проектирования алгоритмов
- •1.1. Актуальность создания системы проектирования алгоритмов
- •1.2. Анализ форм представления алгоритмов
- •1.3. Анализ процесса проектирования алгоритмов
- •1.4. Документы описания алгоритма
- •1.5. Определение системы программирования татра
- •Раздел 2. Языки описания алгоритмов
- •4.1. Язык заполнения сводной документа описания признаков
- •4.2. Язык описания правил выбора решений (язык описания таблицы предикатов)
- •4.3. Язык описания решений задачи
- •5. Дополнительные возможности описания алгоритмов
- •5.1. Оптимизация объема памяти, занимаемой алгоритмом (язык описания таблицы предикатов)
- •5.2. Язык заполнения таблицы признаков
- •5.3. Язык описания правил выбора решений без ссылки на сводный документ описания признакового пространства
- •6. Организация ввода алгоритмов в базу данных
- •6.1. Ввод данных в пакетном режиме
- •Int filtr(long n, long a, short l, short *I, short *j, long *m, int RazM, long *k, int RazK) ,
- •Int predi( long n, long k, long m, int RazM, long r, int RazM) ,
- •Int resch(long n, short f, long a, short l, short I, short j, long m, int RazM) ,
- •7.2. Методика проектирования программы вычисления признаков
- •7.3. Методика проектирования программы оформления решения
- •8. Организация хранения алгоритмов в базе данных
- •7.2. Организация информационных массивов в системе программирования tatra
- •8.1. Структура массива мо
- •8. Состав программного обеспечения
5.2. Язык заполнения таблицы признаков
В процессе проектирования программных систем часто возникают следующие ситуации:
во-первых, необходимость изменения расположения признаков или добавления новых признаков в поле описания объекта. После выполнения такой операции следует перетранслировать все спроектированные на этот момент алгоритмы, т.к. необходимо согласовать новое расположение признаков с правилами построения кортежа для этих алгоритмов. Но при этом нет необходимости выполнять трансляцию правил выбора решений, т.к. они не меняются;
во-вторых, несколько логически связанных алгоритмов могут потребовать одинакового описания признакового пространства для своей реализации. Поэтому удобно задать один кортеж признаков, который используется всеми логически связанными алгоритмами;
в-третьих, в процессе проектирования программных систем отрабатывается состав признакового пространства методом проб и ошибок при разработке конкретных алгоритмов. В этом случае неудобно сразу вводить новые признаки в сводный документ описания признаков;
в-четвертых, разработчик может создавать локальную систему, в которой по тем или иным причинам нецелесообразно формировать сводный документ описания признакового пространства.
Учитывая описанные ситуации, в системе программирования ТАТРА введены возможности задавать и формировать описание признакового пространства во внутренней форме независимо от правил принятия решений. Описание пространства признаков в этом случае выполняется с помощью документа "Таблица признаков" (рис.7), который оформляется по оригинальным правилам, а именно:
<таблица признаков>::= <справка><описание признаков>/<справка> <описание признаков>->(<перечисление имен логически связанных предикатов>)/<имя алгоритма><описание признаков>/ <имя алгоритма><описание признаков>->(<перечисление имен логически связанных предикатов>)/
Первые два способа задания признакового пространства алгоритмов применяются при задании документа описания признакового пространства прикладной задачи. Третий и четвертый способы - при отсутствии описания признакового пространства проблемной задачи.
<справка>::= <имя системы><имя алгоритма><имя алгоритма> <имя системы>
<имя системы>::= C=<текстовая константа, не превышающая 8 символов>;
<имя алгоритма>::= А=<текстовая константа, не превышающая 8 символов>;
<описание признаков>::= <описание признака><описание признака> <описание признаков>
<описание признака>::= <имя признака><имя признака><разбиение признака> <минимальное значение признака> <максимальное значение признака><адрес расположения признака><адрес расположения признака> <имя программы вычисления признака> <адрес расположения признака><разбиение признака> <минимальное значение признака> <максимальное значение признака> <адрес расположения признака> <разбиение признака> <минимальное значение признака> <максимальное значение признака>
Таблица 1. Определение граничных значений признаков
-
Обозначение в таблице
Граничное значение
= А
А
# А
А
< А
А
<= А
А + Р
> А
А + Р
>= А
А
[А, В]
А, В+Р
(А, В)
А+Р, В
[А,В)
А, В
(А,В]
А + Р, В + Р
= А, В, ... , С
min{А, В, ..., С}
# А, В, ... , С
max{А, В, ..., С}
Рис.7. Документ "Таблица признаков"
<имя программы вычисления признака>
Первые два способа описания признака применяются при задании сводного документа описания признакового пространства прикладной задачи. Четыре последних способа - при отсутствии сводного документа описания признакового пространства прикладной задачи. Разбиение, минимальное и максимальное значения признака задаются в случае оптимизации объема памяти, занимаемой предикатом.
<имя признака>::= <текстовая константа, не превышающая 8 сим волов>;
<разбиение признака>::= Е=<действительная константа>;Е=<целая константа>;
Разбиение - это положительное число.
<минимальное значение признака>::= А=<действительная константа>; А=<целая константа>;
<максимальное значение признака> ::= B=<действительная константа>; B=<целая константа>;
<адрес расположения признака>::= <номер строки><номер столбца> <номер столбца><номер строки>
<номер строки>::= C=<целое без знака>;Ц=<целое без знака>;
<номер столбца>::= T=<целое без знака>;И=<целое без знака>;
Правила задания номеров строки и столбца аналогичны соответствующим правилам в языке сводного документа описания признакового пространства решения прикладной задачи.
<имя программы вычисления признака>::= П=<текстовая константа, не превышающая 6 символов>;
<перечисление имен логически связанных предикатов>::= <имя алгоритма> < имя алгоритма><перечисление имен логически связанных предикатов>
ЗАМЕЧАНИЯ:
Если признаковое пространство с задаваемым именем не было описано ранее и новое описание не содержит разбиения, то во внутренней форме описания признакового пространства ставится признак незавершенности описания и проводится контроль по числу признаков предиката с соответствующим именем или предикатов с заданными именами (если они есть в базе данных).
Если признаковое пространство с задаваемым именем не было описано ранее, а новое описание задано полностью, то предикат с соответствующим именем или предикаты с заданными именами исключаются из базы данных (если они есть в базе данных).
Если признаковое пространство с задаваемым именем ранее было сформировано полностью и новое описание признакового пространства не содержит разбиения, то проводится контроль старого описания и предиката с соответствующим именем или предикатов с заданными именами по числу признаков (если они есть в базе данных ).
Если признаковое пространство с задаваемым именем ранее было сформировано полностью и новое описание признакового пространства содержит разбиения, то предикат с соответствующим именем или предикаты с заданными именами исключаются из базы данных (если они есть в базе данных).
Если признаковое пространство формируется полностью и до этого существовало неполное описание с разбиением признаков, то во внутренней форме описания признакового пространства затирается признак незавершенности описания и предикат с соответствующим именем или предикаты с заданными именами исключаются из базы данных (если они есть в базе данных).
Если признаковое пространство формируется без разбиения и до этого существовало неполное описание с разбиением признаков, то во внутренней форме описания признакового пространства затирается признак незавершенности описания и проводится контроль старого описания и предиката с соответствующим именем или предикатов с заданными именами по числу признаков (если они есть в базе данных).