Инструментальные средства системы Miracle,
рабочее место разработчика. (часть II)
  Конструктор алгоритмов

Конструктор алгоритмов
Назначение данной программы

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

Методика

  Алгоритм является моделью, в рамках которой вся информация обрабатывается поэтапно, сверху вниз. При этом каждый элемент в модели имеет свой индекс расположенный слева от графического представления элемента. Индекс начинается с буквы А (латинской). Индекс каждого элемента алгоритма является его основным идентификатором, использование которого позволяет организовывать взаимодействие всей информации в рамках алгоритма. Так, если данные были введены через специализированный элемент, который имел индекс В, то можно организовать использование этих значений в нужных элементах, указав доступ к данным по его индексу (в данном случае - индексу В). Так например, находясь в элементе позволяющем рассчитывать информацию и указав следующее выражение - В/100, вы задаете математическое действие с данными, находящимися в элементе В. Алгоритм, выполняющий данный шаг, произведет выборку данных из элемента под индексом В и произведет их деление на 100, а полученное значение будет присвоено элементу, в рамках которого был произведен расчет. Например, элемент С. Но для того, чтобы алгоритм получил конечное значение необходимо в каком-либо элементе расчета указать явную ссылку на передачу полученной информации в элемент - конец алгоритма. Для этого воспользуйтесь кнопкой “присваивания”, располагающуюся в диалоговом окне задания свойств элемента расчет. В данном случае алгоритм, пройдя по каждому элементу модели, будет производить следующие действия, а именно в элементе В произведет ввод данных, в элементе С - произведет расчет, результат которого будет храниться как в самом элементе С (по умолчанию всегда), а так же полученный результат будет передан в элемент - конец алгоритма. Элемент - расчет, является основным элементом, позволяющим присваивать значения указанному элементу алгоритма, но и использовать различные математические функции. Используя данную методику, возможно строить взаимодействие всей информации поступающей в алгоритм для достижения намеченных вами результатов

Горячие клавиши и действия к ним

Действие Аналог в меню Горячие клавиши
Выход из программы конструктора алгоритмовФайл|ВыходAlt+F4

Работа с Конструктором алгоритмов
Создать новый алгоритм

  Создание нового алгоритма осуществляется активизацией команды - создать новый алгоритм. По активизации которой вам будет предложено выбрать тип данных, в котором будет получен окончательный результат.
  Тип данных: текст, число, дата. В диалоговом окне - заголовок алгоритма, также будет указано дата создания и последняя дата редактирования этого алгоритма, что при последующих модификациях будет позволять отслеживать дату последней модификации, а также возможно будет ввести комментарии (системное имя) к алгоритму. По умолчанию каждый алгоритм имеет комментарий “новый алгоритм-0”.

Рисунок 14 Диалоговое окно описания алгоритма

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

  При необходимости изменить параметры заголовка алгоритма возможно через команду редактирования начального элемента алгоритма.
  Каждый новый алгоритм предоставляет “базовый алгоритм”, состоящий из элементарного набора элементов, таких как: начало алгоритма, ввод данных, расчет, который по своей структуре имеет значение, указывающее на то, что алгоритм заканчивается теми данными, которые введены в элементе ввода. Оканчивается алгоритм, элементом - конец алгоритма. Все это составляет - базовый алгоритм.

Рисунок 15 - Базовый алгоритм

При необходимости все элементы могут быть удалены. Однако следует помнить, что элемент начала и конца алгоритма удалены быть не могут.

Открытие имеющихся алгоритмов

  При необходимости вы можете всегда отредактировать уже имеющейся алгоритм. Для этого необходимо активизировать команду - открытие файла, который должен иметь расширение *.alg, через стандартное окно - открытия файла. Выбранный алгоритм располагается на рабочей поверхности окна проекта алгоритма.

Закрыть

  Каждый алгоритм, возможно, закрыть, используя различные способы. Такой как, активизация команды - закрытия файла “алгоритма” через системное меню окна проекта. Либо по команде закрыть окно с алгоритмом “Close” или активизацией горячей клавиши Alt+F4. При этом следует учитывать, что если какие-нибудь изменения были внесены в структуру алгоритма и вы не сохранили их перед закрытием, вам будет предложено это осуществить перед тем, как закрыть измененный файл алгоритма.

Сохранить

  Активизация команды - сохранить, позволяет сохранить файл алгоритма после внесения в него каких-либо модификаций. При этом следует помнить, что если файл только что создан и не имеет системного имени, то при активизации данной команды вам будет предложено ввести имя, под которым будет сохранен вновь созданный алгоритм.

Сохранить как ...

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

Выход из конструктора алгоритмов

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

Приоритеты операций

