Vidíte historickú verziu tejto stránky. Pozrite si aktuálnu verziu.

Porovnať s aktuálnou verziou Zobraziť históriu stránky

« Predchádzajúce Verzia 5 Aktuálny »

Do výpočtu vektora najčastejšie vstupuje iný vektor (môže byť taktiež vypočítaný), alebo zoznam (pole) vektorov. Počet vektorov vstupujúcich do výpočtu nie je umelo obmedzený, avšak čím viac vektorov je potrebné spracovať, tým viac stúpa časová a pamäťová náročnosť výpočtu.

Pri načítaní hodnôt a zoznamov vektorov sú rozlišované dva typy funkcií. Prvý typ sprístupňuje obsah entít cez ich meno a druhý vracia načítaný obsah do lokálnej premennej príslušného typu. Odporúča sa použiť druhý typ - načítanie obsahu do lokálnej premennej.

Nasledovný príklad načítava hodnoty vektora Vector.Src v rovnakom časovom rozsahu, ako je načítavaný výsledný vypočítaný vektor s rovnakým krokom ako má výsledný vypočítaný vektor.

Načítanie hodnôt vektora
VECTOR _v;

-- Hodnoty budú prístupné cez identifikátor Vector.Src
%LoadVector(Vector.Src, _BT, _ET, _STEP);

-- Hodnoty budú prístupné cez premennú _v
_v := %LoadVectorData("Vector.Src", _BT, _ET, _STEP);

Načítanie vektora s parametrami

Do výpočtu vypočítaného vektora je možné voliteľne podsunúť parametre. Počet parametrov odovzdaných do výpočtu vektora je možné získať funkciou %GetParamsNr. Parameter je identifikovaný svojim indexom. Hodnotu kontrétneho parametra je možné priradiť do lokálnej premennej funkciou %GetParamValue. Ak hodnota parametra nie je kompatibilná s typom lokálnej premennej, do ktorej je priraďovaná, je generovaná chyba.

Vector.Calc
REAL _value;
VECTOR _v;

IF %GetParamsNr() > 0 THEN
  -- Priradí hodnotu parametra na indexe 1 do premennej _value
  %GetParamValue(1, _value);
END IF;
%CreateVectorInit(_v, _value, _BT, _ET, _STEP);

RETURN _v;

Načíta vektor Vector.Calc s podsunutím hodnoty prvého parametra 2,5.

Vector.Result
%LoadVektorWithParams(Vector.Calc, _BT, _ET, _STEP, 2.5);
RETURN Vector.Calc;

Pre zvýšenie prehľadnosti kódu a zjednodušenie práce s parametrami je odporúčané použitie pomenovaných parametrov.

Načítanie vektora s pomenovanými parametrami

Ide o načítanie vektora, ktorý má jasne menom definované parametre. Hodnoty sú týmto parametrom automaticky pridelené pri načítaní vektora. Nezadané parametre budú obsahovať neplatnú hodnotu. Nasledovný príklad pozostáva z dvoch vektorov. Vektor, ktorý spracováva výpočet s parametrami (Vector.Calc) a vektor, ktorý načítava vektor Vector.Calc a odovzdáva mu hodnoty parametrov (Vector.Result).

Nasledujúci predpis zobrazuje vektor Vector.Calc, ktorý má definovaný pomenovaný parameter _value typu reálne číslo (1).

Vector.Calc
PARAM REAL _value; -- (1)
VECTOR _v;

%CreateVectorInit(_v, _value, _BT, _ET, _STEP);

RETURN _v;

Vektor Vector.Result už len volá načítanie vektora Vector.Calc, ktorému odovzdá hodnotu parametra _value (1). Ako hodnotu parametra je možné zadať akýkoľvek výraz, ktorého výsledný typ je kompatibilný s typom parametra.

Vector.Result
VECTOR _v;

v := %LoadVectorData("Vector.Calc", _BT, _ET, _STEP, , , _value => 2.5); -- (1)

RETURN _v;

Načítanie zoznamu vektorov

Načítanie zoznamu vektorov je zvyčajne realizované načítaním scenára vektorov (%LoadScenario, %LoadScenarioData) alebo skupiny vektorov (%LoadGroup, %LoadGroupData). Je však možné načítať aj ľubovolný zoznam vektorov na základe SQL príkazu (%LoadFilter, %LoadFilterSimple). Ak do výpočtu vstupujú aj hodnoty vektorov z načítaného zoznamu, je potrebné ich načítať/sprístupniť.

Načítanie zoznamu vektorov
INT _i, _nr;
VECTOR _v;

%CreateVector(_v, _BT, _ET, _STEP);
%LoadScenario(Scenario.Test, 1);
_nr := %ValuesNr(Scenario.Test);
IF _nr > 0 THEN
  -- Sprístupní hodnoty vektorov v zozname
  FOR _i = 1 TO _nr LOOP
    %LoadVector(Scenario.Test[_i], _BT, _ET, _STEP);
  END LOOP;

  -- Vypočíta súčet hodnôt na rovnakých indexoch
  _v := %Sum(Scenario.Test);
END IF;

Štruktúra VECTORS môže okrem EDA vektorov obsahovať aj odkazy na lokálne vektory (premenné typu VECTOR). V prípade odovzdania takejto štruktúry do iného vypočítaného vektora, budú hodnoty zdrojového lokálneho vektora dostupné na modifikáciu aj vo vnorenom vypočítanom vektore, pričom zmena hodnôt sa prejaví v každej úrovni vnorenia. Nasledovný predpis predstavuje jednoduchý príklad použitia odkazov na lokálne vektory v poli vektorov.

VECTOR _v1, _v2;
VECTORS _w;
INT _i, _j;

%CreateVector(_v1, 5);
%CreateVector(_v2, 10);

-- Do poľa vektorov pridá lokálne vektory _v1 a _v2
_w := _w + _v1 + _v2;

-- Modifikuje hodnoty lokálnych vektorov nepriamo cez zoznam vektorov
FOR _i = 1 TO %ValuesNr(_w) LOOP
 FOR _j = 1 TO %ValuesNr(_w[_i]) LOOP
  _w[_i][_j] := _i + _j;
 END LOOP;
END LOOP;
  • Žiadne štítky