...
Blok kódu |
---|
language | eda-l |
---|
theme | RDark |
---|
title | Načítanie hodnôt vektora |
---|
|
VECTOR _v;
-- hodnotyHodnoty budú prístupné cez identifikátor Vector.Src
%LoadVector(Vector.Src, _BT, _ET, _STEP);
-- hodnotyHodnoty 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.
Blok kódu |
---|
language | eda-l |
---|
theme | RDark |
---|
title | 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.
Blok kódu |
---|
language | eda-l |
---|
theme | RDark |
---|
title | 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.Calca 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).
Blok kódu |
---|
language | eda-l |
---|
theme | RDark |
---|
title | 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.
Blok kódu |
---|
language | eda-l |
---|
theme | RDark |
---|
title | 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ť.
Blok kódu |
---|
language | eda-l |
---|
theme | RDark |
---|
title | 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.
Blok kódu |
---|
|
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; |