1.()  
2.*/  
3.+-  
4.>>=<<=
5.=<>  
6.&ANDИ 
7.|ORИЛИ 

Арифметические операторы

1.+
2.-
3.*
4./

Реляционные операторы

1.<
2.<=
3.=
4.<>
5.>
6.>=

Логические операторы

1.& ANDИобъединение по И (+)
2.| ORИЛИобъединение по ИЛИ (*)

Элементы алгоритма

  Элемент алгоритма представляет собой основу для построения математической модели обработки информации. Тип элементов четко определен, но их количество в алгоритме ограничено только вашими нуждами для достижения поставленной цели. При этом каждый элемент имеет собственные настройки для выполнения действий в рамках модели алгоритма.

Элемент “начало алгоритма”

  Элемент “начало алгоритма” всегда находится в самом начале алгоритма и имеет индекс А. Он является заголовком вновь образованного алгоритма и несет в себе описание алгоритма: имя автора, дату создания, дату последней модификации, а так же комментарии к алгоритму. Тип “начало алгоритма” определяется во время его создания и не может быть изменен. Но это не говорит о том, что алгоритм не позволяет обрабатывать или иметь для обработки разнотипные данные такие как: число, текст или дату. Но в любом случае результат работы алгоритма должен быть закончен только тем типом данных, который был определен для него в самом начале моделирования.

Элемент “ввод” алгоритма

  Элемент “ввод” алгоритма является тем связующим звеном, с помощью которого в объект алгоритма может поступать необходимая информация.
  В дальнейшем, после регистрации разработанного объекта алгоритма на сервере системы, при его использовании в качестве (правила), к какой-либо характеристике объекта базы данных, в момент попытки записи информации в нее, будет применен используемый алгоритм, который в свою очередь предоставит механизм по передаче данных в него через имеющиеся элементы “ввода”, и только результат вычислений будет передан в характеристику объекта базы данных (в поле таблицы) для хранения.
  Элементы ввода данных в модели алгоритма служат для создания механизма передачи какой-либо информации из вне, в тело объекта алгоритма.

Элемент “расчет”

  Элемент “расчет” является основным механизмом, с помощью которого возможно описывать метод расчета какой-либо информации.

Синтаксис элемента “расчета”

  Синтаксис элемента “расчета” позволяет строить сложные выражения с использованием основных математических выражений, таких как: плюс, минус, умножение, деление, использование скобок в выражениях, вложенные скобки, а так же позволяет использовать функции. При этом следует заметить, что элемент явного присвоения необходим только для, того чтобы полученные результаты в элементе “расчеты” можно было присвоить другим элементам модели алгоритма. Например, для передачи полученных результатов в элемент “конец” алгоритма. Однако следует заметить, что не смотря на явное присвоение результата другим элементам в алгоритме, полученные результаты все равно будут так же сохранены в рассчитанных элементах.
  Для описания выражений возможно использовать данные из имеющихся элементов, указывая имена их ячеек. Например: А, А+В. Или непосредственно указывать необходимые значения. Например: 50, А+50 и т.д. Также, для описания необходимых действий над данными возможно использовать следующие операторы:

  1. () - скобки;
  2. / - деление;
  3. * - умножение;
  4. + и - - сложение и вычитание;

  Например: ((50+C)/(A+D))*2, результат вычислений будет присвоен указанной ячейки, (а также, результат будет присвоен той же ячейке, в которой произведутся описанные действия). Вычисления будут происходить по следующей схеме: число 50 сложится с числом находящимся на момент вычисления в ячейке с именем С, далее от значения в ячейке А будет вычтено значение в ячейке D, затем первый результат будет разделен на второй, и полученное значение будет умножено на 2.

Особо следует подчеркнуть, что не определив явной передачи результатов расчета в элемент “конец алгоритма”, будет не возможно извлечь расчетные данные из алгоритма.

Элемент “условие”

  Элемент “условие” является ключевым механизмом, позволяющим организовывать разветвленную систему обработки информации, основанную на анализе состояния полученных данных. Синтаксис задания “условий” приведен в специальной таблице. Следует заметить, что само условие может иметь достаточно сложное выражение. Во время описания элемента “условие” задается синтаксис ввода условия, по которому будут произведены переходы по условию “да”. Т.е. если условие в элементе получает значение истинно. Если условие ложно, то будет выполняться следующий элемент после элемента условия. При этом, автоматически создается элемент перехода по каждому элементу условия. Этот элемент может выступать в качестве самостоятельного элемента, настройка которого позволяет указать явный индекс “перехода”, следующий непосредственно после элемента “условие”.

