
- •Среда проектирования алгоритмов татра-2 (версия 2) (руководство разработчика)
- •Аннотация
- •Содержание
- •Глава 1. Анализ процессов проектирования алгоритмов
- •1.1. Актуальность создания системы проектирования алгоритмов
- •1.2. Анализ форм представления алгоритмов
- •1.3. Анализ схемы проектирования алгоритмов
- •1.4. Документы описания алгоритмов
- •1.5. Состав среды проектирования алгоритмов татра-2
- •2. Состав среды проектирования алгоритмов татра-2
- •3. Алгоритм функционирования среды проектирования алгоритмов татра-2
- •Aist.Mnt
- •Srtatr00.Exe
- •Выход в операционную систему
- •Решение задачи
- •Закрытие файлов
- •Алгоритмов татра-2
- •Глава 2. Компоненты среды проектирования алгоритмов татра-2
- •2.1. Диалоговый компонент ввода алгоритмов
- •Подготовка рабочих переменных и полей
- •Алгоритм применения правил и выбора допустимого множества решений
- •Алгоритм оформления решений
- •Оформление решения заданного константами
- •Глава 3. Базы данных и знаний среды проектирования алгоритмов татра-2
- •3.1. База данных «Алгоритмы»
- •3.2. База данных «Текстовая форма алгоритмов»
- •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. Состав программного обеспечения
- •4. Организация базы данных системы программирования татра
- •5. Организация базы знаний системы программирования татра
7.3. Методика проектирования программы оформления решения
Программу оформления решения вызывает функция "resch", которая передает и принимает параметры из вызываемой программы. Поэтому программу оформления решения следует оформлять по определенным правилам (рис.9):
задать файлы-расширения
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
определить функцию как int main(int argc, char argv)
описать рабочие переменные (см. блок 1 на рис.9);
рекомендуется включить блок проверки аргументов командной строки (см. блок 2 на рис.9);
сформировать адреса аргументов командной строки (см. блок 3 на рис.9);
спроектировать тело функции (блок 4);
оформить выход из функции.
Состав аргументов, которые передаются в программу и принимаются из программы, следующий:
argv[1] - сегмент, в котором размещается массив результатов или массив описания объекта;
argv[2] - адрес в сегменте, с которого размещается массив результатов или массив описания объекта;
argv[3] - число столбцов массива результатов или массив описания объекта;
argv[4] - сегмент, в котором размещается информация о номере строки и столбца, анализируемых данных массива результатов или массив описания объекта;
argv[5] - адрес в сегменте, по которому размещается информация о номере строки, анализируемых данных массива результатов или массив описания объекта;
argv[6] - адрес в сегменте, по которому размещается информация о номере столбца, анализируемых данных массива результатов или массив описания объекта;
argv[7] - номер строки массива результатов или массив описания объекта, в который должно быть записано значение результата;
argv[8] - номер столбца массива результатов или массив описания объекта, в который должно быть записано значение результата.
При проектировании выхода из вызываемой функции следует иметь ввиду, что функция "resch" принимает и обрабатывает код возврата и возвращаемое значение функции вычисления признака. Поэтому при разработке программы возвращаемое значение должно формироваться по правилам:
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
int main( int argc, char **argv ){
/* БЛОК 1: описание рабочих переменных */
int ks, i, j, RezNum_String, RezNum_Stolb;
unsigned Seg_GreatArray, Offs_GreatArray, Seg_CJK, Offs_CJ, Offs_CK;
long far *GreatArray; /* массив описания объекта */
int far *Num_Stolb, /* номеp просматриваемого столбца */
*Num_String; /* номер просматриваемой строки */
/* БЛОК 2: проверка аргументов командной строки */
if( argc < 9 ){
printf("\n\a Недостаточно аргументов в командной строке!");
return -2;
}
if( argc > 9 )
printf("\n\a Слишком много аргументов ! Возможна ошибка!");
/*БЛОК 3: формирование адресов из аргументов командной строки*/
sscanf( argv[1], "%x", &Seg_GreatArray);
sscanf( argv[2], "%x", &Offs_GreatArray);
sscanf( argv[4], "%x", &Seg_CJK);
sscanf( argv[5], "%x", &Offs_CJ);
sscanf( argv[6], "%x", &Offs_CK);
GreatArray = (long far *)(MK_FP( Seg_GreatArray, Offs_GreatArray));
Num_String = (int far *)(MK_FP( Seg_CJK, Offs_CJ));
Num_Stolb = (int far *)(MK_FP( Seg_CJK, Offs_CK));
ks = atoi(argv[3]); /* количество столбцов */
RezNum_String = atoi(argv[7]); /* Результирующий номер строки */
RezNum_Stolb = atoi(argv[8]); /* Результирующий номер столбца */
/*------ БЛОК 4: операторы тело функции --------------*/
<тело функции>
return 1;
}
Рис. 9. Состав программы оформления решения
возвращаемое значение >= 0 несет информацию о нормальном завершении программы;
возвращаемое значение < 0 несет информацию об аварийном завершении программы.