Program Diabetics

Transkrypt

Program Diabetics
Diabetics
Edytor wyrażeń
Autor: Mariusz Florek
Wersja 1.0
1
Spis treści
WYRA ŻENIA WŁASNE ...................................................................................................................................................................4
ELEMENTY SKŁADOWE WY RAŻENIA ...................................................................................................................................4
DOSTĘPNE WYRAŻENIA WBUDOWA NE I FUNKCJE DIABETICS ..........................................................................5
WYRAŻENIA WBUDOWANE ..................................................................................................................................................................5
Kcal .................................................................................................................................................................................................5
Carbohydrates ............................................................................................................................................................................5
Proteins .........................................................................................................................................................................................5
Fat ...................................................................................................................................................................................................5
CU ...................................................................................................................................................................................................5
FPU .................................................................................................................................................................................................5
USum .............................................................................................................................................................................................5
TID .................................................................................................................................................................................................5
BN ...................................................................................................................................................................................................6
BS ....................................................................................................................................................................................................6
BSDuration ...................................................................................................................................................................................6
PercentBN ....................................................................................................................................................................................6
BolusSum .....................................................................................................................................................................................6
ICRatio ..........................................................................................................................................................................................6
UWAGI DO WYRAŻEŃ WBUDOWANYCH ...............................................................................................................................................6
DOSTĘPNE FUNKCJE PODSTAWOWE....................................................................................................................................................6
Abs(double value) .....................................................................................................................................................................7
Ceil(double a) .............................................................................................................................................................................7
Exp(double d) .............................................................................................................................................................................7
Floor(double d) ..........................................................................................................................................................................7
Log(double d) .............................................................................................................................................................................7
Log10(double d) ........................................................................................................................................................................7
Min(double val1, double val2) ...............................................................................................................................................7
Max(double val1, double val2) ..............................................................................................................................................7
Pow(double x, double y) .........................................................................................................................................................7
Round(double a) ........................................................................................................................................................................7
Sqrt(double d) ............................................................................................................................................................................7
S TAŁE PODSTAWOWE...........................................................................................................................................................................8
E ......................................................................................................................................................................................................8
Inf ...................................................................................................................................................................................................8
NaN ................................................................................................................................................................................................8
FUNKCJE TRYGONOMETRYCZNE I STAŁA PI........................................................................................................................................8
Acos(double d) ...........................................................................................................................................................................8
Asin(double d) ............................................................................................................................................................................8
Atan(double d) ...........................................................................................................................................................................8
Atan2(double y, double x) ......................................................................................................................................................8
Cos(double a) .............................................................................................................................................................................9
Cosh(double a) ...........................................................................................................................................................................9
Sin(double a) ..............................................................................................................................................................................9
Sinh(double a) ............................................................................................................................................................................9
Tan(double a) .............................................................................................................................................................................9
Tanh(double a) ...........................................................................................................................................................................9
PI.....................................................................................................................................................................................................9
UWAGI DOTYCZĄCE FUNKCJI I STAŁYCH WBUDOWANYCH .................................................................................................................9
FUNKCJE DODANE W PROGRAMIE DIABETICS ....................................................................................................................................9
HalfRound(double x) ................................................................................................................................................................9
2
Round1(double x) ....................................................................................................................................................................10
Round2(double x) ....................................................................................................................................................................10
Round3(double x) ....................................................................................................................................................................10
RoundN(double x, double) ...................................................................................................................................................10
WYRAŻENIA LOGICZNE ......................................................................................................................................................................10
And(double[] conditions) ......................................................................................................................................................10
Equals(double left, double right) .......................................................................................................................................10
EQ(double left, double right) ..............................................................................................................................................10
GE(double left, double right) ...............................................................................................................................................10
GT(double left, double right) ...............................................................................................................................................10
Iif(double condition, double trueResult, double falseResult) ................................................................................... 11
LE(double left, double right) ............................................................................................................................................... 11
LT(double left, double right) ................................................................................................................................................ 11
NormalizeBoolean(double value) ....................................................................................................................................... 11
Not(double condition) ............................................................................................................................................................ 11
NotEquals(double left, double right) ................................................................................................................................ 11
NQ(double left, double right) .............................................................................................................................................. 11
Or(double[] conditions) ......................................................................................................................................................... 11
UWAGI DOTYCZĄCE WYRAŻEŃ LOGICZNYCH.....................................................................................................................................11
OPERATORY ARYTMETYCZNE .............................................................................................................................................................12
WSKAZÓWKI DOTYCZĄCE WYRAŻEŃ .................................................................................................................................................12
EDYTOR WYRAŻEŃ.......................................................................................................................................................................12
DOSTĘPNE OPERACJE NA WYRAŻENIACH..........................................................................................................................................14
Tworzenie nowego wyrażenia .............................................................................................................................................14
Edycja istniejącego wyrażenia ............................................................................................................................................15
Usunięcie wyrażenia ...............................................................................................................................................................15
Zapisanie wyrażeń ...................................................................................................................................................................15
Odświeżenie wartości wyrażenia ........................................................................................................................................15
Odświeżenie wartości wszystkich wyrażeń .....................................................................................................................15
DANE TESTOWE..................................................................................................................................................................................16
PRZYKŁADOWE WYRAŻENIA .................................................................................................................................................17
3
Wyrażenia własne
W programie Diabetics (począwszy od wersji 1.7.0) użytkownik może tworzyć wyrażenia
własne, których wartość będzie wyznaczana dla każdego posiłku.
Wyrażenia te będą prezentowane w oddzielnej zakładce kalkulacji: 'Własne' (w zakładce
'Wbudowane' prezentowane będą wyrażenia dostarczane z programem Diabetics).
Rysunek 1 Kalkulacje własne (dla wyrażeń własnych)
Potrzeba budowy wyrażeń własnych występuje wtedy, jeżeli zestaw wyliczanych przez
program Diabetics wskaźników nie satysfakcjonuje użytkownika.
Wyrażenia własne mogą być budowane na bazie wyliczanych przez Diabetics wyrażeń
(tzw. wbudowanych), wbudowanych funkcji oraz wyrażeń własnych zdefiniowanych przez
użytkownika.
Uwaga: wyrażenia własne stosujesz na swoją odpowiedzialność!
Elementy składowe wyrażenia
Wyrażenie składa się z następujących elementów:
Nazwa – krótka nazwa wyrażenia prezentowana w kolumnie 'Cecha' kalkulacji.
Opis – dokładny opis wyrażenia, prezentowany w kalkulacjach w postaci tooltip'u
(podpowiedzi w postaci dymka).
Znacznik widoczności – reprezentowany we właściwościach wyrażenia przez pole
'Widoczny'. Jeżeli pole to nie jest zaznaczone, to wyrażenie nie będzie prezentowane w
kalkulacjach! Niewidoczne wyrażenie będzie miało cechę pomocniczego i będzie mogło być
używane w innych wyrażeniach.
Dokładność – wynik wyrażenia w kalkulacjach prezentowany będzie z dokładnością
wybraną w polu 'Zaokrąglij z dokładnością do'. Jeżeli pole to ma wartość 'brak', to
oznacza że prezentowany wynik nie będzie zaokrąglany (prezentowany będzie z
4
dokładnością wynikającą z obliczeń).
Symbol – unikatowy symbol wyrażenia. Symbol musi zaczynać się na literę łacińską i
może zawierać więcej liter łacińskich oraz cyfr i znaków: '_'. Symbol może być używany w
definicji innych wyrażeń (następujących po danym wyrażeniu). Wielkość liter w symbolu
nie odgrywa roli. Podczas wprowadzania symbolu następuje sprawdzenie, czy symbol się
nie powtórzył względem poprzedzających go symboli oraz dostępnych funkcji.
Jeżeli wyrażenie posiada zdefiniowaną dokładność, to dla wyrażenia generowane jest
automatycznie wyrażenie o symbolu jak dane wyrażenie poprzedzonym znakiem '_' (np.
dla symbolu moj_symbol generowany jest symbol _moj_symbol) Wyrażenie takie ma
wartość niezaokrąglonego wyrażenia bazowego (w przykładzie – niezaokrągloną wartość
wyrażenia moj_symbol).
Dostępne wyrażenia wbudowane i funkcje Diabetics
Wyrażenia wbudowane
Program Diabetics posiada wbudowany zestaw wyrażeń prezentowanych w tabeli
kalkulacji. Są to (wartości wyrażeń identyfikowanych przez symbole odnoszą się do
elementu, którego dotyczą kalkulacje np. posiłku, zestawu, zaznaczonych elementów itp.):
Kcal
wartość energetyczna w kcal; zaokrąglona z dokładnością do 1 miejsca po przecinku
(0.1)
Carbohydrates
węglowodany (w gramach); zaokrąglone j.w.
Proteins
białka (w gramach); zaokrąglone j.w.
Fat
tłuszcze (w gramach); zaokrąglone j.w.
CU
liczba wymienników węglowodanowych; zaokrąglona z dokładnością “połówkową1”
(domyślnie) lub do 0.1 (w zależności od wyboru użytkownika)
FPU
liczba wymienników białkowo-tłuszczowych; zaokrąglona analogicznie jak CU
USum
suma wymienników węglowodanowych oraz białkowo-tłuszczowych (CU + FPU)
TID
całkowita dawka insuliny (ang. Total Insulin Dose); zaokrąglony z dokładnością do
1 Zaokrąglenie „połówkowe” zostało wprowad zone na użytek algorytmu wy znaczania bolusów przez autorkę
algorytmu dr Ewę Pańko wską. Patrz opis funkcji HalfRound
5
0.1
BN
bolus prosty (ang. Bolus Normal); zaokrąglony z dokładnością do 0.1
BS
bolus złożony (ang. Bolus Square); zaokrąglony analogicznie jak BN
BSDuration
czas podania bolusa złożonego (w godzinach)
PercentBN
procentowy udział bolusa prostego w sumie bolusów prostego i złożonego
(BN / (BS + BN) * 100%); zaokrąglony z dokładnością do jedności
BolusSum
suma bolusów prostego i złożonego (BN + BS)
ICRatio
współczynnik insulina-wymiennik (ang. Insulin to Carb Ratio); wartość
współczynnika wyznaczana jest dla czasu wyznaczania kalkulacji na podstawie
danych prowadzonych przez użytkownika w formularzu Współczynnik insulinawymiennik.
Uwagi do wyrażeń wbudowanych
Uwaga: wyrażenia: Usum, TID, BN, BS, BSDuration, PercentBN, BolusSum wyznaczane są
na podstawie zaokrąglonych wartości BN i BS oraz Kcal, Carbohydrates, Proteins i Fat!
CU liczona jest wg wzoru: Carbohydrates / 10
FPU liczona jest wg wzoru: (Proteins * 4.0 + Fat * 9.0) / 100.0
TID liczona jest wg wzoru: Usum * ICRatio
BN, BS oraz BSDuration liczone są wg autorskiej metody dr Ewy Pańkowskiej z Akademii
Medycznej w Warszawie.
Niżej wymienione wyrażenia są niezaokrąglonymi wartościami ich odpowiedników bez
znaku '_':
_Kcal
_Carbohydrates
_Proteins
_Fat
_CU
_FPU
Dostępne funkcje podstawowe
6
Użytkownik może wykorzystać następujące funkcje 2 (dostępne w ramach klasy Math
platformy .NET):
Abs(double value)
Zwraca wartość bezwzględną liczby value
Ceil(double a)
Zwraca najmniejszą liczbę całkowitą większą lub równą liczbie a
Exp(double d)
Zwraca e podniesione do potęgi d; funkcja eksponencjalna
Floor(double d)
Zwraca największą liczbę całkowitą mniejszą lub równą liczbie d
Log(double d)
Zwraca logarytm naturalny z liczby d
Log10(double d)
Zwraca logarytm dziesiętny z liczby d
Min(double val1, double val2)
Zwraca mniejszą z liczb: val1, val2
Max(double val1, double val2)
Zwraca większą z liczb: val1, val2
Pow(double x, double y)
Zwraca liczbę x podniesioną do potęgi y
Round(double a)
Zwraca liczbę a zaokrągloną do liczby całkowitej (np. 4.5 –> 4; 4.51 –> 5)
Sqrt(double d)
2 Każda funkcja zwraca wyn ik typu double (liczba rzeczywista zmiennoprzecinkowa) i mo że mieć jeden lub więcej
parametró w wejściowych. Jeżeli fun kcja posiada argument typu double[] to może p rzy jąć dowolną większą od zera
liczbę paramet rów (funkcja o zmiennej liczb ie paramet rów).
7
Zwraca pierwiastek kwadratowy z liczby d
Użytkownik może wykorzystać następujące stałe (dostępne w ramach klasy Math
platformy .NET):
Stałe podstawowe
E
podstawa logarytmu naturalnego
Inf
reprezentuje dodatnią nieskończoność (np. wynik dzielenia przez 0) lub wartość
spoza zakresu typu double
NaN
reprezentuje wartość która nie jest liczbą
Domyślnie stałe NaN i Inf są niedostępne w narzędziu podpowiadania składni. Aby stały
się dostępne należy zaznaczyć opcję: 'Dołącz stałe NaN oraz Infinity' w opcjach
edytora wyrażeń.
Funkcje trygonometryczne i stała PI
Z uwagi na ich potencjalnie rzadką przydatność funkcje trygonometryczne oraz stała PI
zostały wyodrębnione jako oddzielna grupa. Domyślnie są niedostępne w narzędziu
podpowiadania składni. Aby stały się dostępne należy zaznaczyć opcję: 'Dołącz funkcje
trygonometryczne i stałą PI' w opcjach edytora wyrażeń.
Acos(double d)
Zwraca kąt (w radianach), którego cosinus ma wartość d funkcja odwrotna do
cosinus
Asin(double d)
Zwraca kąt (w radianach), którego sinus ma wartość d funkcja odwrotna do sinus
Atan(double d)
Zwraca kąt (w radianach), którego tangens ma wartość d funkcja odwrotna do
tangens
Atan2(double y, double x)
Zwraca arcus tangens wartości punktu (x,y) kartezjańskiego układu współrzędnych,
czyli kąta nachylenia między osią OX a prostą przechodzącą przez punkt (x,y); x i y
wyrażone są w radianach z zakresu <-PI; PI>
8
Cos(double a)
Zwraca cosinus liczby a (a – kąt wyrażony w radianach)
Cosh(double a)
Zwraca cosinus hiperboliczny liczby a (a – kąt wyrażony w radianach)
Sin(double a)
Zwraca sinus liczby a (a – kąt wyrażony w radianach3)
Sinh(double a)
Zwraca sinus hiperboliczny liczby a (a – kąt wyrażony w radianach)
Tan(double a)
Zwraca tangens liczby a (a – kąt wyrażony w radianach)
Tanh(double a)
Zwraca tangens hiperboliczny liczby a (a – kąt wyrażony w radianach)
PI
wartość 3.14159265358979323846
Uwagi dotyczące funkcji i stałych wbudowanych
Więcej szczegółów dotyczących funkcji I stałych wbudowanych platformy .NET pod:
http://msdn.microsoft.com/en-us/library/system.math_members.aspx
Uwaga ogólna do wywołań funkcji: w miejsce dowolnego parametru może być wstawione
wywołanie funkcji (tzw. wywołanie zagnieżdżone; wstawienie do funkcji wywołania tej
samej funkcji nazywa się wywołaniem rekurencyjnym (niewłaściwe wywołanie
rekurencyjne może powodować nieskończoną pętlę!))
Funkcje dodane w programie Diabetics
HalfRound(double x)
Zwraca zaokrągloną wartość liczby x wg poniższego algorytmu:
Oznaczmy liczbę podlegającą zaokrągleniu jako value, wynik zaokrąglenia jako
result, część dziesiętną wartości podlegającej zaokrągleniu jako part a część
całkowitoliczbową liczby podlegającej zaokrągleniu jako floor.
3 Jeżeli chcesz dokonać zamiany stopni na radiany podziel liczbę stopni przez wartość 180 / PI
9
Jeżeli part < 0.25 to result = floor.
Jeżeli part >= 0.25 i part < 0.75 to result = floor + 0.5.
Jeżeli part >= 0.75 to result = floor + 1.0
Round1(double x)
Zwraca liczbę x zaokrągloną do jednego miejsca po przecinku
(np. 4.05 –> 4.0; 4.06 –> 4.1)
Round2(double x)
Zwraca liczbę x zaokrągloną do dwóch miejsc po przecinku
(np. 4.005 –> 4.00; 4.006 –> 4.01)
Round3(double x)
Zwraca liczbę x zaokrągloną do trzech miejsc po przecinku
(np. 4.0005 –> 4.000; 4.0006 –> 4.001)
RoundN(double x, double)
Zwraca liczbę x zaokrągloną do n miejsc po przecinku
Wyrażenia logiczne
And(double[] conditions)
Zwraca 1.0 jeżeli wszystkie przekazane argumenty (conditions) mają wartości
różne od 0.0; w przeciwnym przypadku zwraca 0.0
Equals(double left, double right)
EQ(double left, double right)
Zwraca 1.0 jeżeli left jest równe right; w przeciwnym przypadku zwraca 0.0
GE(double left, double right)
Zwraca 1.0 jeżeli left jest większe lub równe right; w przeciwnym przypadku
zwraca 0.0
(ang. Greather Or Equals)
GT(double left, double right)
Zwraca 1.0 jeżeli left jest większe od right; w przeciwnym przypadku zwraca 0.0
(ang. Greather Than)
10
Iif(double condition, double trueResult, double falseResult)
Zwraca falseResult jeżeli condition jest równe 0.0; w przeciwnym przypadku
zwraca trueResult
LE(double left, double right)
Zwraca 1.0 jeżeli left jest mniejsze lub równe right; w przeciwnym przypadku
zwraca 0.0
(ang. Less Or Equals)
LT(double left, double right)
Zwraca 1.0 jeżeli left jest mniejsze od right; w przeciwnym przypadku zwraca 0.0
(ang. Less Than)
NormalizeBoolean(double value)
Zwraca 0.0 (logiczne false) jeżeli value jest równe 0.0; w przeciwnym przypadku
zwraca 1.0 (logiczne true)
Not(double condition)
Zwraca zanegowaną wartość logiczną condition
Jeżeli condition jest różne od 0.0, to zwracane jest 0.0
Jeżeli condition jest równe 0.0, to zwracane jest 1.0
NotEquals(double left, double right)
NQ(double left, double right)
Zwraca 1.0 jeżeli left jest różne od right; w przeciwnym przypadku zwraca 0.0
Or(double[] conditions)
Zwraca 1.0 jeżeli chociaż jeden z przekazanych argumentów (conditions) ma
wartości różną od 0.0; w przeciwnym przypadku zwraca 0.0
Uwagi dotyczące wyrażeń logicznych
Z uwagi na to, że użyta biblioteka do wyznaczania wartości wyrażeń akceptuje tylko liczby
rzeczywiste (double) w wyrażeniach, których argumentami są wartości logiczne przyjęto
regułę, że logicznej wartości:
true (prawda) odpowiada dowolna liczba rzeczywista różna od 0.0 (w
szczególności 1.0)
false (fałsz) odpowiada liczba rzeczywista równa 0.0
Aby sprowadzić wartość liczby do wartości logicznej można użyć funkcji
NormalizeBoolean
11
Operatory arytmetyczne
Oprócz wyżej wymienionych funkcji, stałych i wyrażeń dostępne są następujące operatory
arytmetyczne (dwuargumentowe):
+ dodawanie
– odejmowanie
* mnożenie
/ dzielenie
^ potęgowanie
% modulo (reszta z dzielenia)
Wskazówki dotyczące wyrażeń
Jeżeli nie chcesz ponieść błędu zaokrągleń, to stosuj w wyrażeniach niezaokrąglone
wartości wyrażeń (poprzedzających - uprzednio zdefiniowanych; rozpoczynających
się od znaku '_', jeżeli wyrażenie podlega zaokrągleniu).
Jeżeli do zdefiniowania wyrażenia potrzebujesz wyrażeń pomocniczych (nie
podlegających zobrazowaniu), to ustaw ich widoczność na 'niewidoczne'.
Kolejność wyrażenia (pozycja na liście wyrażeń) jest istotna, jeżeli dla wyrażeń
wykorzystywanych w innych wyrażeniach. W wyrażeniu można użyć jedynie
wyrażeń poprzedzających, czyli wbudowanych i własnych – posiadających
wcześniejszą pozycję.
Jeżeli wyrażenie wymaga rozstrzygnięcia warunków logicznych, to użyj funkcji
logicznych: Iif, EQ, NE, Not, LT, LE, GT, GE, NormalizeBoolean.
Jeżeli w wyrażeniu chcesz użyć wartości zaokrąglonej, to użyj jednej z funkcji:
Round, Round1, Round2, Round3, RoundN, HalfRound
Tworząc wyrażenia używaj klawiszy Ctrl+spacja do wyświetlenia okienka z
dostępnymi symbolami stałych, funkcji i wyrażeń; prezentowane funkcje będą miały
widoczną liczbę parametrów
Przetestuj uważnie swoje wyrażenia dla różnych danych wejściowych zanim
zaczniesz ich wykorzystywać!
Edytor wyrażeń
Do tworzenia i edycji wyrażeń służy edytor wyrażeń. Jest on dostępny z menu Narzędzia –
> Edytor wyrażeń lub bezpośrednio z głównego paska narzędziowego.
12
Rysunek 2 Edytor wyrażeń
Jeżeli tworzysz nowe lub edytujesz istniejące wyrażenie – naciśnij Ctrl+spacja aby
otworzyć okienko podpowiadające składnię (dostępne wyrażenia wbudowane, funkcje oraz
dotychczas zdefiniowane wyrażenia własne).
13
Rysunek 3 Sygnalizacja błędu w kontrolce do edycji wzoru wyrażenia
Rysunek 4 Sygnalizacja błędu w kontrolce do zobrazowania wyników
Rysunek 5 Wyróżnianie nawiasów otwierających i zamy kających
Aby znaleźć i wyróżnić nawias zamykający – ustaw się PRZED nawiasem otwierającym.
Aby znaleźć i wyróżnić nawias otwierający – ustaw się ZA nawiasem zamykającym.
Dostępne operacje na wyrażeniach
Tworzenie nowego wyrażenia
1. Naciśnij przycisk 'Dodaj wyrażenie'. Wyrażenie zostanie dodane na końcu listy
wyrażeń
2. Za pomocą przycisków strzałek
ustal właściwą kolejność wyrażenia na liście wyrażeń
3. W oknie 'Właściwości' wprowadź wartość wszystkich wymaganych elementów:
1. Nazwę
2. Unikatowy symbol
3. Wyrażenie (użyj Ctrl+spacja do wywołania narzędzia podpowiadającego
składnię)
14
4. Widoczność (domyślnie 'Widoczne')
Opcjonalnymi elementami są:
1. Opis
2. Sposób zaokrąglenia (pole 'Zaokrąglij z dokładnością do')
4. Jeżeli wyrażenie jest poprawne (posiada poprawne wymagane elementy) to jego
status będzie miał wartość 'OK' a w oknie 'Wyniki' pojawi się jego wartość (zgodna
z oczekiwaniami).
W przeciwnym przypadku tło pola wyrażenia zostanie wyróżnione na różowo, a
czerwonym tłem zostanie wyróżniony błędny element (o ile zostanie zlokalizowany
przez parser wyrażeń). Status wyrażenia zostanie określony jako 'Niepoprawne'
5. Po utworzeniu wyrażenie zostanie zapisane w pamięci. Jeżeli chcesz zapisać je na
trwale do pliku, to naciśnij przycisk 'Zapisz wyrażenia'
Edycja istniejącego wyrażenia
1. Aby dokonać edycji wyrażenia zaznacz go na liście wyrażeń
2. W oknie 'Właściwości' pojawią się elementy wyrażenia
3. Dokonaj zmian żądanych elementów lub zmień położenie wyrażenia na liście
wyrażeń (za pomocą przycisków strzałek)
4. Po zmodyfikowaniu wyrażenie zostanie zapisane w pamięci. Jeżeli chcesz zapisać je
na trwale do pliku, to naciśnij przycisk 'Zapisz wyrażenia'
Usunięcie wyrażenia
1. Aby usunąć wyrażenie zaznacz go na liście wyrażeń
2. Naciśnij przycisk 'Usuń wyrażenie'
3. Po usunięciu wyrażenie zostanie usunięte z pamięci. Jeżeli chcesz usunąć je trwale z
pliku, to naciśnij przycisk 'Zapisz wyrażenia'
Zapisanie wyrażeń
Jakakolwiek zmiana wyrażeń zostaje odzwierciedlona jedynie w pamięci. Jeżeli
chcesz zapisać ją na trwale do pliku, to naciśnij przycisk 'Zapisz wyrażenia'
Odświeżenie wartości wyrażenia
Jeżeli masz wrażenie, że bieżące wyrażenie ma nieprawidłową wartość dla zadanych
danych testowych, to możesz dokonać jej odświeżenia za pomocą przycisku 'Oblicz
wartość wyrażenia'
Odświeżenie wartości wszystkich wyrażeń
Jeżeli masz wrażenie, że którekolwiek z wyrażeń ma nieprawidłową wartość dla
zadanych danych testowych, to możesz dokonać odświeżenia wartości wszystkich
wyrażeń za pomocą przycisku 'Odśwież wszystko'
15
Dane testowe
W prawym górnym rogu znajduje się okno, w którym można wprowadzić dane testowe do
obliczeń: wartość kaloryczną [kcal], białka [g], tłuszcze [g] i węglowodany [g] (zakładka
'Dane')
Wprowadź różne dane testowe, aby dobrze przetestować poprawność swoich wyrażeń.
W programie Diabetics wartości wyrażeń zostaną obliczone na podstawie danych
sumarycznych dla kalkulowanego elementu: posiłku, produktu, zestawu itp.
Zakładka 'Kalkulacje' zawiera wartości wynikowe wyrażeń:
wbudowanych (zdefiniowanych w programie Diabetics) (zakładka ' Wbudowane')
wprowadzonych przez użytkownika (zakładka 'Własne') – w takiej formie
zobaczysz wyrażenia własne w Diabetics
Rysunek 6 Kalkulacje wbudowane
16
Rysunek 7 Kalkulacje własne (dla wyrażeń własnych)
Przykładowe wyrażenia
Poniżej zamieszczono przykładowe wyrażenia pokazujące wraz z omówieniem tych bardziej
skomplikowanych.
Wszystkie niżej wymienione wyrażenia można znaleźć w pliku Examples_pl.xml. Skopiuj
ten plik na plik o nazwie CustomExpressions.xml i otwórz edytor wyrażeń.
(w katalogu C:\Program Files\Smart-bits\Diabetics\expressions dla wersji Desktop
lub w katalogu \\My Documetns\diabetics\expressions w wersji Pocket).
Dokładne wartości wymienników węglowodanowych (w celu dalszego użycia
nadam mu symbol MyCU):
Carbohydrates / 10.0
Dokładne wartości wymienników białkowo-tłuszczowych (w celu dalszego użycia
nadam mu symbol MyFPU):
(Proteins * 4.0 + Fat * 9.0) / 100.0
Dokładna wartość udziału wymienników węglowodanowych w sumie
wymienników: węglowodanowych i białkowo-tłuszczowych (w celu dalszego użycia
nadam mu symbol MyCUPerc):
MyCU / (MyCU + MyFPU)
Wyrażenie zwracające dokładną wartość BN według algorytmu autorstwa dr
Ewy Pańkowskiej (uwaga: algorytm ten jest chroniony prawami autorskimi i nie może
być wykorzystywany bez zgody autorki):
Iif(
GT(MyCUPerc, 0.8),
17
MyCU * ICRatio,
Iif(
LT(MyCUPerc, 0.2),
0.0,
MyCU * ICRatio * 0.9
)
)
Wyrażenie odpowiada algorytmowi:
Jeżeli (pierwszy Iif) MyCUPerc jest większe (GT) od 0.8 to
przyjmij wartość MyCU * ICRatio
w przeciwnym przypadku jeżeli (drugi Iif) MyCUPerc jest mniejsze (LT) od 0.2 to
przyjmij wartość 0
w przeciwnym przypadku przyjmij wartość MyCU * ICRatio * 0.9
Wyrażenie zwracające dokładną wartość BS według algorytmu autorstwa dr
Ewy Pańkowskiej (uwaga: algorytm ten jest chroniony prawami autorskimi i nie może
być wykorzystywany bez zgody autorki):
Iif(
Or(
LT(MyFPU, 1.0),
GT(MyCUPerc, 0.8)
),
0.0,
Iif(
LT(MyCUPerc, 0.2),
MyFPU * ICRatio,
MyFPU * ICRatio * 1.1
)
)
Wyrażenie odpowiada algorytmowi:
Jeżeli (pierwszy Iif) którykolwiek z warunków (Or) jest spełniony:
MyFPU jest mniejsze (pierwszy LT) od 1.0 lub
MyCUPerc jest większe (GT) od 0.8 to
przyjmij wartość 0
w przeciwnym przypadku jeżeli (drugi Iif) MyCUPerc jest mniejsze (drugi LT) od
0.2 to
przyjmij wartość MyFPU * ICRatio
w przeciwnym przypadku przyjmij wartość MyFPU * ICRatio * 1.1
Wyrażenie zwracające czas podania BS (w godzinach) według algorytmu
autorstwa dr Ewy Pańkowskiej (uwaga: algorytm ten jest chroniony prawami
autorskimi i nie może być wykorzystywany bez zgody autorki):
Iif(
Or(
LT(MyFPU, 1.0),
GT(MyCUPerc, 0.8)
),
0.0,
Iif(LT(MyFPU, 2.0),
3.0,
18
Iif(LT(MyFPU, 3.0),
4.0,
Iif(LT(MyFPU, 4.0),
5.0,
8.0
)
)
)
)
Wyrażenie odpowiada algorytmowi:
Jeżeli (pierwszy Iif) którykolwiek z warunków (Or) jest spełniony:
MyFPU jest mniejsze (pierwszy LT) od 1.0 lub
MyCUPerc jest większe (GT) od 0.8 to
przyjmij wartość 0
w przeciwnym przypadku jeżeli (drugi Iif) MyFPU jest mniejszy (drugi LT) od 2.0
to
przyjmij wartość 3.0
w przeciwnym przypadku jeżeli (trzeci Iif) MyFPU jest mniejszy (trzeci LT)
od 3.0 to
przyjmij wartość 4.0
w przeciwnym przypadku jeżeli (czwarty Iif) MyFPU jest mniejszy
(czwarty LT) od 4.0 to
przyjmij wartość 5.0
w przeciwnym przypadku przyjmij wartość 8.0
19

Podobne dokumenty