Синтаксис элемента “условие”

  В выражении элемента “условия”, возможно использовать следующие операторы:

  1. = равенство;
  2. > больше;
  3. < меньше;
  4. <> не равно;
  5. => больше или равно;
  6. =< меньше или равно;
  7. и, and логическое и;
  8. или, or логическое или.

  Например: A+B/2>=80 или (C-7)*6<>20. Данное выражение будет “истинно”, если значение ячейки А сложенное со значением ячейки В, деленное на 2 будет больше или равно 80, или значение ячейки С уменьшенное на 7 и умноженное на 6 не равно 20. В любом другом случае выражение будет “ложным”, т.е. после вычисления выражения в элементе “условие” и получением результата “ложно” следующим местом выполнения алгоритма будет элемент следующий за элементом “условие”. В ином случае будет произведена активизация элемента “перехода”.

Функции системы

  Функция не представлена специализированным методом. Доступ к ней возможно осуществлять только через ее описание в рамках элемента расчет. Использование функций позволяет применять достаточно сложные математические методы обработки информации в рамках вашего алгоритма. Все доступные функции, возможно, просмотреть через окно Справки.

Работа с типами

testfortype Определяет тип ячейки или результата вычислений
	Описание:
Определяет тип ячейки или результата вычислений
Возвращает:
	0- тип неизвестен
	1- число
	2- строка
	3- время 
Существует вероятность, что время будет 1 типом если оно было 
переведено в секунды
Формат:
<число>testfortype(<число><или ячейка>)
Пример:
testfortype(date("10-10-1989"))
	Результат: 3

Работа с числами

stringПереводит число в строку
Формат:
	<строка> string(<число>)
Пример:
	string(123456.123)
	Тип элемента строка, если строка задается непосредственно,
	то она должна браться в кавычки
		
numtostrПереводит число в строку по указанному шаблону
Формат:
	<строка> numtostr(<число 1>,<число 2>,<число 3>,<число 4>)
	<число 1> : Переводимое число
	<число 2> : Количество знаков до запятой
	<число 3> : Количество знаков после запятой
	<число 4> : 1 -с ведущими нулями 0 - без ведущих нулей
Пример:
	numtostr(123456.123,7,0,1)	
roundОкругляет указанное число
Описание:
	Округляет указанное число. Если дробная часть больше или
равно .5 
	округление происходит вверх, а если меньше, то вниз.
Формат:
	<число> round(<число>)
Пример:
	До		455.56
	round(455.56)
	После	456.0
roundupОкругляет указанное число вверх
Формат:
	<число> roundup(<число>)
Пример:
	До		78.2
	roundup(78.2)
	После	79.0	
rounddownОкругляет указанное число вниз
Формат:
	<число>rounddown(<число>)
Пример:
	До		78.56
	rounddown(78.56)
	После	78.0	
quotientИзвлекает целую часть из числа
Формат:
	<число>quotient(<число>)
Пример:
	До		45.23
	quotient(45.23)
	После	45.00
rIainderИзвлекает дробную часть из числа
Формат:
	<число>rIainder(<число>)
Пример:
	До		45.23
	rIainder(45.23)
	После	0.23	
absВзять число по модулю
Формат:
	<число>abs(<число>)
Пример:
	До		-45.23
	abs(45.23)
	После	45.23
cosКосинус
Формат:
	<число>cos(<число>)
Пример:
	cos(45)
coshГиперболический косинус
Формат:
	<число>cosh(<число>)
Пример:
	cosh(45)
arccosАрккосинус
Формат:
	<число>arccos(<число>)
Пример:
	arccos(0.45)
sinСинус
Формат:
	<число>sin(<число>)
Пример:
	sin(45)
sinhГиперболический синус
Формат:
	<число>sinh(<число>)
Пример:
	sinh(45)
arcsinАрксинус
Формат:
	<число>arcsin(<число>)
Пример:
	arcsin(0.45)
tanТангенс
Формат:
	<число>tan(<число>)
Пример:
	tan(0.45)
tanhГиперболический тангенс
Формат:
	<число>tanh(<число>)
Пример:
	tanh(0.45)
arctanАрктангенс
Формат:
	<число>arctan(<число>)
Пример:
	arctan(0.45)
logЛогарифм
Формат:
	<число>log(<число>)
Пример:
	log(0.45)
logtenДесятичный логарифм
Формат:
	<число>logten(<число>)
Пример:
	logten(45)	
expЭкспонента
Формат:
	<число>exp(<число>)
Пример:
	exp(0.45)	
frtoclПереводит F° в C°
Формат:
	<число>frtocl(<число>)
Пример:
	frtocl(212)	
cltofrПереводит C° в F°
Формат:
	<число>cltofr(<число>)
Пример:
	cltofr(100)	
sqrtКвадратный корень
Формат:
	<число> sqrt (<число>)
Пример:
	sqrt(45)
modВычисляет модуль x от y, остаток от x/y.
Формат:
	<число>mod(<число X>,<число Y>)
