Pascal:
Procedure Interpretator(Signals: PRealArray; Var Answer, Reliability: Real);
C:
void Interpretator(PRealArray Signals, Real* Answer, Real* Reliability);
В разделе описания состава перечисляются частные интерпретаторы, входящие в состав интерпретатора. Признаком конца раздела служит символ «;».
В необязательном разделе установления параметров производится задание значений параметров (статических переменных) частных интерпретаторов. После ключевого слова SetParameters следует список значений параметров в том порядке, в каком параметры были объявлены при описании частного интерпретатора (для стандартных интерпретаторов порядок параметров указан в табл. 29). При использовании одного оператора задания параметров для задания параметров нескольким экземплярам одного частного интерпретатора после ключевого словаsetparameters указывается столько выражений, задающих значения параметров, сколько необходимо для одного экземпляра. Например, если в блоке описания состава содержится 10 экземпляров двоичного интерпретатора на 15 интерпретируемых сигналов — myint: binarycoded(15)[10], то после ключевого слова setparameters должно быть только одно выражение:
MyInt[I:1..10] SetParameters0.01*I
В данном примере первый интерпретатор будет иметь уровень надежности равный 0.01, второй — 0.02 и т. д.
В необязательном разделе описание сигналов указывается число сигналов, интерпретируемых интерпретатором. Если этот раздел опущен, то полагается, что число интерпретируемых интерпретатором сигналов равно сумме сигналов, интерпретируемых всеми частными интерпретаторами. В константном выражении может вызываться функция NumberOf, аргументом которой является имя частного интерпретатора (или его псевдоним) с указанием фактических аргументов.
В необязательном разделе описания распределения сигналов для каждого частного интерпретатора указывается, какие сигналы из общего интерпретируемого массива передаются ему для интерпретации. Если этот раздел отсутствует, то считается, что каждый следующий частный интерпретатор получает следующий фрагмент общего вектора выходных сигналов. В примере 1 данный раздел описывает распределение сигналов по умолчанию.
В необязательном разделе описания распределения ответов для каждого частного интерпретатора указывается, какой элемент массива ответов он вычисляет. Если этот раздел опущен, то считается, что первый частный интерпретатор вычисляет первый элемент массива ответов, второй — второй элемент и т. д. Массив уровней надежностей всегда параллелен массиву ответов. В примере 1 данный раздел описывает распределение ответов по умолчанию.
Кроме того, в любом месте описания интерпретатора могут встречаться комментарии, заключенные в фигурные скобки.
Пример описания интерпретатора
В этом разделе приведены два примера описания одного и того же интерпретатора следующего состава: первый сигнал интерпретируется как температура путем умножения на 10 и добавления 273; следующие два сигнала интерпретируются как наличие облачности, используя знаковый интерпретатор; следующие три сигнала интерпретируются как направление ветра, используя двоичный интерпретатор (восемь румбов); последние три сигнала интерпретируются максимальным интерпретатором как сила осадков (без осадков, слабые осадки, сильные осадки). В первом примере приведено описание дубликатов всех стандартных интерпретаторов. Во втором — использованы стандартные интерпретаторы.
Пример 1.
InterpretatorMeteorology
{Интерпретатор осуществляющий масштабирование и сдвиг сигнала}
InterEmpty1()
Static
RealB Name"Масштабный множитель";
RealC Name"Сдвиг начала отсчета" ;
Begin
Answer= Signals[1] * B + C;
Reliability= 0
End
{Кодирование номером канала. Знаковый интерпретатор}
InterBinary1 : (N : Long)
Static
RealE Name"Уровень надежности";
Var
LongA, B, I ;
RealDist ;
Begin
Dist = E;
B = 0; {Число единиц}
A = 0; {Номер единицы}
ForI = 1 ToN Do Begin
If Abs( Signals[I]) < Dist ThenDist = Abs( Signals[I]);
If Signals[I] > 0 Then BeginA = I; B = B + 1; End;
Читать дальше