Пример:
	mod(5,2)
hypotВычисляет гипотенузу правильного треугольника.
Формат:
	<число>hypot(<число X>,<число Y>)
Пример:
	hypot(5,2)
powВычисляет степень X от Y
Формат:
	<число>pow(<число X>,<число Y>)
Пример:
	pow(5,2)

Работа с текстом

numberПереводит строку в число
Формат:
	<число> number(<строка>)
Пример:
	number("12345.665")
appendДобавляет в строку другую строку с указанным смещением в добавляемой строке
Формат:
	<строка>append(<строка 1>,<строка 2>,<число>)
	<строка 1>	Куда добавляем
	<строка 2>	Что добавляем
	<число>	Смещение в <строке 2>
Пример:
	append("abcdef","qqqqqqghijk",6)
Результат:	abcdefghijk
compareСравнивает две строки.
Описание:
   Сравнивает две строки. Возвращаемые значения:
    0	Если строки равны
    <0	Если <строка 1> меньше <строки 2>
    >0	Если <строка 1> больше <строки 2>
   Формат:
     <число> compare(<строка 1>,<строка 2>,<число>)
     <строка 1>	Первая строка
     <строка 2>	Вторая строка
     <число>	0 - регистрозависимое сравнение
             1 - регистронезависимое сравнение 
     Пример:
          compare("abcdef","qqqqqqghijk",1)
findПроизводит поиск указанной подстроки в указанной строке
Описание:
	Производит поиск указанной подстроки в указанной строке. 
	Если подстрока не найдена, то результатом будет -1, а если 
	найдена, то результатом будет смещение искомой подстроки 
	в строке.
	Формат:
		<число> find(<строка 1>,<строка 2>,<число>)
		<строка 1>  Cтрока
		<строка 2>  Подстрока
		<число>     0 - регистрозависимое сравнение
                 1 - регистронезависимое сравнение 
	Пример:
		find("abcdef","cd",0)
toupperПереводит строку в верхний регистр
Формат:
	<строка> toupper(<строка>)
Пример:
	toupper("abcdef")
tolowerПереводит строку в нижний регистр
Формат:
	<строка> tolower(<строка>)
Пример:
	tolower("ABCDEF")
rIoveУдаляет из строки указанное количество символов
Формат:
	<строка> rIove(<строка>,<число 1>,<число 2>)
	<строка>	Строка из которой надо удалить символы
	<число 1>	С какой позиции надо начать удалять символы
	<число 2>	Сколько символов надо удалить
Пример:
	rIove("abcdef",2,1)	
lengthВозвращает длину строки
Формат:
	<число> length(<строка>)
Пример:
	length("abcdef")
insertВставляет в строку другую строку с указанной позиции
Формат:
	<строка> insert(<строка 1>,<строка 2>,<число>)
	<строка 1>	Строка куда надо вставить подстроку
	<строка 2>	Подстрока
	<число>	Начиная с какой позиции в <строке 1>
Пример:
	insert("abef","cd",2)
getcharВозвращает символ из указанной позиции в указанной строке
Формат:
	<строка> getchar(<строка>,<число>)
	<строка>	Строка из которой берем символ
	<число>	Позиция нужного символа
Пример:
	getchar("abcdef",2)
getcharcodeВозвращает код символа из указанной позиции в указанной строке
Формат:
	<число> getcharcode(<строка>,<число>)
	<строка>	Строка из которой берем символ
	<число>	Позиция нужного символа
Пример:
	getcharcode("abcdef",2)
Примечание:
	Узнать код символа можно запустив стандартную программу charmap.exe
setcharЗаменяет символ в указанной позиции на указанный символ
Формат:
	<строка> setchar(<строка 1>,<строка 2>,<число>)
	<строка 1>	Строка где надо заменить символ
	<строка 2>	Символ
	<число>	Позиция заменяемого символа
Пример:
	setchar("abXdef","c",2)
setcharcodeЗаменяет символ в указанной позиции на символ с указанным кодом
Формат:
	<строка> setcharcode(<строка>,<число 1>,<число 2>)
	<строка 1>	Строка где надо заменить символ
	<число 1>	Код символа
	<число 2>	Позиция заменяемого символа
Пример:
	setcharcode("abXdef",99,2)
gettoken Выделяет из строки указанный токен(подстроку)
Описание:
Выделяет из строки указанный токен(подстроку)
Формат:
<строка> gettoken(<строка 1>,<число>,<строка 2>)
		<строка 1>	Cтрока из которой выделяется токен
		<число>	Номрер токена
		<строка 2>	Возможные разделители
Пример:
gettoken("29-09-99",2,"-/:")
getsubstring Выделяет из строки подстроку
Описание:
Выделяет из строки подстроку
Формат:
<строка> getsubstring(<строка>,<число 1>,<число 2>)
		<строка>	Cтрока из которой выделяется подстрока
		<число 1>	Номер позиции (начиная с нуля) начала
подстроки
		<число 2>	Длинна подстроки
Пример:
getsubstring("29-09-99",3,2)
strrev Переворачивает строку
Описание:
Переворачивает строку
Формат:
<строка> getsubstring(<строка>)
<строка> Исходная строка
Пример:
	strrev("Привет")  
Результат:
	тевирП
alltrim Удаляет из строки все ведущие и завершающие пробелы
Описание:
Удаляет из строки все ведущие и завершающие пробелы
Формат:
<строка> alltrim(<строка>)
<строка> Исходная строка
Пример:
	alltrim("     Проверка     ")  
Результат:
	Проверка

Работа с датой

dateПереводит строку в дату
Описание:
	Переводит строку в дату. Формат переводимой строки 
	должен иметь один из указанных ниже видов:
	 1. "дд-ее-гггг чч:мм:сс"
	        ввод даты и времени
	 2. "дд-ее-гггг"	
	       ввод только даты, время будет 00:00:00
	 3. "чч:мм:сс"	
	       ввод только времени, дата будет текущая
Формат:
	<дата> date(<строка>)
Пример:
	date("31-01-1973 11:10:15")
	тип дата (число и время)
daysПереводит указанное число дней в соответствующие количество секунд
Формат:
	<число> days(<число>)
Пример:
	До		10-5-1996 00:00:00
	date("10-5-1996")+days(10)
	После	20-5-1996 00:00:00
todateПереводит указанное число секунд в дату
Формат:
	<дата> todate(<число>)
Пример:
	todate(12345678)	
secondsПереводит указанную дату в секунды
Формат:
	<число> seconds(<дата>)
Пример:
	seconds(date("12-5-1998"))
nowВозвращает текущую дату с заданным смещением в секундах
Формат:
	<дата>now(<число>)
Пример:
	now(0)	
resettimeСбрасывает время в указанной дате в ноль
Формат:
	<дата>resettime(<дата>)
Пример:
	resettime(now(0))
hourВозвращает значение часов в указанной дате
Формат:
	<число>hour(<дата>)
Пример:
	hour(now(0))
minuteВозвращает значение минут в указанной дате
Формат:
	<число>minute(<дата>)
Пример:
	minute(now(0))
secondВозвращает значение секунд в указанной дате
Формат:
	<число>second(<дата>)
Пример:
	second(now(0))
timezoneВозвращает число секунд смещения от Гринвича
Формат:
	<число>timezone(0)
Пример:
	timezone(0)
dayВозвращает значение дня в указанной дате
Формат:
	<число>day(<дата>)
Пример:
	day(now(0))
monthВозвращает значение месяца в указанной дате
Формат:
	<число>month(<дата>)
Пример:
	year
yearВозвращает значение года в указанной дате
Формат:
	<число>year(<дата>)
Пример:
	year(now(0))
weekdayВозвращает номер дня недели в указанной дате
Описание:
	Возвращает номер дня недели в указанной дате. 
	1-Понедельник...7-Воскресенье
Формат:
	<число>weekday(<дата>)
Пример:
	weekday(now(0))	
weekdaynameВозвращает название дня недели в указанной дате
Формат:
	<строка>weekdayname(<дата>,<число>)
Вторым параметром задается режим вывода:
	2-название дня из 2х символов (Пн,Вт...)
	3-название дня из 3х символов (Пон,Втр...)
	4-полное название дня на английском языке
Все остальные значения означают, что надо вернуть 
полное название дня недели на русском языке
Пример:
	weekdayname(now(0),0)
monthnameВозвращает название месяца в указанной дате
Формат:
	<строка>monthname(<дата>,<число>)
Вторым параметром задается режим вывода:
	2-название месяца из 
	  2х символов (Ян,Фв...)
	3-название месяца из 
	  3х символов (Янв,Фев...)
	4-полное название месяца на 
	  английском языке
Все остальные значения означают, что надо 
вернуть полное название месяца на русском языке
Пример:
	monthname(now(0),0)
daysinyearВозвращает число дней в указанном году
Формат:
	<число>daysinyear(<число>)
Пример:
	daysinyear(year(now(0)))
daysinmonth Возвращает число дней в указанном месяце
Описание:
Возвращает число дней в указанном месяце
Формат:
<число>daysinyear(<число>)
Пример:
daysinmonth(now(0))
dateisvalidПроверяет указанную дату на правильность
Описание:
	Проверяет указанную дату на правильность. 
	Возвращает 1 если дата корректна и 0 если 
	дата не корректна
Формат:
	<число>dateisvalid(<дата>)
Пример:
	dateisvalid(date("29-02-1997"))
totimeПереводит число секунд в строку формата времени
Формат:
	<строка>type_strtotime(<число>type_numb)
Пример:
	totimetotime(datedate("19:00:00")-nownow(0))

Элемент “конец алгоритма”

  Элемент “конец алгоритма” является последним элементом в любом созданном вами алгоритме. Именно данные, находящиеся в этом элементе могут быть в дальнейшем получены из алгоритма. Т.е. содержимое данной ячейки и будет итогом расчета построенной вами математической модели - алгоритма. Следовательно, если вы не присвоили какому-либо элементу “расчет” передать данные в “конец алгоритма”, вы не сможете воспользоваться полученными результатами. В любом случае расчет, проведен в рамках алгоритма, должен явно передан в последний элемент - “конец алгоритма”. Как любой объект системы Miracle, алгоритм является одним из базовых объектов, с которым возможно организовать связь по данным. А именно, передавать информацию в алгоритм и получать из него готовые значения. Количество передаваемых значений определяется количеством элементов “ввода” в алгоритме. Полученный результат может быть получен только из элемента “конец алгоритма”, т.е. объект алгоритм выдает только одно значение.
  При этом использование алгоритма в качестве самостоятельного объекта позволяет не только легко производить его модификацию, без “переделки” уже работающих решений, но и повторно использовать апробированные методы в новых компонентах приложения.

Работа с конструктором алгоритмов

  Далее будет описаны основные подходы по работе с программой - конструктор алгоритмов и описаны возможные методы настройки тех или иных ее параметров.

“Базовый” алгоритм

  При создании нового алгоритма предоставляется так называемый, “базовый” алгоритм, что является минимально необходимым логическим набором для проведения элементарных действий с данными. “Базовый” алгоритм состоит из четырех элементов:

  1. начало алгоритма;
  2. ввод данных;
  3. элемент расчета;
  4. конец алгоритма.

   При этом, по умолчанию, третий элемент - элемент расчета необходим для того, чтобы явно указать передачу введенных данных в элементе ввода на конечный элемент алгоритма. Тем самым “базовый” алгоритм позволяет осуществлять передачу данных с алгоритма получая их из вне, без какой-либо дополнительной математической обработки.

Окно формирования алгоритма

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

Структура алгоритма

  Структура математического алгоритма состоит из определенного вами набора элементов, (“базовый” алгоритм содержит 4 элемента), где каждый элемент занимает одну строчку. В начале строки стоит индекс элемента, который может изменяться в зависимости от добавления новых элементов. Далее, в строке, идет пиктограмма элемента алгоритма, а за ней может следовать до 3-х дополнительных идентификаторов, отражающих комментарии системы, данные в рамках элемента и комментарий пользователя.

Настройка рабочей поверхности окна
Цвет фона ...

  Используя команду для изменения цвета фона окна алгоритма, вы можете задать собственный цвет фона, путем выбора необходимой гаммы на панели основных цветов. Выбор цвета осуществляется методом “указать - щелкнуть”, т.е. для выбора цвета необходимо установить курсор на необходимый вам цвет и нажать правую клавишу мыши. Либо использовать альтернативный подход перемещать выбор на необходимый цвет с использованием клавиш курсора и подтверждать выбор нажатием клавиши пробел . Подтверждение окончания выбора осуществляется через выход из палитры цветов клавишей ОК.

Цвет текста ...

  Изменение цвета текста в окне алгоритма осуществляется аналогично способу установки цвета фона, а именно через выбор необходимого цвета на панели цветов.

Цвет выбора ...

  Это цвет, которым будет отображаться выбранная строка элемента алгоритма. Настройка цвета выбора осуществляется аналогичным способом выбора цвета фона или цвета текста.

Включение, выключение комментариев системы

  Как говорилось ранее, пользователь может отображать в окне алгоритма комментарии по каждому элементу. Как правило, комментарии системы отображают суть каждого элемента алгоритма, и служат разработчику системной подсказкой, описывающей сущность типа используемого элемента алгоритма.

Включение, выключение комментариев пользователя

  Комментарии пользователя могут быть присвоены каждому элементу алгоритма при его создании, модификации. Он в свою очередь необходим для того, чтобы помочь в дальнейшем разобраться в построенной модели алгоритма. Используя переключатель включения/выключения отображения комментариев пользователя, возможно, настроить окно алгоритма таким образом, чтобы эти комментарии все время отображались по каждому элементу алгоритма. Только один элемент алгоритма не может содержать пользовательских комментариев это элемент конец алгоритма.

Включение, выключение показа данных

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

Редактирование выбранного элемента

  Редактирование любого элемента, возможно, осуществив позиционирование курсора на строчку с необходимым элементом и активизировать функцию редактировать. Доступ к которому возможно осуществить через меню системы - Элемент|Редактировать или по выбору данной команды контекстного меню, активизация которого осуществляется нажатием правой клавиши мыши или же стандартным методом - двойным нажатием в любом месте строчки выбранного элемента, а также через специализированную кнопку на панели инструментов. Редактирование элементов алгоритмов осуществляется через специализированные окна, являющиеся уникальными для каждого типа элементов. Только один из элементов - конец алгоритма не может быть отредактирован.

Удаление элемента

  Удаление элемента осуществляется через специализированную команду, позволяющую удалить указанный элемент. Перед каждым удалением будет выдан дополнительный запрос на подтверждение свершения данной операции, и при получении положительного ответа будет осуществлено удаление элемента. При этом следует заметить, что после удаления элемента система теряет фокус выбранного элемента, так как последний выбранный элемент был удален. Поэтому вам для продолжения работы, необходимо спозиционировать курсор на любой ином элемент в алгоритме.

Особенности работы с клавиатурой

  Используя клавиатуру, вы можете так же свободно осуществлять навигацию по алгоритму, используя клавиши курсора вверх, вниз, вправо, влево. При этом курсор вправо будет приводить к перемещению фокуса по элементам алгоритма вниз, а курсор влево - к перемещению фокуса по элементам алгоритма вверх.
  Клавиша PageUp приведет к установке фокуса на первый элемент алгоритма видимой части экрана, а клавиша PageDown - на последний элемент алгоритма видимой части экрана. К таким же действиям приведет нажатие клавиш: Home (первый элемент в алгоритме), End (последний элемент в алгоритме).
  При нажатии клавиши Ins возможно осуществить вставку элемента: ввода, расчета, сравнения, функций. Также возможно осуществлять редактирование или удаление элемента, на котором в данный момент находится фокус, или осуществлять передачу связей выделенного элемента другому элементу алгоритма.
  Нажатие клавиши Enter приводит к вызову окна редактирования элемента.

Передача связи элемента другому элементу

   Данный механизм позволяет производить реорганизацию информационных потоков в рамках алгоритма. При этом следует помнить, что реорганизация возможна по двум направлениям:

  1. по переходам;
  2. по данным.

   Данный метод применим только к тем элементам алгоритма, которые имеют оговоренный выше тип связи. Изменение ссылок на данный элемент позволяет производить полную реорганизацию информационных потоков с этого элемента на любой другой в алгоритме. Т.е. тем самым вместо пошагового изменения связи в каждом элементе, который когда-либо ссылался на модифицированный элемент можно произвести глобальную реорганизацию указав это только в одном месте. А именно на том элементе, который передает эти связи.

Связи по переходам

  Связь по переходам возникает в элементах типа условия, когда выполнение этого элемента может приводить к явному переходу на какой-либо элемент в структуре алгоритма. Тем самым изменяя связь по переходу с какого-либо элемента, возможно, указать в качестве элемента, элемент на который необходимо перейти всем элементам алгоритма, которые раньше ссылались на модифицированный элемент.

Связи по данным

  Связь по данным подразумевает в себе использование модифицированного алгоритма в каком-либо другом элементе алгоритма в качестве элемента представляющего данные. Следовательно, изменение связи по данным будет приводить к изменению индекса элемента алгоритма во всех формулах использующих первичный индекс.

Организация переходов

  Организация переходов связей (передача связей) осуществляется на том элементе, который используется в каком-либо другом элементе. Т.е. имеется связь либо по переходам, либо по данным. Организация переходов осуществляется активизацией команды передача связей. В рамках специализированного диалогового окна можно указать передачу связей по переходам, выбрав из списка доступных элементов тот элемент, который будет в дальнейшем использоваться как элемент перехода. Передача связей по данным осуществляется аналогичным способом. Если та, или иная передача связи не нужна, ее можно отключить, щелкнув на заголовке перехода. Указав элементы, которые будут отвечать за связи по данным или по переходам и подтвердив свой выбор, будет произведена реорганизация всего алгоритма. Что приведет к тому, что все элементы, которые раньше использовались к реорганизованному элементу, и будут иметь в своих выражениях новое имя элемента (индекс), к которому были переданы связи. А также все элементы осуществляющие переход на реорганизованный элемент, будут иметь в выражениях перехода новое имя (индекс).
  Механизм передачи связей по данным и по переходам, является мощным методом, позволяющим организовать групповую модификацию всех элементов в алгоритме.

Преобразование алгоритма в компонент системы Miracle

  Каждый алгоритм, созданный вами, должен быть преобразован в специализированный файл, который является полноценным компонентом системы Miracle. Только алгоритм, имеющий преобразованный вид, возможно, передавать на Сервер управления в качестве ресурса системы. Если вы произвели изменения в алгоритме, то необходимо повторное преобразование. Преобразованный файл имеет такое же имя, что и проект алгоритма, но только с расширением *.scp.

Тестирование алгоритмов

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

Передача алгоритмов в эксплуатацию, регистрация на Сервере управления

  Регистрация алгоритмов на Сервере управления в качестве математического компонента для его дальнейшего использования в рамках других компонентов системы, возможна только в том случае, если алгоритм находится в специализированном формате *.scp. При этом вы можете передать не только текущий файл, но и любой другой файл, который находится уже в преобразованном виде. Выбрав конкретный файл и активизировав кнопку ОК, возможно произвести сеанс регистрации. В момент передачи, в специализированном диалоговом окне будет дополнительно представлено: формат имени файла, описание файла и автора файла алгоритма. Активизировав команду передача, будет произведена регистрация нового алгоритма на Сервере управления.

Типы алгоритмов на Сервере управления

  На Сервере управления алгоритмы находятся в единой форме хранения. И могут быть использованы для разных назначений. Так алгоритм, используемый в качестве основного дополнения к характеристике объекта БД, является глобальным алгоритмом в рамках базы данных (правилом). Описывающего обработку информации, перед записью в базу. При этом, этот же алгоритм или иной возможно использовать и в другом виде - в качестве элемента задачи для расчета тех или иных параметров, т.е. в качестве элемента решения. При этом следует заметить, что результаты обработанные таким способом не будут сохранены в виде значений в базе данных, а предназначены только для кратковременного отображения в активном приложении.

Модификация алгоритмов

  Модификация алгоритмов возможна только на базе сохраненных моделей алгоритмов в виде файла *.alg. После модификации, если данный алгоритм должен быть заменен, то его необходимо преобразовать его в специализированный вид и передать на Сервер управления. Тем самым произвести замену одного алгоритма на другой под одним и тем же именем. При этом, если модифицированный алгоритм будет записан под новым именем, то на Сервере управления появится новый алгоритм

Особенности модификации алгоритмов используемых в качестве “бизнес-правила”

  Алгоритм, использующийся в качестве “бизнес-правила”, а именно являющийся расширением характеристики в объекте БД, должны быть модифицируемые с особой осторожностью, так как модификация алгоритмов, отвечающих за правила обработки информации перед записью в базу данных, являются основополагающими методами, в рамках которых производится обработка информации. И, следовательно, должны являться менее изменяемыми правилами в вашей информационной системе.

Список возможных действий

ДействиеАналог в меню На панели
инструментов
Создание нового файла (алгоритма)Файл|Новый
Открытие имеющегося файла (алгоритма)Файл|Открыть
Закрытие файла (алгоритма)Файл|Закрыть
Запись файла (алгоритма)Файл|Сохранить
Запись файла (алгоритма) под новым именемФайл|Сохранить как ...  
Выход из программыФайл|Выход
Вставить элемент “ввод”Элемент|Ввод
Вставить элемент “расчет”Элемент|Расчет
Вставить элемент “условие”Элемент|Сравнение
Редактировать данные в выбранном элементеЭлемент|Редактировать
Удаление указанного элемента Элемент|Удалить
Передать связь выделенного элемента к другому элементуЭлемент|Передача связи
Преобразовать алгоритм в специализированный модуль для тестирования или передачи на серверАлгоритм|Компилировать
Активизировать пошаговую проверку алгоритмовАлгоритм|Отладка
Передача алгоритма на сервер системыАлгоритм|Передать
Показать список всех зарегистрированных алгоритмовАлгоритм|Список  
Включить/выключить показ комментариев системы для каждого элемента в алгоритме Настройка|Комментарии системы
Включит/выключить показ комментариев пользователя каждого элемента алгоритмаНастройка|Комментарии пользователя
Включить/выключить показ данных к каждому элементу алгоритмаНастройка|Данные
Настроить цвет фона проекта алгоритма Настройка|Цвет фона ...
Настройка цвета текста в проекте алгоритмаНастройка|Цвет текста ...
Настройка цвета элемента выбора в окне проекта алгоритмаНастройка|Цвет выбора
Расположение окон проектов “каскадом”Окна|Каскад 
Расположение окон проектов “черепицей”Окна|Черепица 
Выравнивание пиктограммы минимизированных окон внизу окна MirMathОкна|Выравнивать пиктограммки 
Закрытие всех открытых окон с проектами алгоритмовОкно|Закрыть все окна 

Предыдущий раздел На начал документауции На оглавление Следующий раздел

©1995,1997,2000 НПФ ”И.В.А.”. Все права сохранены.
Название фирм и торговых марок используются только в качестве пояснения.